diff options
author | lkoeller <lkoeller@FreeBSD.org> | 2003-01-20 03:07:23 +0800 |
---|---|---|
committer | lkoeller <lkoeller@FreeBSD.org> | 2003-01-20 03:07:23 +0800 |
commit | 4aaeffd2a612e82c04f31988390f97e880145d8d (patch) | |
tree | 3c1ecd001e67cc57d5ca468f31bae457c42b115c | |
parent | b3749e578e4bfcc119942ab9696954c2255b5ad5 (diff) | |
download | freebsd-ports-gnome-4aaeffd2a612e82c04f31988390f97e880145d8d.tar.gz freebsd-ports-gnome-4aaeffd2a612e82c04f31988390f97e880145d8d.tar.zst freebsd-ports-gnome-4aaeffd2a612e82c04f31988390f97e880145d8d.zip |
o) Patch reverse compface part to faces 1.6.1 port
- Missing uncompface -X option used in exmh
- Missing filter programs to generate ikon file
- I will try communicate the necessary add ons to the
new developers of faces.
-rw-r--r-- | mail/faces/Makefile | 9 | ||||
-rw-r--r-- | mail/faces/files/Makefile.compface | 12 | ||||
-rw-r--r-- | mail/faces/files/ikon2xbm | 38 | ||||
-rw-r--r-- | mail/faces/files/patch-ca | 469 | ||||
-rw-r--r-- | mail/faces/files/patch-cb | 315 | ||||
-rw-r--r-- | mail/faces/files/patch-cc | 39 | ||||
-rw-r--r-- | mail/faces/files/patch-cd | 62 | ||||
-rw-r--r-- | mail/faces/files/patch-ce | 328 | ||||
-rw-r--r-- | mail/faces/files/patch-cf | 336 | ||||
-rw-r--r-- | mail/faces/files/patch-cg | 25 | ||||
-rw-r--r-- | mail/faces/files/patch-ch | 336 | ||||
-rw-r--r-- | mail/faces/files/patch-ci | 208 | ||||
-rw-r--r-- | mail/faces/files/patch-cj | 319 | ||||
-rw-r--r-- | mail/faces/files/patch-ck | 62 | ||||
-rw-r--r-- | mail/faces/files/xbm2ikon | 27 | ||||
-rw-r--r-- | mail/faces/files/xbmcut48 | 16 | ||||
-rw-r--r-- | mail/faces/files/xbmsize48 | 52 | ||||
-rw-r--r-- | mail/faces/pkg-message | 26 | ||||
-rw-r--r-- | mail/faces/pkg-plist | 4 |
19 files changed, 2675 insertions, 8 deletions
diff --git a/mail/faces/Makefile b/mail/faces/Makefile index b7950c47c92e..acda531a9996 100644 --- a/mail/faces/Makefile +++ b/mail/faces/Makefile @@ -8,7 +8,7 @@ PORTNAME= faces PORTVERSION= 1.7.7 -#PORTREVISION= 1 +PORTREVISION= 1 CATEGORIES= mail MASTER_SITES= ftp://ftp.cs.indiana.edu/pub/faces/faces/ @@ -101,7 +101,12 @@ post-install: .if !defined(NOPORTDOCS) if [ ! -e ${PREFIX}/share/doc/${PORTNAME} ]; then \ ${MKDIR} ${PREFIX}/share/doc/${PORTNAME}; \ - ${CP} -f ${WRKSRC}/README ${PREFIX}/share/doc/${PORTNAME}; + ${CP} -f ${WRKSRC}/README ${PREFIX}/share/doc/${PORTNAME}; \ + fi .endif + ${INSTALL_SCRIPT} ${FILESDIR}/ikon2xbm ${PREFIX}/bin + ${INSTALL_SCRIPT} ${FILESDIR}/xbm2ikon ${PREFIX}/bin + ${INSTALL_SCRIPT} ${FILESDIR}/xbmcut48 ${PREFIX}/bin + ${INSTALL_SCRIPT} ${FILESDIR}/xbmsize48 ${PREFIX}/bin .include <bsd.port.mk> diff --git a/mail/faces/files/Makefile.compface b/mail/faces/files/Makefile.compface index 684a4cf7fc1e..272a04daa7fd 100644 --- a/mail/faces/files/Makefile.compface +++ b/mail/faces/files/Makefile.compface @@ -6,7 +6,7 @@ # Written 11th November 1989. # # Permission is given to distribute these sources, as long as the -# copyright messages are not removed, and no monies are exchanged. +# copyright messages are not removed, and no monies are exchanged. # # No responsibility is taken for any errors on inaccuracies inherent # either to the comments or the code of this program, but if reported @@ -22,10 +22,10 @@ # BINDIR, LIBDIR, INCDIR and MANDIR are expected to be overridden by the # calling Makefile -BINDIR = ${PREFIX}/bin -LIBDIR = ${PREFIX}/lib -INCDIR = ${PREFIX}/include -MANDIR = ${PREFIX}/man +BINDIR = /usr/local/bin +LIBDIR = /usr/local/lib +INCDIR = /usr/local/include +MANDIR = /usr/local/man NAME = compface UNNAME = uncompface @@ -55,7 +55,7 @@ CC ?= cc CDEFS = $(SYSV) CFLAGS += $(CDEFS) $(CCOMP) -all: lib$(NAME).a $(SOLIB) $(NAME) $(UNNAME) +all: lib$(NAME).a $(SOLIB) $(NAME) $(UNNAME) $(NAME) : cmain.o compface.o $(CC) $(CFLAGS) -o $(NAME) cmain.o compface.o -L./ -lcompface diff --git a/mail/faces/files/ikon2xbm b/mail/faces/files/ikon2xbm new file mode 100644 index 000000000000..d1605d13506c --- /dev/null +++ b/mail/faces/files/ikon2xbm @@ -0,0 +1,38 @@ +#!/bin/sh +# +# @(#)ikon2xbm 1.4 91/05/06 +# +# Copyright (c) Steve Kinzler - March 1991. +# +# Permission is given to distribute these sources, as long as the +# copyright messages are not removed, and no monies are exchanged. +# +# No responsibility is taken for any errors on inaccuracies inherent +# either to the comments or the code of this program, but if reported +# to me, then an attempt will be made to fix them. + +PATH=$PATH:/usr/bin/X11; export PATH + +# ikon2xbm - convert a square Blit ikon bitmap to an X11 bitmap +# stdin/stdout filter +# requires some bitmap filters from the pbmplus package +# assumes 16 valid data bits per item, 1 depth bit, and width = height +# kludge by kinzler@cs.indiana.edu + +tmp=/tmp/ikon2xbm$$ +trap "rm -f $tmp; exit" 0 1 2 13 15 + +sed -e 's/\(0x....\),\(0x....\),\(0x....\),/\1\ +\2\ +\3/' > $tmp + +dim=`wc -l < $tmp | awk '{ print 4 * sqrt(144) }'` + +pr -l1 -t -8 -s, < $tmp | +(cat << EOF +/* Format_version=1, Width=$dim, Height=$dim, Depth=1, Valid_bits_per_item=16 + */ +EOF +sed -e 's/^/ /' -e 's/$/,/' -e '$s/,$//') | +icontopbm | +pbmtoxbm diff --git a/mail/faces/files/patch-ca b/mail/faces/files/patch-ca new file mode 100644 index 000000000000..6a8663b0a958 --- /dev/null +++ b/mail/faces/files/patch-ca @@ -0,0 +1,469 @@ +*** compface/arith.c Tue Jan 15 23:58:46 2002 +--- /home/lkoeller/tmp/ports/mail/faces/work/faces/compface/arith.c Thu Oct 24 03:28:07 1991 +*************** +*** 1,10 **** +- + /* +- * $Header: /cvs/faces/faces/compface/arith.c,v 1.2 2002/01/15 22:58:46 devface Exp $ +- * + * Compface - 48x48x1 image compression and decompression + * +! * Copyright (c) 1990-2002 James Ashton - Sydney University + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +--- 1,9 ---- + /* + * Compface - 48x48x1 image compression and decompression + * +! * Copyright (c) James Ashton - Sydney University - June 1990. +! * +! * Written 11th November 1989. + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +*************** +*** 17,33 **** + #include "compface.h" + + void +! RevPush(Prob *p) + { +! if (NumProbs >= PIXELS * 2 - 1) { + longjmp(comp_env, ERR_INTERNAL); +- } + ProbBuf[NumProbs++] = p; + } + +- + void +! BigPush(Prob *p) + { + static WORD tmp; + +--- 16,32 ---- + #include "compface.h" + + void +! RevPush(p) +! Prob *p; + { +! if (NumProbs >= PIXELS * 2 - 1) + longjmp(comp_env, ERR_INTERNAL); + ProbBuf[NumProbs++] = p; + } + + void +! BigPush(p) +! Prob *p; + { + static WORD tmp; + +*************** +*** 36,76 **** + BigAdd(tmp + p->p_offset); + } + +- + int +! BigPop(Prob *p) + { + static WORD tmp; +! int i; + + BigDiv(0, &tmp); + i = 0; +! while ((tmp < p->p_offset) || (tmp >= p->p_range + p->p_offset)) { + p++; + i++; + } + BigMul(p->p_range); + BigAdd(tmp - p->p_offset); +! return(i); + } + +- + #ifdef DEBUG + void +! BigPrint() /* Print a BigInt in HexaDecimal. */ + { +! int i, c, count; +! WORD *w; + + count = 0; + w = B.b_word + (i = B.b_words); +! while (i--) { + w--; + c = *((*w >> 4) + HexDigits); + putc(c, stderr); + c = *((*w & 0xf) + HexDigits); + putc(c, stderr); +! if (++count >= 36) { + putc('\\', stderr); + putc('\n', stderr); + count = 0; +--- 35,79 ---- + BigAdd(tmp + p->p_offset); + } + + int +! BigPop(p) +! register Prob *p; + { + static WORD tmp; +! register int i; + + BigDiv(0, &tmp); + i = 0; +! while ((tmp < p->p_offset) || (tmp >= p->p_range + p->p_offset)) +! { + p++; + i++; + } + BigMul(p->p_range); + BigAdd(tmp - p->p_offset); +! return i; + } + + #ifdef DEBUG ++ /* Print a BigInt in HexaDecimal ++ */ + void +! BigPrint() + { +! register int i, c, count; +! register WORD *w; + + count = 0; + w = B.b_word + (i = B.b_words); +! while (i--) +! { + w--; + c = *((*w >> 4) + HexDigits); + putc(c, stderr); + c = *((*w & 0xf) + HexDigits); + putc(c, stderr); +! if (++count >= 36) +! { + putc('\\', stderr); + putc('\n', stderr); + count = 0; +*************** +*** 78,110 **** + } + putc('\n', stderr); + } +! #endif /*DEBUG*/ +! + + /* Divide B by a storing the result in B and the remainder in the word +! * pointer to by r. + */ +- + void +! BigDiv(WORD a, WORD *r) + { +! int i; +! WORD *w; +! COMP c, d; + + a &= WORDMASK; +! if ((a == 1) || (B.b_words == 0)) { + *r = 0; + return; + } +! +! /* Treat this as a == WORDCARRY and just shift everything right a WORD */ +! +! if (a == 0) { + i = --B.b_words; + w = B.b_word; + *r = *w; +! while (i--) { + *w = *(w + 1); + w++; + } +--- 81,112 ---- + } + putc('\n', stderr); + } +! #endif + + /* Divide B by a storing the result in B and the remainder in the word +! * pointer to by r + */ + void +! BigDiv(a, r) +! register WORD a, *r; + { +! register int i; +! register WORD *w; +! register COMP c, d; + + a &= WORDMASK; +! if ((a == 1) || (B.b_words == 0)) +! { + *r = 0; + return; + } +! if (a == 0) /* treat this as a == WORDCARRY */ +! { /* and just shift everything right a WORD */ + i = --B.b_words; + w = B.b_word; + *r = *w; +! while (i--) +! { + *w = *(w + 1); + w++; + } +*************** +*** 113,154 **** + } + w = B.b_word + (i = B.b_words); + c = 0; +! while (i--) { + c <<= BITSPERWORD; +! c += (COMP) *--w; +! d = c / (COMP) a; +! c = c % (COMP) a; +! *w = (WORD) (d & WORDMASK); + } + *r = c; +! if (B.b_word[B.b_words - 1] == 0) { + B.b_words--; +- } + } + +! +! /* Multiply a by B storing the result in B. */ +! + void +! BigMul(WORD a) + { +! int i; +! WORD *w; +! COMP c; + + a &= WORDMASK; +! if ((a == 1) || (B.b_words == 0)) { + return; +! } +! +! /* Treat this as a == WORDCARRY and just shift everything left a WORD */ +! +! if (a == 0) { +! if ((i = B.b_words++) >= MAXWORDS - 1) { + longjmp(comp_env, ERR_INTERNAL); +- } + w = B.b_word + i; +! while (i--) { + *w = *(w - 1); + w--; + } +--- 115,153 ---- + } + w = B.b_word + (i = B.b_words); + c = 0; +! while (i--) +! { + c <<= BITSPERWORD; +! c += (COMP)*--w; +! d = c / (COMP)a; +! c = c % (COMP)a; +! *w = (WORD)(d & WORDMASK); + } + *r = c; +! if (B.b_word[B.b_words - 1] == 0) + B.b_words--; + } + +! /* Multiply a by B storing the result in B +! */ + void +! BigMul(a) +! register WORD a; + { +! register int i; +! register WORD *w; +! register COMP c; + + a &= WORDMASK; +! if ((a == 1) || (B.b_words == 0)) + return; +! if (a == 0) /* treat this as a == WORDCARRY */ +! { /* and just shift everything left a WORD */ +! if ((i = B.b_words++) >= MAXWORDS - 1) + longjmp(comp_env, ERR_INTERNAL); + w = B.b_word + i; +! while (i--) +! { + *w = *(w - 1); + w--; + } +*************** +*** 158,239 **** + i = B.b_words; + w = B.b_word; + c = 0; +! while (i--) { + c += (COMP)*w * (COMP)a; + *(w++) = (WORD)(c & WORDMASK); + c >>= BITSPERWORD; + } +! if (c) { +! if (B.b_words++ >= MAXWORDS) { + longjmp(comp_env, ERR_INTERNAL); +- } + *w = (COMP)(c & WORDMASK); + } + } + +! +! /* Subtract a from B storing the result in B. */ +! + void +! BigSub(WORD a) + { +! int i; +! WORD *w; +! COMP c; + + a &= WORDMASK; +! if (a == 0) { + return; +- } + i = 1; + w = B.b_word; +! c = (COMP) *w - (COMP) a; +! *w = (WORD) (c & WORDMASK); +! while (c & WORDCARRY) { +! if (i >= B.b_words) { + longjmp(comp_env, ERR_INTERNAL); +! } +! c = (COMP) *++w - 1; +! *w = (WORD) (c & WORDMASK); + i++; + } +! if ((i == B.b_words) && (*w == 0) && (i > 0)) { + B.b_words--; +- } + } + +! +! /* Add to a to B storing the result in B. */ +! + void +! BigAdd(WORD a) + { +! int i; +! WORD *w; +! COMP c; + + a &= WORDMASK; +! if (a == 0) { + return; +- } + i = 0; + w = B.b_word; + c = a; +! while ((i < B.b_words) && c) { +! c += (COMP) *w; +! *w++ = (WORD) (c & WORDMASK); + c >>= BITSPERWORD; + i++; + } +! if ((i == B.b_words) && c) { +! if (B.b_words++ >= MAXWORDS) { + longjmp(comp_env, ERR_INTERNAL); +! } +! *w = (COMP) (c & WORDMASK); + } + } + +- + void + BigClear() + { +--- 157,238 ---- + i = B.b_words; + w = B.b_word; + c = 0; +! while (i--) +! { + c += (COMP)*w * (COMP)a; + *(w++) = (WORD)(c & WORDMASK); + c >>= BITSPERWORD; + } +! if (c) +! { +! if (B.b_words++ >= MAXWORDS) + longjmp(comp_env, ERR_INTERNAL); + *w = (COMP)(c & WORDMASK); + } + } + +! #if 0 +! /* Subtract a from B storing the result in B +! */ + void +! BigSub(a) +! WORD a; + { +! register int i; +! register WORD *w; +! register COMP c; + + a &= WORDMASK; +! if (a == 0) + return; + i = 1; + w = B.b_word; +! c = (COMP)*w - (COMP)a; +! *w = (WORD)(c & WORDMASK); +! while (c & WORDCARRY) +! { +! if (i >= B.b_words) + longjmp(comp_env, ERR_INTERNAL); +! c = (COMP)*++w - 1; +! *w = (WORD)(c & WORDMASK); + i++; + } +! if ((i == B.b_words) && (*w == 0) && (i > 0)) + B.b_words--; + } ++ #endif + +! /* Add to a to B storing the result in B +! */ + void +! BigAdd(a) +! WORD a; + { +! register int i; +! register WORD *w; +! register COMP c; + + a &= WORDMASK; +! if (a == 0) + return; + i = 0; + w = B.b_word; + c = a; +! while ((i < B.b_words) && c) +! { +! c += (COMP)*w; +! *w++ = (WORD)(c & WORDMASK); + c >>= BITSPERWORD; + i++; + } +! if ((i == B.b_words) && c) +! { +! if (B.b_words++ >= MAXWORDS) + longjmp(comp_env, ERR_INTERNAL); +! *w = (COMP)(c & WORDMASK); + } + } + + void + BigClear() + { diff --git a/mail/faces/files/patch-cb b/mail/faces/files/patch-cb new file mode 100644 index 000000000000..02d630381540 --- /dev/null +++ b/mail/faces/files/patch-cb @@ -0,0 +1,315 @@ +*** compface/cmain.c Thu Feb 21 16:42:54 2002 +--- /home/lkoeller/tmp/ports/mail/faces/work/faces/compface/cmain.c Thu Oct 24 03:28:07 1991 +*************** +*** 1,9 **** + +! /* $Header: /cvs/faces/faces/compface/cmain.c,v 1.3 2002/02/21 15:42:54 devface Exp $ + * + * Compface - 48x48x1 image compression. + * +! * Copyright (c) 1990-2002 James Ashton - Sydney University + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +--- 1,11 ---- + +! /* @(#)cmain.c 1.7 91/10/24 + * + * Compface - 48x48x1 image compression. + * +! * Copyright (c) James Ashton - Sydney University - June 1990. +! * +! * Written 11th November 1889. + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +*************** +*** 13,89 **** + * to me, then an attempt will be made to fix them. + */ + +- #include <stdlib.h> +- #include <unistd.h> + #include <fcntl.h> + #include "compface.h" + +! #define STRCAT (void) strcat +! #define STRCPY (void) strcpy +! #define WRITE (void) write +! +! /* The buffer is longer than needed to handle sparse input formats */ +! + #define FACEBUFLEN 2048 + char fbuf[FACEBUFLEN]; + + /* IO file descriptors and their names */ +- + int infile = 0; + char *inname = "<stdin>"; + int outfile = 1; + char *outname = "<stdout>"; + +! char *cmdname; /* Basename of executable */ + +! /* Error handling definitions follow */ + + extern int errno, sys_nerr; + extern char *sys_errlist[]; + + #define ERR ((errno < sys_nerr) ? sys_errlist[errno] : "") +! #define INITERR(s) { \ +! STRCPY(fbuf, cmdname); \ +! STRCAT(fbuf, ": "); \ +! STRCAT(fbuf, (s));\ +! } +! #define ADDERR(s) STRCAT(fbuf, (s)); +! #define ERROR { \ +! STRCAT(fbuf, "\n"); \ +! WRITE(2, fbuf, strlen(fbuf)); \ +! exit(1); \ +! } +! #define INITWARN(s) { \ +! STRCPY(fbuf, cmdname); \ +! STRCAT(fbuf, ": (warning) "); \ +! STRCAT(fbuf, (s)); \ +! } +! #define ADDWARN(s) STRCAT(fbuf, (s)); +! #define WARN { \ +! STRCAT(fbuf, "\n"); \ +! WRITE(2, fbuf, strlen(fbuf)); \ +! } + + int +! main(int argc, char *argv[]) + { + cmdname = *argv; +! while (**argv) { +! if (*((*argv)++) == '/') { +! cmdname = *argv; /* Find the command's basename */ +! } +! } + +! if (argc > 3) { + INITERR("usage: ") + ADDERR(cmdname) + ADDERR(" [infile [outfile]]") + ERROR + } + +! if ((argc > 1) && strcmp(*++argv, "-")) { + inname = *argv; +! if ((infile = open(inname, O_RDONLY)) == -1) { + INITERR(inname) + ADDERR(": ") + ADDERR(ERR) +--- 15,78 ---- + * to me, then an attempt will be made to fix them. + */ + + #include <fcntl.h> + #include "compface.h" + +! /* the buffer is longer than needed to handle sparse input formats */ + #define FACEBUFLEN 2048 + char fbuf[FACEBUFLEN]; + + /* IO file descriptors and their names */ + int infile = 0; + char *inname = "<stdin>"; + int outfile = 1; + char *outname = "<stdout>"; + +! /* basename of executable */ +! char *cmdname; + +! /* error handling definitions follow */ + + extern int errno, sys_nerr; + extern char *sys_errlist[]; + ++ extern void exit P((int)) ; ++ + #define ERR ((errno < sys_nerr) ? sys_errlist[errno] : "") +! #define INITERR(s) {(void)strcpy(fbuf, cmdname); (void)strcat(fbuf, ": ");\ +! (void)strcat(fbuf, (s));} +! #define ADDERR(s) (void)strcat(fbuf, (s)); +! #define ERROR {(void)strcat(fbuf, "\n");\ +! (void)write(2, fbuf, strlen(fbuf)); exit(1);} +! #define INITWARN(s) {(void)strcpy(fbuf, cmdname);\ +! (void)strcat(fbuf, ": (warning) ");\ +! (void)strcat(fbuf, (s));} +! #define ADDWARN(s) (void)strcat(fbuf, (s)); +! #define WARN {(void)strcat(fbuf, "\n"); (void)write(2, fbuf, strlen(fbuf));} + + int +! main(argc, argv) +! int argc; +! char *argv[]; + { + cmdname = *argv; +! while (**argv) +! if (*((*argv)++) == '/') +! cmdname = *argv; /* find the command's basename */ + +! if (argc > 3) +! { + INITERR("usage: ") + ADDERR(cmdname) + ADDERR(" [infile [outfile]]") + ERROR + } + +! if ((argc > 1) && strcmp(*++argv, "-")) +! { + inname = *argv; +! if ((infile = open(inname, O_RDONLY)) == -1) +! { + INITERR(inname) + ADDERR(": ") + ADDERR(ERR) +*************** +*** 91,100 **** + } + } + +! if (argc > 2) { + outname = *++argv; +! if ((outfile = open(outname, O_WRONLY | O_CREAT | +! O_TRUNC, 0644)) == -1) { + INITERR(outname) + ADDERR(": ") + ADDERR(ERR) +--- 80,90 ---- + } + } + +! if (argc > 2) +! { + outname = *++argv; +! if ((outfile = open(outname, O_WRONLY | O_CREAT | O_TRUNC, 0644)) == -1) +! { + INITERR(outname) + ADDERR(": ") + ADDERR(ERR) +*************** +*** 103,109 **** + } + + (void) ReadBuf(); +! switch (compface(fbuf)) { + case -2 : INITERR("internal error") + ERROR + case -1 : INITERR(inname) +--- 93,100 ---- + } + + (void) ReadBuf(); +! switch (compface(fbuf)) +! { + case -2 : INITERR("internal error") + ERROR + case -1 : INITERR(inname) +*************** +*** 123,135 **** + int + WriteBuf() + { +! char *s, *t; +! int len; + + s = fbuf; + t = s + strlen(s); +! while (s < t) { +! if ((len = write(outfile, s, t - s)) == -1) { + INITERR(outname) + ADDERR(": ") + ADDERR(ERR) +--- 114,128 ---- + int + WriteBuf() + { +! register char *s, *t; +! register int len; + + s = fbuf; + t = s + strlen(s); +! while (s < t) +! { +! if ((len = write(outfile, s, t - s)) == -1) +! { + INITERR(outname) + ADDERR(": ") + ADDERR(ERR) +*************** +*** 137,163 **** + } + s += len; + } +! return(0); + } + + + int + ReadBuf() + { +! int count, len; +! char *t; + + count = 0; + t = fbuf; +! while ((len = read(infile, t, FACEBUFLEN - count))) { +! if (len == -1) { + INITERR(inname) + ADDERR(": ") + ADDERR(ERR) + ERROR + } + t += len; +! if ((count += len) >= FACEBUFLEN) { + INITWARN(inname) + ADDWARN(" exceeds internal buffer size. Data may be lost") + WARN +--- 130,159 ---- + } + s += len; + } +! return 0; + } + + + int + ReadBuf() + { +! register int count, len; +! register char *t; + + count = 0; + t = fbuf; +! while (len = read(infile, t, FACEBUFLEN - count)) +! { +! if (len == -1) +! { + INITERR(inname) + ADDERR(": ") + ADDERR(ERR) + ERROR + } + t += len; +! if ((count += len) >= FACEBUFLEN) +! { + INITWARN(inname) + ADDWARN(" exceeds internal buffer size. Data may be lost") + WARN +*************** +*** 165,169 **** + } + } + *t = '\0'; +! return(count); + } +--- 161,165 ---- + } + } + *t = '\0'; +! return count; + } diff --git a/mail/faces/files/patch-cc b/mail/faces/files/patch-cc new file mode 100644 index 000000000000..a8a01b4c7514 --- /dev/null +++ b/mail/faces/files/patch-cc @@ -0,0 +1,39 @@ +*** compface/compface.1 Tue Jan 15 23:58:46 2002 +--- /home/lkoeller/tmp/ports/mail/faces/work/faces/compface/compface.1 Sun Jan 19 19:35:35 2003 +*************** +*** 1,4 **** +! .TH COMPFACE 1 "15 January 2002" + .SH NAME + compface, uncompface \- compress and expand 48x48x1 face image files + .SH SYNOPSIS +--- 1,4 ---- +! .TH COMPFACE 1 "25 January 1990" + .SH NAME + compface, uncompface \- compress and expand 48x48x1 face image files + .SH SYNOPSIS +*************** +*** 12,17 **** +--- 12,19 ---- + .LP + .B uncompface + [ ++ .B \-X ++ ] [ + .I infile + [ + .I outfile +*************** +*** 56,61 **** +--- 58,69 ---- + .I compface + averages less than 200 characters. + The average number of output lines is three. ++ .SH OPTIONS ++ .TP 12 ++ .B \-X ++ The same as ++ .I uncompface ++ | ikon2xbm. Usefull for exmh! + .SH DIAGNOSTICS + Exit status is normally 0. + Possible errors include IO errors when opening, reading or writing diff --git a/mail/faces/files/patch-cd b/mail/faces/files/patch-cd new file mode 100644 index 000000000000..4368a7991e88 --- /dev/null +++ b/mail/faces/files/patch-cd @@ -0,0 +1,62 @@ +*** compface/compface.c Thu Feb 21 16:42:54 2002 +--- /home/lkoeller/tmp/ports/mail/faces/work/faces/compface/compface.c Wed Jun 19 08:29:12 1991 +*************** +*** 1,10 **** +- + /* +- * $Header: /cvs/faces/faces/compface/compface.c,v 1.3 2002/02/21 15:42:54 devface Exp $ +- * + * Compface - 48x48x1 image compression and decompression + * +! * Copyright (c) 1990-2002 James Ashton - Sydney University + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +--- 1,9 ---- + /* + * Compface - 48x48x1 image compression and decompression + * +! * Copyright (c) James Ashton - Sydney University - June 1990. +! * +! * Written 11th November 1989. + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +*************** +*** 14,29 **** + * to me, then an attempt will be made to fix them. + */ + + #include "compface.h" +- #include "vars.h" + + int +! compface(char *fbuf) + { +! if (!(status = setjmp(comp_env))) { + ReadFace(fbuf); + GenFace(); + CompAll(fbuf); + } +! return(status); + } +--- 13,31 ---- + * to me, then an attempt will be made to fix them. + */ + ++ #define MAIN ++ + #include "compface.h" + + int +! compface(fbuf) +! char *fbuf; + { +! if (!(status = setjmp(comp_env))) +! { + ReadFace(fbuf); + GenFace(); + CompAll(fbuf); + } +! return status; + } diff --git a/mail/faces/files/patch-ce b/mail/faces/files/patch-ce new file mode 100644 index 000000000000..ae2d4d5c9f92 --- /dev/null +++ b/mail/faces/files/patch-ce @@ -0,0 +1,328 @@ +*** compface/compface.h Thu Feb 21 16:42:54 2002 +--- /home/lkoeller/tmp/ports/mail/faces/work/faces/compface/compface.h Thu Sep 5 07:24:42 1991 +*************** +*** 1,10 **** +- + /* +- * $Header: /cvs/faces/faces/compface/compface.h,v 1.3 2002/02/21 15:42:54 devface Exp $ +- * + * Compface - 48x48x1 image compression and decompression + * +! * Copyright (c) 1990-2002 James Ashton - Sydney University + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +--- 1,9 ---- + /* + * Compface - 48x48x1 image compression and decompression + * +! * Copyright (c) James Ashton - Sydney University - June 1990. +! * +! * Written 11th November 1989. + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +*************** +*** 14,45 **** + * to me, then an attempt will be made to fix them. + */ + + #include <string.h> + #include <fcntl.h> + #include <setjmp.h> + +! /* Need to know how many bits per hexadecimal digit for io */ + #define BITSPERDIG 4 +! extern char HexDigits[]; + +! /* Define the face size - 48x48x1 */ + #define WIDTH 48 + #define HEIGHT WIDTH + +! /* Total number of pixels and digits */ + #define PIXELS (WIDTH * HEIGHT) + #define DIGITS (PIXELS / BITSPERDIG) + +! extern char F[PIXELS]; + +! /* Output formatting word lengths and line lengths */ + #define DIGSPERWORD 4 + #define WORDSPERLINE (WIDTH / DIGSPERWORD / BITSPERDIG) + +! /* Compressed output uses the full range of printable characters. + * in ascii these are in a contiguous block so we just need to know +! * the first and last. The total number of printables is needed too. +! */ + #define FIRSTPRINT '!' + #define LASTPRINT '~' + #define NUMPRINTS (LASTPRINT - FIRSTPRINT + 1) +--- 13,64 ---- + * to me, then an attempt will be made to fix them. + */ + ++ #if defined(SYSV32) || defined(hpux) + #include <string.h> ++ #else ++ #include <strings.h> ++ #endif /* SYSV32 || hpux */ + #include <fcntl.h> + #include <setjmp.h> + +! /* For all function declarations, if ANSI then use a prototype. */ +! +! #if defined(__STDC__) +! #define P(args) args +! #else /* ! __STDC__ */ +! #define P(args) () +! #endif /* STDC */ +! +! #ifdef MAIN +! #define EXTERN +! #define INIT(x) = x +! #else +! #define EXTERN extern +! #define INIT(x) +! #endif +! +! /* need to know how many bits per hexadecimal digit for io */ + #define BITSPERDIG 4 +! EXTERN char HexDigits[] INIT("0123456789ABCDEF"); + +! /* define the face size - 48x48x1 */ + #define WIDTH 48 + #define HEIGHT WIDTH + +! /* total number of pixels and digits */ + #define PIXELS (WIDTH * HEIGHT) + #define DIGITS (PIXELS / BITSPERDIG) + +! /* internal face representation - 1 char per pixel is faster */ +! EXTERN char F[PIXELS]; + +! /* output formatting word lengths and line lengths */ + #define DIGSPERWORD 4 + #define WORDSPERLINE (WIDTH / DIGSPERWORD / BITSPERDIG) + +! /* compressed output uses the full range of printable characters. + * in ascii these are in a contiguous block so we just need to know +! * the first and last. The total number of printables is needed too */ + #define FIRSTPRINT '!' + #define LASTPRINT '~' + #define NUMPRINTS (LASTPRINT - FIRSTPRINT + 1) +*************** +*** 49,56 **** + + /* Portable, very large unsigned integer arithmetic is needed. + * Implementation uses arrays of WORDs. COMPs must have at least +! * twice as many bits as WORDs to handle intermediate results. +! */ + #define WORD unsigned char + #define COMP unsigned long + #define BITSPERWORD 8 +--- 68,74 ---- + + /* Portable, very large unsigned integer arithmetic is needed. + * Implementation uses arrays of WORDs. COMPs must have at least +! * twice as many bits as WORDs to handle intermediate results */ + #define WORD unsigned char + #define COMP unsigned long + #define BITSPERWORD 8 +*************** +*** 64,76 **** + WORD b_word[MAXWORDS]; + } BigInt; + +! extern BigInt B; + + /* This is the guess the next pixel table. Normally there are 12 neighbour + * pixels used to give 1<<12 cases but in the upper left corner lesser +! * numbers of neighbours are available, leading to 6231 different guesses. +! */ +! typedef struct guesses { + char g_00[1<<12]; + char g_01[1<<7]; + char g_02[1<<2]; +--- 82,94 ---- + WORD b_word[MAXWORDS]; + } BigInt; + +! EXTERN BigInt B; + + /* This is the guess the next pixel table. Normally there are 12 neighbour + * pixels used to give 1<<12 cases but in the upper left corner lesser +! * numbers of neighbours are available, leading to 6231 different guesses */ +! typedef struct guesses +! { + char g_00[1<<12]; + char g_01[1<<7]; + char g_02[1<<2]; +*************** +*** 88,155 **** + char g_42[1<<2]; + } Guesses; + +! extern Guesses G; + + /* Data of varying probabilities are encoded by a value in the range 0 - 255. + * The probability of the data determines the range of possible encodings. +! * Offset gives the first possible encoding of the range. +! */ +! typedef struct prob { + WORD p_range; + WORD p_offset; + } Prob; + +! extern Prob *ProbBuf[PIXELS * 2]; +! extern int NumProbs; + + /* Each face is encoded using 9 octrees of 16x16 each. Each level of the + * trees has varying probabilities of being white, grey or black. +! * The table below is based on sampling many faces. +! */ + + #define BLACK 0 + #define GREY 1 + #define WHITE 2 + +! extern Prob levels[4][3]; +! extern Prob freqs[16]; + + #define ERR_OK 0 /* successful completion */ + #define ERR_EXCESS 1 /* completed OK but some input was ignored */ + #define ERR_INSUFF -1 /* insufficient input. Bad face format? */ + #define ERR_INTERNAL -2 /* Arithmetic overflow or buffer overflow */ + +! extern int status; + +! extern jmp_buf comp_env; + +! int AllBlack(char *, int, int); +! int AllWhite(char *, int, int); +! int BigPop(Prob *); +! int compface(char *); +! int main(int, char *[]); +! int ReadBuf(); +! int Same(char *, int, int); +! int uncompface(char *); +! int WriteBuf(); +! +! void BigAdd(WORD); +! void BigClear(); +! void BigDiv(WORD, WORD *); +! void BigMul(WORD); +! void BigPrint(); +! void BigPush(Prob *); +! void BigRead(char *); +! void BigSub(WORD); +! void BigWrite(char *); +! void CompAll(char *); +! void Compress(char *, int, int, int); +! void GenFace(); +! void PopGreys(char *, int, int); +! void PushGreys(char *, int, int); +! void ReadFace(char *); +! void RevPush(Prob *); +! void UnCompAll(char *); +! void UnCompress(char *, int, int, int); +! void UnGenFace(); +! void WriteFace(char *); +--- 106,204 ---- + char g_42[1<<2]; + } Guesses; + +! /* data.h was established by sampling over 1000 faces and icons */ +! EXTERN Guesses G +! #ifdef MAIN +! = +! #include "data.h" +! #endif +! ; + + /* Data of varying probabilities are encoded by a value in the range 0 - 255. + * The probability of the data determines the range of possible encodings. +! * Offset gives the first possible encoding of the range */ +! typedef struct prob +! { + WORD p_range; + WORD p_offset; + } Prob; + +! /* A stack of probability values */ +! EXTERN Prob *ProbBuf[PIXELS * 2]; +! EXTERN int NumProbs INIT(0); + + /* Each face is encoded using 9 octrees of 16x16 each. Each level of the + * trees has varying probabilities of being white, grey or black. +! * The table below is based on sampling many faces */ + + #define BLACK 0 + #define GREY 1 + #define WHITE 2 + +! EXTERN Prob levels[4][3] +! #ifdef MAIN +! = +! { +! {{1, 255}, {251, 0}, {4, 251}}, /* Top of tree almost always grey */ +! {{1, 255}, {200, 0}, {55, 200}}, +! {{33, 223}, {159, 0}, {64, 159}}, +! {{131, 0}, {0, 0}, {125, 131}} /* Grey disallowed at bottom */ +! } +! #endif +! ; +! +! /* At the bottom of the octree 2x2 elements are considered black if any +! * pixel is black. The probabilities below give the distribution of the +! * 16 possible 2x2 patterns. All white is not really a possibility and +! * has a probability range of zero. Again, experimentally derived data */ +! EXTERN Prob freqs[16] +! #ifdef MAIN +! = +! { +! {0, 0}, {38, 0}, {38, 38}, {13, 152}, +! {38, 76}, {13, 165}, {13, 178}, {6, 230}, +! {38, 114}, {13, 191}, {13, 204}, {6, 236}, +! {13, 217}, {6, 242}, {5, 248}, {3, 253} +! } +! #endif +! ; + + #define ERR_OK 0 /* successful completion */ + #define ERR_EXCESS 1 /* completed OK but some input was ignored */ + #define ERR_INSUFF -1 /* insufficient input. Bad face format? */ + #define ERR_INTERNAL -2 /* Arithmetic overflow or buffer overflow */ + +! EXTERN int status; + +! EXTERN jmp_buf comp_env; + +! int AllBlack P((char *, int, int)) ; +! int AllWhite P((char *, int, int)) ; +! int BigPop P((Prob *)) ; +! int compface P((char *)) ; +! int main P((int, char *[])) ; +! int ReadBuf P(()) ; +! int Same P((char *, int, int)) ; +! int uncompface P((char *)) ; +! int WriteBuf P(()) ; +! +! void BigAdd P((unsigned char)) ; +! void BigClear P(()) ; +! void BigDiv P((unsigned char, unsigned char *)) ; +! void BigMul P((unsigned char)) ; +! void BigPrint P(()) ; +! void BigPush P((Prob *)) ; +! void BigRead P((char *)) ; +! void BigSub P((unsigned int)) ; +! void BigWrite P((char *)) ; +! void CompAll P((char *)) ; +! void Compress P((char *, int, int, int)) ; +! void GenFace P(()) ; +! void PopGreys P((char *, int, int)) ; +! void PushGreys P((char *, int, int)) ; +! void ReadFace P((char *)) ; +! void RevPush P((Prob *)) ; +! void UnCompAll P((char *)) ; +! void UnCompress P((char *, int, int, int)) ; +! void UnGenFace P(()) ; +! void WriteFace P((char *)) ; diff --git a/mail/faces/files/patch-cf b/mail/faces/files/patch-cf new file mode 100644 index 000000000000..4abf1988e3d7 --- /dev/null +++ b/mail/faces/files/patch-cf @@ -0,0 +1,336 @@ +*** compface/compress.c Tue Jan 15 23:58:46 2002 +--- /home/lkoeller/tmp/ports/mail/faces/work/faces/compface/compress.c Wed Jun 19 08:29:13 1991 +*************** +*** 1,10 **** +- + /* +- * $Header: /cvs/faces/faces/compface/compress.c,v 1.2 2002/01/15 22:58:46 devface Exp $ +- * + * Compface - 48x48x1 image compression and decompression + * +! * Copyright (c) 1990-2002 James Ashton - Sydney University + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +--- 1,9 ---- + /* + * Compface - 48x48x1 image compression and decompression + * +! * Copyright (c) James Ashton - Sydney University - June 1990. +! * +! * Written 11th November 1989. + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +*************** +*** 17,113 **** + #include "compface.h" + + int +! Same(char *f, int wid, int hei) + { +! char val, *row; +! int x; + + val = *f; +! while (hei--) { + row = f; + x = wid; +! while (x--) { +! if (*(row++) != val) { + return(0); +- } +- } + f += WIDTH; + } +! return(1); + } + +- + int +! AllBlack(char *f, int wid, int hei) + { +! if (wid > 3) { + wid /= 2; + hei /= 2; +! return(AllBlack(f, wid, hei) && AllBlack(f + wid, wid, hei) && + AllBlack(f + WIDTH * hei, wid, hei) && + AllBlack(f + WIDTH * hei + wid, wid, hei)); +- } else { +- return(*f || *(f + 1) || *(f + WIDTH) || *(f + WIDTH + 1)); + } + } + +- + int +! AllWhite(char *f, int wid, int hei) + { +! return((*f == 0) && Same(f, wid, hei)); + } + +- + void +! PopGreys(char *f, int wid, int hei) + { +! if (wid > 3) { + wid /= 2; + hei /= 2; + PopGreys(f, wid, hei); + PopGreys(f + wid, wid, hei); + PopGreys(f + WIDTH * hei, wid, hei); + PopGreys(f + WIDTH * hei + wid, wid, hei); +! } else { + wid = BigPop(freqs); +! if (wid & 1) { + *f = 1; +! } +! if (wid & 2) { + *(f + 1) = 1; +! } +! if (wid & 4) { + *(f + WIDTH) = 1; +! } +! if (wid & 8) { + *(f + WIDTH + 1) = 1; + } +- } + } + +- + void +! PushGreys(char *f, int wid, int hei) + { +! if (wid > 3) { + wid /= 2; + hei /= 2; + PushGreys(f, wid, hei); + PushGreys(f + wid, wid, hei); + PushGreys(f + WIDTH * hei, wid, hei); + PushGreys(f + WIDTH * hei + wid, wid, hei); +- } else { +- RevPush(freqs + *f + 2 * *(f + 1) + +- 4 * *(f + WIDTH) + 8 * *(f + WIDTH + 1)); + } + } + +- + void +! UnCompress(char *f, int wid, int hei, int lev) + { +! switch (BigPop(&levels[lev][0])) { + case WHITE : + return; + case BLACK : +--- 16,120 ---- + #include "compface.h" + + int +! Same(f, wid, hei) +! register char *f; +! register int wid, hei; + { +! register char val, *row; +! register int x; + + val = *f; +! while (hei--) +! { + row = f; + x = wid; +! while (x--) +! if (*(row++) != val) + return(0); + f += WIDTH; + } +! return 1; + } + + int +! AllBlack(f, wid, hei) +! char *f; +! int wid, hei; + { +! if (wid > 3) +! { + wid /= 2; + hei /= 2; +! return (AllBlack(f, wid, hei) && AllBlack(f + wid, wid, hei) && + AllBlack(f + WIDTH * hei, wid, hei) && + AllBlack(f + WIDTH * hei + wid, wid, hei)); + } ++ else ++ return (*f || *(f + 1) || *(f + WIDTH) || *(f + WIDTH + 1)); + } + + int +! AllWhite(f, wid, hei) +! char *f; +! int wid, hei; + { +! return ((*f == 0) && Same(f, wid, hei)); + } + + void +! PopGreys(f, wid, hei) +! char *f; +! int wid, hei; + { +! if (wid > 3) +! { + wid /= 2; + hei /= 2; + PopGreys(f, wid, hei); + PopGreys(f + wid, wid, hei); + PopGreys(f + WIDTH * hei, wid, hei); + PopGreys(f + WIDTH * hei + wid, wid, hei); +! } +! else +! { + wid = BigPop(freqs); +! if (wid & 1) + *f = 1; +! if (wid & 2) + *(f + 1) = 1; +! if (wid & 4) + *(f + WIDTH) = 1; +! if (wid & 8) + *(f + WIDTH + 1) = 1; + } + } + + void +! PushGreys(f, wid, hei) +! char *f; +! int wid, hei; + { +! if (wid > 3) +! { + wid /= 2; + hei /= 2; + PushGreys(f, wid, hei); + PushGreys(f + wid, wid, hei); + PushGreys(f + WIDTH * hei, wid, hei); + PushGreys(f + WIDTH * hei + wid, wid, hei); + } ++ else ++ RevPush(freqs + *f + 2 * *(f + 1) + 4 * *(f + WIDTH) + ++ 8 * *(f + WIDTH + 1)); + } + + void +! UnCompress(f, wid, hei, lev) +! register char *f; +! register int wid, hei, lev; + { +! switch (BigPop(&levels[lev][0])) +! { + case WHITE : + return; + case BLACK : +*************** +*** 125,139 **** + } + } + +- + void +! Compress(char *f, int wid, int hei, int lev) + { +! if (AllWhite(f, wid, hei)) { + RevPush(&levels[lev][WHITE]); + return; + } +! if (AllBlack(f, wid, hei)) { + RevPush(&levels[lev][BLACK]); + PushGreys(f, wid, hei); + return; +--- 132,149 ---- + } + } + + void +! Compress(f, wid, hei, lev) +! register char *f; +! register int wid, hei, lev; + { +! if (AllWhite(f, wid, hei)) +! { + RevPush(&levels[lev][WHITE]); + return; + } +! if (AllBlack(f, wid, hei)) +! { + RevPush(&levels[lev][BLACK]); + PushGreys(f, wid, hei); + return; +*************** +*** 149,164 **** + } + + void +! UnCompAll(char *fbuf) + { +! char *p; + + BigClear(); + BigRead(fbuf); + p = F; +! while (p < F + PIXELS) { + *(p++) = 0; +- } + UnCompress(F, 16, 16, 0); + UnCompress(F + 16, 16, 16, 0); + UnCompress(F + 32, 16, 16, 0); +--- 159,174 ---- + } + + void +! UnCompAll(fbuf) +! char *fbuf; + { +! register char *p; + + BigClear(); + BigRead(fbuf); + p = F; +! while (p < F + PIXELS) + *(p++) = 0; + UnCompress(F, 16, 16, 0); + UnCompress(F + 16, 16, 16, 0); + UnCompress(F + 32, 16, 16, 0); +*************** +*** 171,177 **** + } + + void +! CompAll(char *fbuf) + { + Compress(F, 16, 16, 0); + Compress(F + 16, 16, 16, 0); +--- 181,188 ---- + } + + void +! CompAll(fbuf) +! char *fbuf; + { + Compress(F, 16, 16, 0); + Compress(F + 16, 16, 16, 0); +*************** +*** 183,190 **** + Compress(F + WIDTH * 32 + 16, 16, 16, 0); + Compress(F + WIDTH * 32 + 32, 16, 16, 0); + BigClear(); +! while (NumProbs > 0) { + BigPush(ProbBuf[--NumProbs]); +- } + BigWrite(fbuf); + } +--- 194,200 ---- + Compress(F + WIDTH * 32 + 16, 16, 16, 0); + Compress(F + WIDTH * 32 + 32, 16, 16, 0); + BigClear(); +! while (NumProbs > 0) + BigPush(ProbBuf[--NumProbs]); + BigWrite(fbuf); + } diff --git a/mail/faces/files/patch-cg b/mail/faces/files/patch-cg new file mode 100644 index 000000000000..6d2402cd8ac5 --- /dev/null +++ b/mail/faces/files/patch-cg @@ -0,0 +1,25 @@ +*** compface/data.h Tue Jan 15 23:58:46 2002 +--- /home/lkoeller/tmp/ports/mail/faces/work/faces/compface/data.h Tue Jun 19 04:01:41 1990 +*************** +*** 1,10 **** + + /* +- * $Header: /cvs/faces/faces/compface/data.h,v 1.2 2002/01/15 22:58:46 devface Exp $ +- * + * Compface - 48x48x1 image compression and decompression + * +! * Copyright (c) 1990-2002 James Ashton - Sydney University + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +--- 1,10 ---- + + /* + * Compface - 48x48x1 image compression and decompression + * +! * Copyright (c) James Ashton - Sydney University - June 1990. +! * +! * Written 11th November 1989. + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. diff --git a/mail/faces/files/patch-ch b/mail/faces/files/patch-ch new file mode 100644 index 000000000000..639bcc5c34fd --- /dev/null +++ b/mail/faces/files/patch-ch @@ -0,0 +1,336 @@ +*** compface/file.c Tue Jan 15 23:58:46 2002 +--- /home/lkoeller/tmp/ports/mail/faces/work/faces/compface/file.c Sun Jan 19 19:35:35 2003 +*************** +*** 1,10 **** +- + /* +- * $Header: /cvs/faces/faces/compface/file.c,v 1.2 2002/01/15 22:58:46 devface Exp $ +- * + * Compface - 48x48x1 image compression and decompression + * +! * Copyright (c) 1990-2002 James Ashton - Sydney University + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +--- 1,9 ---- + /* + * Compface - 48x48x1 image compression and decompression + * +! * Copyright (c) James Ashton - Sydney University - June 1990. +! * +! * Written 11th November 1989. + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +*************** +*** 16,147 **** + + #include "compface.h" + + void +! BigRead(char *fbuf) + { +! int c; + +! while (*fbuf != '\0') { + c = *(fbuf++); +! if ((c < FIRSTPRINT) || (c > LASTPRINT)) { + continue; +- } + BigMul(NUMPRINTS); + BigAdd((WORD)(c - FIRSTPRINT)); + } + } + +- + void +! BigWrite(char *fbuf) + { + static WORD tmp; + static char buf[DIGITS]; +! char *s; +! int i; + + s = buf; +! while (B.b_words > 0) { + BigDiv(NUMPRINTS, &tmp); + *(s++) = tmp + FIRSTPRINT; + } +! i = 7; /* Leave room for the field name on the first line */ + *(fbuf++) = ' '; +! while (s-- > buf) { +! if (i == 0) { + *(fbuf++) = ' '; +- } + *(fbuf++) = *s; +! if (++i >= MAXLINELEN) { + *(fbuf++) = '\n'; + i = 0; + } + } +! if (i > 0) { + *(fbuf++) = '\n'; +- } + *(fbuf++) = '\0'; + } + +- + void +! ReadFace(char *fbuf) + { +! int c, i; +! char *s, *t; + + t = s = fbuf; +! for (i = strlen(s); i > 0; i--) { +! c = (int) *(s++); +! if ((c >= '0') && (c <= '9')) { +! if (t >= fbuf + DIGITS) { + status = ERR_EXCESS; + break; + } + *(t++) = c - '0'; +! } else if ((c >= 'A') && (c <= 'F')) { +! if (t >= fbuf + DIGITS) { + status = ERR_EXCESS; + break; + } + *(t++) = c - 'A' + 10; +! } else if ((c >= 'a') && (c <= 'f')) { +! if (t >= fbuf + DIGITS) { + status = ERR_EXCESS; + break; + } + *(t++) = c - 'a' + 10; +- } else if (((c == 'x') || (c == 'X')) && (t > fbuf) && (*(t-1) == 0)) { +- t--; + } + } +! if (t < fbuf + DIGITS) { + longjmp(comp_env, ERR_INSUFF); +- } + s = fbuf; + t = F; + c = 1 << (BITSPERDIG - 1); +! while (t < F + PIXELS) { + *(t++) = (*s & c) ? 1 : 0; +! if ((c >>= 1) == 0) { + s++; + c = 1 << (BITSPERDIG - 1); + } + } + } + +- + void +! WriteFace(char *fbuf) + { +! char *s, *t; +! int i, bits, digits, words; + + s = F; + t = fbuf; + bits = digits = words = i = 0; +! while (s < F + PIXELS) { +! if ((bits == 0) && (digits == 0)) { + *(t++) = '0'; + *(t++) = 'x'; + } +! if (*(s++)) { + i = i * 2 + 1; +! } else { + i *= 2; + } +! if (++bits == BITSPERDIG) { +! *(t++) = *(i + HexDigits); + bits = i = 0; +! if (++digits == DIGSPERWORD) { + *(t++) = ','; + digits = 0; +! if (++words == WORDSPERLINE) { + *(t++) = '\n'; + words = 0; + } + } + } + } + *(t++) = '\0'; + } +--- 15,191 ---- + + #include "compface.h" + ++ int xbitmap=0; ++ + void +! BigRead(fbuf) +! register char *fbuf; + { +! register int c; + +! while (*fbuf != '\0') +! { + c = *(fbuf++); +! if ((c < FIRSTPRINT) || (c > LASTPRINT)) + continue; + BigMul(NUMPRINTS); + BigAdd((WORD)(c - FIRSTPRINT)); + } + } + + void +! BigWrite(fbuf) +! register char *fbuf; + { + static WORD tmp; + static char buf[DIGITS]; +! register char *s; +! register int i; + + s = buf; +! while (B.b_words > 0) +! { + BigDiv(NUMPRINTS, &tmp); + *(s++) = tmp + FIRSTPRINT; + } +! i = 7; /* leave room for the field name on the first line */ + *(fbuf++) = ' '; +! while (s-- > buf) +! { +! if (i == 0) + *(fbuf++) = ' '; + *(fbuf++) = *s; +! if (++i >= MAXLINELEN) +! { + *(fbuf++) = '\n'; + i = 0; + } + } +! if (i > 0) + *(fbuf++) = '\n'; + *(fbuf++) = '\0'; + } + + void +! ReadFace(fbuf) +! char *fbuf; + { +! register int c, i; +! register char *s, *t; + + t = s = fbuf; +! for(i = strlen(s); i > 0; i--) +! { +! c = (int)*(s++); +! if ((c >= '0') && (c <= '9')) +! { +! if (t >= fbuf + DIGITS) +! { + status = ERR_EXCESS; + break; + } + *(t++) = c - '0'; +! } +! else if ((c >= 'A') && (c <= 'F')) +! { +! if (t >= fbuf + DIGITS) +! { + status = ERR_EXCESS; + break; + } + *(t++) = c - 'A' + 10; +! } +! else if ((c >= 'a') && (c <= 'f')) +! { +! if (t >= fbuf + DIGITS) +! { + status = ERR_EXCESS; + break; + } + *(t++) = c - 'a' + 10; + } ++ else if (((c == 'x') || (c == 'X')) && (t > fbuf) && (*(t-1) == 0)) ++ t--; + } +! if (t < fbuf + DIGITS) + longjmp(comp_env, ERR_INSUFF); + s = fbuf; + t = F; + c = 1 << (BITSPERDIG - 1); +! while (t < F + PIXELS) +! { + *(t++) = (*s & c) ? 1 : 0; +! if ((c >>= 1) == 0) +! { + s++; + c = 1 << (BITSPERDIG - 1); + } + } + } + + void +! WriteFace(fbuf) +! char *fbuf; + { +! register char *s, *t; +! register int i, bits, digits, words; +! extern int xbitmap; +! int digsperword = DIGSPERWORD; +! int wordsperline = WORDSPERLINE; + + s = F; + t = fbuf; + bits = digits = words = i = 0; +! if (xbitmap) { +! sprintf(t,"#define noname_width 48\n#define noname_height 48\nstatic char noname_bits[] = {\n "); +! while (*t) t++; +! digsperword = 2; +! wordsperline = 15; +! } +! while (s < F + PIXELS) +! { +! if ((bits == 0) && (digits == 0)) +! { + *(t++) = '0'; + *(t++) = 'x'; + } +! if (xbitmap) { +! if (*(s++)) +! i = (i >> 1) | 0x8; +! else +! i >>= 1; +! } +! else { +! if (*(s++)) + i = i * 2 + 1; +! else + i *= 2; + } +! if (++bits == BITSPERDIG) +! { +! if (xbitmap) { +! t++; +! t[-(digits & 1) * 2] = *(i + HexDigits); +! } +! else *(t++) = *(i + HexDigits); + bits = i = 0; +! if (++digits == digsperword) +! { +! if (xbitmap && (s >= F + PIXELS)) break; + *(t++) = ','; + digits = 0; +! if (++words == wordsperline) +! { + *(t++) = '\n'; ++ if (xbitmap) *(t++) = ' '; + words = 0; + } + } + } + } ++ if (xbitmap) { ++ sprintf(t, "}\n"); ++ while (*t) t++; ++ } + *(t++) = '\0'; + } diff --git a/mail/faces/files/patch-ci b/mail/faces/files/patch-ci new file mode 100644 index 000000000000..8d633b14a9fb --- /dev/null +++ b/mail/faces/files/patch-ci @@ -0,0 +1,208 @@ +*** compface/gen.c Tue Jan 15 23:58:46 2002 +--- /home/lkoeller/tmp/ports/mail/faces/work/faces/compface/gen.c Wed Jun 19 08:29:13 1991 +*************** +*** 1,10 **** +- + /* +- * $Header: /cvs/faces/faces/compface/gen.c,v 1.2 2002/01/15 22:58:46 devface Exp $ +- * + * Compface - 48x48x1 image compression and decompression + * +! * Copyright (c) 1990-2002 James Ashton - Sydney University + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +--- 1,9 ---- + /* + * Compface - 48x48x1 image compression and decompression + * +! * Copyright (c) James Ashton - Sydney University - June 1990. +! * +! * Written 11th November 1989. + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +*************** +*** 18,79 **** + + #define GEN(g) F[h] ^= G.g[k]; break + +! static void Gen(char *); + + static void +! Gen(char *f) + { +! int m, l, k, j, i, h; + +! for (j = 0; j < HEIGHT; j++) { +! for (i = 0; i < WIDTH; i++) { + h = i + j * WIDTH; + k = 0; +! for (l = i - 2; l <= i + 2; l++) { +! for (m = j - 2; m <= j; m++) { +! if ((l >= i) && (m == j)) { + continue; +! } +! if ((l > 0) && (l <= WIDTH) && (m > 0)) { + k = *(f + l + m * WIDTH) ? k * 2 + 1 : k * 2; + } +! } +! } +! switch (i) { + case 1 : +! switch (j) { + case 1 : GEN(g_22); + case 2 : GEN(g_21); + default : GEN(g_20); + } + break; +- + case 2 : +! switch (j) { + case 1 : GEN(g_12); + case 2 : GEN(g_11); + default : GEN(g_10); + } + break; +- + case WIDTH - 1 : +! switch (j) { + case 1 : GEN(g_42); + case 2 : GEN(g_41); + default : GEN(g_40); + } + break; +- + case WIDTH : +! switch (j) { + case 1 : GEN(g_32); + case 2 : GEN(g_31); + default : GEN(g_30); + } + break; +- + default : +! switch (j) { + case 1 : GEN(g_02); + case 2 : GEN(g_01); + default : GEN(g_00); +--- 17,81 ---- + + #define GEN(g) F[h] ^= G.g[k]; break + +! static void Gen P((char *)) ; + + static void +! Gen(f) +! register char *f; + { +! register int m, l, k, j, i, h; + +! for (j = 0; j < HEIGHT; j++) +! { +! for (i = 0; i < WIDTH; i++) +! { + h = i + j * WIDTH; + k = 0; +! for (l = i - 2; l <= i + 2; l++) +! for (m = j - 2; m <= j; m++) +! { +! if ((l >= i) && (m == j)) + continue; +! if ((l > 0) && (l <= WIDTH) && (m > 0)) + k = *(f + l + m * WIDTH) ? k * 2 + 1 : k * 2; + } +! switch (i) +! { + case 1 : +! switch (j) +! { + case 1 : GEN(g_22); + case 2 : GEN(g_21); + default : GEN(g_20); + } + break; + case 2 : +! switch (j) +! { + case 1 : GEN(g_12); + case 2 : GEN(g_11); + default : GEN(g_10); + } + break; + case WIDTH - 1 : +! switch (j) +! { + case 1 : GEN(g_42); + case 2 : GEN(g_41); + default : GEN(g_40); + } + break; + case WIDTH : +! switch (j) +! { + case 1 : GEN(g_32); + case 2 : GEN(g_31); + default : GEN(g_30); + } + break; + default : +! switch (j) +! { + case 1 : GEN(g_02); + case 2 : GEN(g_01); + default : GEN(g_00); +*************** +*** 84,109 **** + } + } + +- + void + GenFace() + { + static char new[PIXELS]; +! char *f1, *f2; +! int i; + + f1 = new; + f2 = F; + i = PIXELS; +! while (i-- > 0) { + *(f1++) = *(f2++); +- } + Gen(new); + } + +- + void + UnGenFace() + { + Gen(F); + } +--- 86,110 ---- + } + } + + void + GenFace() + { + static char new[PIXELS]; +! register char *f1; +! register char *f2; +! register int i; + + f1 = new; + f2 = F; + i = PIXELS; +! while (i-- > 0) + *(f1++) = *(f2++); + Gen(new); + } + + void + UnGenFace() + { + Gen(F); + } ++ diff --git a/mail/faces/files/patch-cj b/mail/faces/files/patch-cj new file mode 100644 index 000000000000..edec22b3908c --- /dev/null +++ b/mail/faces/files/patch-cj @@ -0,0 +1,319 @@ +*** compface/uncmain.c Thu Feb 21 16:42:54 2002 +--- /home/lkoeller/tmp/ports/mail/faces/work/faces/compface/uncmain.c Sun Jan 19 19:35:35 2003 +*************** +*** 1,9 **** + +! /* $Header: /cvs/faces/faces/compface/uncmain.c,v 1.3 2002/02/21 15:42:54 devface Exp $ + * + * Uncompface - 48x48x1 image decompression. + * +! * Copyright (c) 1990-2002 James Ashton - Sydney University + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +--- 1,11 ---- + +! /* @(#)uncmain.c 1.4 91/10/24 + * + * Uncompface - 48x48x1 image decompression. + * +! * Copyright (c) James Ashton - Sydney University - June 1990. +! * +! * Written 11th November 1889. + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +*************** +*** 13,28 **** + * to me, then an attempt will be made to fix them. + */ + +- #include <stdlib.h> +- #include <unistd.h> + #include <fcntl.h> + #include "compface.h" + +! #define STRCAT (void) strcat +! #define STRCPY (void) strcpy +! #define WRITE (void) write + +! /* The buffer is longer than needed to handle sparse input formats */ + #define FACEBUFLEN 2048 + char fbuf[FACEBUFLEN]; + +--- 15,26 ---- + * to me, then an attempt will be made to fix them. + */ + + #include <fcntl.h> + #include "compface.h" + +! extern int xbitmap; + +! /* the buffer is longer than needed to handle sparse input formats */ + #define FACEBUFLEN 2048 + char fbuf[FACEBUFLEN]; + +*************** +*** 32,87 **** + int outfile = 1; + char *outname = "<stdout>"; + +! char *cmdname; /* Basename of executable */ + +! /* Error handling definitions follow */ + + extern int errno, sys_nerr; + extern char *sys_errlist[]; + + #define ERR ((errno < sys_nerr) ? sys_errlist[errno] : "") +! #define INITERR(s) { \ +! STRCPY(fbuf, cmdname); \ +! STRCAT(fbuf, ": "); \ +! STRCAT(fbuf, (s));\ +! } +! #define ADDERR(s) STRCAT(fbuf, (s)); +! #define ERROR { \ +! STRCAT(fbuf, "\n"); \ +! WRITE(2, fbuf, strlen(fbuf)); \ +! exit(1); \ +! } +! #define INITWARN(s) { \ +! STRCPY(fbuf, cmdname); \ +! STRCAT(fbuf, ": (warning) "); \ +! STRCAT(fbuf, (s)); \ +! } +! #define ADDWARN(s) STRCAT(fbuf, (s)); +! #define WARN { \ +! STRCAT(fbuf, "\n"); \ +! WRITE(2, fbuf, strlen(fbuf)); \ +! } + + int +! main(int argc, char *argv[]) + { + cmdname = *argv; +! while (**argv) { +! if (*((*argv)++) == '/') { + cmdname = *argv; /* find the command's basename */ +! } + } + +! if (argc > 3) { + INITERR("usage: ") + ADDERR(cmdname) + ADDERR(" [infile [outfile]]") + ERROR + } + +! if ((argc > 1) && strcmp(*++argv, "-")) { + inname = *argv; +! if ((infile = open(inname, O_RDONLY)) == -1) { + INITERR(inname) + ADDERR(": ") + ADDERR(ERR) +--- 30,87 ---- + int outfile = 1; + char *outname = "<stdout>"; + +! /* basename of executable */ +! char *cmdname; + +! /* error handling definitions follow */ + + extern int errno, sys_nerr; + extern char *sys_errlist[]; + ++ extern void exit P((int)) ; ++ + #define ERR ((errno < sys_nerr) ? sys_errlist[errno] : "") +! #define INITERR(s) {(void)strcpy(fbuf, cmdname); (void)strcat(fbuf, ": ");\ +! (void)strcat(fbuf, (s));} +! #define ADDERR(s) (void)strcat(fbuf, (s)); +! #define ERROR {(void)strcat(fbuf, "\n");\ +! (void)write(2, fbuf, strlen(fbuf)); exit(1);} +! #define INITWARN(s) {(void)strcpy(fbuf, cmdname);\ +! (void)strcat(fbuf, ": (warning) ");\ +! (void)strcat(fbuf, (s));} +! #define ADDWARN(s) (void)strcat(fbuf, (s)); +! #define WARN {(void)strcat(fbuf, "\n"); (void)write(2, fbuf, strlen(fbuf));} + + int +! main(argc, argv) +! int argc; +! char *argv[]; + { + cmdname = *argv; +! while (**argv) +! if (*((*argv)++) == '/') + cmdname = *argv; /* find the command's basename */ +! +! if (argc > 1 && !strcmp(argv[1], "-X")) +! { +! xbitmap++; +! argc--; +! argv++; + } + +! if (argc > 3) +! { + INITERR("usage: ") + ADDERR(cmdname) + ADDERR(" [infile [outfile]]") + ERROR + } + +! if ((argc > 1) && strcmp(*++argv, "-")) +! { + inname = *argv; +! if ((infile = open(inname, O_RDONLY)) == -1) +! { + INITERR(inname) + ADDERR(": ") + ADDERR(ERR) +*************** +*** 89,98 **** + } + } + +! if (argc > 2) { + outname = *++argv; +! if ((outfile = open(outname, O_WRONLY | O_CREAT | +! O_TRUNC, 0644)) == -1) { + INITERR(outname) + ADDERR(": ") + ADDERR(ERR) +--- 89,99 ---- + } + } + +! if (argc > 2) +! { + outname = *++argv; +! if ((outfile = open(outname, O_WRONLY | O_CREAT | O_TRUNC, 0644)) == -1) +! { + INITERR(outname) + ADDERR(": ") + ADDERR(ERR) +*************** +*** 101,107 **** + } + + (void) ReadBuf(); +! switch (uncompface(fbuf)) { + case -2 : INITERR("internal error") + ERROR + case -1 : INITERR(inname) +--- 102,109 ---- + } + + (void) ReadBuf(); +! switch (uncompface(fbuf)) +! { + case -2 : INITERR("internal error") + ERROR + case -1 : INITERR(inname) +*************** +*** 121,133 **** + int + WriteBuf() + { +! char *s, *t; +! int len; + + s = fbuf; + t = s + strlen(s); +! while (s < t) { +! if ((len = write(outfile, s, t - s)) == -1) { + INITERR(outname) + ADDERR(": ") + ADDERR(ERR) +--- 123,137 ---- + int + WriteBuf() + { +! register char *s, *t; +! register int len; + + s = fbuf; + t = s + strlen(s); +! while (s < t) +! { +! if ((len = write(outfile, s, t - s)) == -1) +! { + INITERR(outname) + ADDERR(": ") + ADDERR(ERR) +*************** +*** 135,161 **** + } + s += len; + } +! return(0); + } + + + int + ReadBuf() + { +! int count, len; +! char *t; + + count = 0; + t = fbuf; +! while ((len = read(infile, t, FACEBUFLEN - count))) { +! if (len == -1) { + INITERR(inname) + ADDERR(": ") + ADDERR(ERR) + ERROR + } + t += len; +! if ((count += len) >= FACEBUFLEN) { + INITWARN(inname) + ADDWARN(" exceeds internal buffer size. Data may be lost") + WARN +--- 139,168 ---- + } + s += len; + } +! return 0; + } + + + int + ReadBuf() + { +! register int count, len; +! register char *t; + + count = 0; + t = fbuf; +! while (len = read(infile, t, FACEBUFLEN - count)) +! { +! if (len == -1) +! { + INITERR(inname) + ADDERR(": ") + ADDERR(ERR) + ERROR + } + t += len; +! if ((count += len) >= FACEBUFLEN) +! { + INITWARN(inname) + ADDWARN(" exceeds internal buffer size. Data may be lost") + WARN +*************** +*** 163,167 **** + } + } + *t = '\0'; +! return(count); + } +--- 170,174 ---- + } + } + *t = '\0'; +! return count; + } diff --git a/mail/faces/files/patch-ck b/mail/faces/files/patch-ck new file mode 100644 index 000000000000..bc58c8648612 --- /dev/null +++ b/mail/faces/files/patch-ck @@ -0,0 +1,62 @@ +*** compface/uncompface.c Thu Feb 21 16:42:54 2002 +--- /home/lkoeller/tmp/ports/mail/faces/work/faces/compface/uncompface.c Wed Jun 19 08:29:14 1991 +*************** +*** 1,10 **** +- + /* +- * $Header: /cvs/faces/faces/compface/uncompface.c,v 1.3 2002/02/21 15:42:54 devface Exp $ +- * + * Compface - 48x48x1 image compression and decompression + * +! * Copyright (c) 1990-2002 James Ashton - Sydney University + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +--- 1,9 ---- + /* + * Compface - 48x48x1 image compression and decompression + * +! * Copyright (c) James Ashton - Sydney University - June 1990. +! * +! * Written 11th November 1989. + * + * Permission is given to distribute these sources, as long as the + * copyright messages are not removed, and no monies are exchanged. +*************** +*** 14,29 **** + * to me, then an attempt will be made to fix them. + */ + + #include "compface.h" +- #include "vars.h" + + int +! uncompface(char *fbuf) + { +! if (!(status = setjmp(comp_env))) { +! UnCompAll(fbuf); /* compress otherwise */ + UnGenFace(); + WriteFace(fbuf); + } +! return(status); + } +--- 13,31 ---- + * to me, then an attempt will be made to fix them. + */ + ++ #define MAIN ++ + #include "compface.h" + + int +! uncompface(fbuf) +! char *fbuf; + { +! if (!(status = setjmp(comp_env))) +! { +! UnCompAll(fbuf);/* compress otherwise */ + UnGenFace(); + WriteFace(fbuf); + } +! return status; + } diff --git a/mail/faces/files/xbm2ikon b/mail/faces/files/xbm2ikon new file mode 100644 index 000000000000..acc20d573692 --- /dev/null +++ b/mail/faces/files/xbm2ikon @@ -0,0 +1,27 @@ +#!/bin/sh +# +# @(#)xbm2ikon 1.4 91/05/06 +# +# Copyright (c) Steve Kinzler - March 1991. +# +# Permission is given to distribute these sources, as long as the +# copyright messages are not removed, and no monies are exchanged. +# +# No responsibility is taken for any errors on inaccuracies inherent +# either to the comments or the code of this program, but if reported +# to me, then an attempt will be made to fix them. + +PATH=$PATH:/usr/bin/X11; export PATH + +# xbm2ikon - convert an X11 bitmap to a Blit ikon bitmap +# stdin/stdout filter +# requires some bitmap filters from the pbmplus package +# kludge by kinzler@cs.indiana.edu + +xbmtopbm | +pbmtoicon | +sed -e 1,2d -e '$s/$/,/' | +tr -d '\011\012' | +tr ',' '\012' | +pr -l1 -t -w22 -3 -s, | +sed -e 's/$/,/' -e 's/\(0x....\)\(0x....\)\(0x....\),/\1,\2,\3,/' diff --git a/mail/faces/files/xbmcut48 b/mail/faces/files/xbmcut48 new file mode 100644 index 000000000000..6ae51a367ea5 --- /dev/null +++ b/mail/faces/files/xbmcut48 @@ -0,0 +1,16 @@ +#!/bin/sh +# +# @(#)xbmcut48 1.2 91/04/15 +# +# Copyright (c) Steve Kinzler - April 1991. +# +# Permission is given to distribute these sources, as long as the +# copyright messages are not removed, and no monies are exchanged. +# +# No responsibility is taken for any errors on inaccuracies inherent +# either to the comments or the code of this program, but if reported +# to me, then an attempt will be made to fix them. + +PATH=$PATH:/usr/bin/X11; export PATH + +xbmtopbm | pnmcut 0 0 48 48 | pbmtoxbm diff --git a/mail/faces/files/xbmsize48 b/mail/faces/files/xbmsize48 new file mode 100644 index 000000000000..5b99d55549f1 --- /dev/null +++ b/mail/faces/files/xbmsize48 @@ -0,0 +1,52 @@ +#!/bin/sh +# +# @(#)xbmsize48 1.3 91/11/19 +# +# Copyright (c) Steve Kinzler - April 1991. +# +# Permission is given to distribute these sources, as long as the +# copyright messages are not removed, and no monies are exchanged. +# +# No responsibility is taken for any errors on inaccuracies inherent +# either to the comments or the code of this program, but if reported +# to me, then an attempt will be made to fix them. + +PATH=$PATH:/usr/bin/X11; export PATH + +size=48 + +# xbmsize48 - size an X11 bitmap to 48x48 +# +# If the bitmaps exceeds 48 pixels in either dimension it is scaled down +# to 48 pixels. Then, the bitmap is pasted into the upper left corner of +# a 48x48 blank bitmap. +# +# A stdin/stdout filter. +# Requires filters from the pbmplus package. +# +# Steve Kinzler, kinzler@cs.indiana.edu, March 1991 + +tmp=/tmp/xbmsize48.$$ +tmp2=/tmp/xbmsize48.2.$$ +trap "rm -f $tmp $tmp2; exit" 0 1 2 13 15 + +cat > $tmp || exit + +eval `sed -n 's/^#define.*_width[ ]*\([0-9]*\).*$/w=\1/p + s/^#define.*_height[ ]*\([0-9]*\).*$/h=\1/p + /{/q' $tmp` + +if test $w -gt $size -o $h -gt $size +then + if test $w -ge $h + then dim=xsize + else dim=ysize + fi + + xbmtopbm < $tmp | ppmscale -$dim $size | + ppmtopgm | pgmtopbm | pbmtoxbm > $tmp2 + mv $tmp2 $tmp +fi + +xbmtopbm < $tmp > $tmp2 +pbmmake $size $size | pnmpaste $tmp2 0 0 | pbmtoxbm diff --git a/mail/faces/pkg-message b/mail/faces/pkg-message new file mode 100644 index 000000000000..4aad696f2aa5 --- /dev/null +++ b/mail/faces/pkg-message @@ -0,0 +1,26 @@ +************************************************** +NOTE: + +For generating faces out of xbm files you must use +the following helper filters: + + xbm2ikon + +and perhaps + + xbmsize48 or xbmcut48 + +e.g. + + 1) generate a 48x48x1 xbm file + 2) cat <file.xbm> | xbm2ikon > file.ikon + 3) compface file.ikon > file.face + +And the other way arround to display a face + +Note uncompface -X is the same as + + uncompface | ikon2xbm + +useful for exmh! +************************************************** diff --git a/mail/faces/pkg-plist b/mail/faces/pkg-plist index ced07c807c06..a1814a732fec 100644 --- a/mail/faces/pkg-plist +++ b/mail/faces/pkg-plist @@ -2,6 +2,10 @@ bin/faces lib/X11/app-defaults/Faces bin/compface bin/uncompface +bin/ikon2xbm +bin/xbm2ikon +bin/xbmcut48 +bin/xbmsize48 include/compface.h lib/libcompface.a lib/libcompface.so |