Subject: Re: PGP Decoding
To: Neil Levine <levine@yoyo.org>
From: der Mouse <mouse@Rodents.Montreal.QC.CA>
List: port-sparc
Date: 04/23/1997 07:28:39
-----BEGIN PGP SIGNED MESSAGE-----

> I am sure this question must have been raised at some point in the
> past.  I have compiled PGP on my IPC using the SunOS flags bu deite
> encrypting fine, it will not decrypt messages or check sigs etc.  I
> get:

> ERROR: unexpected end of compressed data input.

> Decompression error.  Probable corrupted input.

> Is there a quick fix or a patch available?

Fuzzy memory says this is a problem with lseek() - a missing prototype
is the usual problem with lseek.

However, I have pgp (263i) working on NetBSD/sun3, and looking at the
patches I applied, it has nothing to do with lseek.  You don't say what
pgp version you're working with; perhaps it's old, and 263i has the
lseek bugs fixed?

Here's my transcript file:

+----------------
| % mkdir pgp-263i
| % gunzip < DIST/pgp263is.tar.gz | tar xfO - pgp263ii.tar | ( cd pgp-263i ; tar xvfppS - )
| 
| Fix the bloody idiotic mode bits
| 
| % find pgp-263i -type d -print0 | xargs -0 chmod 755
| % find pgp-263i -type f -print0 | xargs -0 chmod 644
| 
| Apply distributed patches:
| 
| % patch -d pgp-263i/src < DIST/pgp263i.patch.text
| 
| Fix a couple more things:
| 
| % patch -d pgp-263i/src < DIFFS
| 
| Build:
| 
| % cd pgp-263i/src
| % make netbsd_68k
+----------------

Here are the pgp263i.patch.text and DIFFS files referred to above.
(Don't forget to strip the leading "| " from these before applying).

+---------------- pgp263i.patch.text
| The following patches correct a few problems in the current PGP 2.6.3(i)
| release. The most important changes are:
| 
| 1. Better recognition of text/binary files; no line length limits.
| 2. Smoother compilation on some platforms, e.g. by eliminating all
|    references to strdup() and strncasecmp().
| 
| 
| Enjoy,
| 
|   .
| Stale
| 
| 
| *** $(SRC)/pgp263i.orig/src/charset.c	Wed Jan 10 15:18:41 1996
| --- charset.c	Sun Feb  4 16:32:01 1996
| ***************
| *** 259,265 ****
|   /* End of Russian section */
|   
|   #ifndef	DEFAULT_CSET
| ! #if defined(MSDOS)
|   #define DEFAULT_CSET    "cp850"
|   #elif defined(NEXT)
|   #define	DEFAULT_CSET	"next"
| --- 259,265 ----
|   /* End of Russian section */
|   
|   #ifndef	DEFAULT_CSET
| ! #if defined(MSDOS) || defined(OS2)
|   #define DEFAULT_CSET    "cp850"
|   #elif defined(NEXT)
|   #define	DEFAULT_CSET	"next"
| 
| 
| *** $(SRC)/pgp263i.orig/src/fileio.c	Sat Jan  6 20:45:50 1996
| --- fileio.c	Mon Mar  4 11:14:45 1996
| ***************
| *** 590,605 ****
|   
|   char *buildsysfilename(char *result, char *fname)
|   {
| -     buildfilename(result, fname);
|   #ifdef PGP_SYSTEM_DIR
| -     if (file_exists(result))
| - 	return result;
|       strcpy(result, PGP_SYSTEM_DIR);
|       strcat(result, fname);
|       if (file_exists(result))
|   	return result;
| -     buildfilename(result, fname);	/* Put name back for error */
|   #endif
|       return result;
|   }
|   
| --- 590,602 ----
|   
|   char *buildsysfilename(char *result, char *fname)
|   {
|   #ifdef PGP_SYSTEM_DIR
|       strcpy(result, PGP_SYSTEM_DIR);
|       strcat(result, fname);
|       if (file_exists(result))
|   	return result;
|   #endif
| +     buildfilename(result, fname);	/* Put name back for error */
|       return result;
|   }
|   
| ***************
| *** 1044,1059 ****
|           c = *bufptr++;
|           if (c == '\n' || c == '\r')
|               lfctr=0;
| !         else /* allow BEL BS HT LF VT FF CR EOF control characters */
|           {
|   #ifdef EBCDIC
| ! 	    if (iscntrl(c) && c!=BEL && c!=BS && c!=HT && c!=LF && c!=VT && c!=FF && c!=CR && c!=EOF)
|   #else
| !             if (c < '\007' || (c > '\r' && c < ' ' && c != '\032'))
|   #endif
|                   return FALSE;  /* not a text file */
|               lfctr++;
| !             if (lfctr>132) return FALSE; /* line too long. Not a text file*/
|           }
|       }
|       return TRUE;
| --- 1041,1056 ----
|           c = *bufptr++;
|           if (c == '\n' || c == '\r')
|               lfctr=0;
| !         else /* allow BEL BS HT LF VT FF CR EOF ESC control characters */
|           {
|   #ifdef EBCDIC
| ! 	    if (iscntrl(c) && c!=BEL && c!=BS && c!=HT && c!=LF && c!=VT && c!=FF && c!=CR && c!=EOF && c!=ESC)
|   #else
| !             if (c < '\007' || (c > '\r' && c < ' ' && c != '\032' && c != '\033'))
|   #endif
|                   return FALSE;  /* not a text file */
|               lfctr++;
| ! /*          if (lfctr>132) return FALSE; /* line too long. Not a text file */
|           }
|       }
|       return TRUE;
| 
| 
| *** $(SRC)/pgp263i.orig/src/keymaint.c	Tue Jan  2 15:12:59 1996
| --- keymaint.c	Sat Feb 17 15:04:52 1996
| ***************
| *** 118,124 ****
|   static void maint_init_mem(void);
|   static void maint_release_mem(void);
|   static VOID *allocn(int size);
| - static char *store_str(char *str);
|   static VOID *allocbuf(int size);
|   static void freebufpool(void);
|   static void compute_legit(struct userid *id);
| --- 118,123 ----
| ***************
| *** 1400,1406 ****
|   
|   #define	HASH_ALLOC	(ALLOC_UNIT / sizeof(struct hashent))
|   
| - static char *store_str(char *str);
|   static VOID *allocbuf(int size);
|   static void freebufpool();
|   
| --- 1399,1404 ----
| ***************
| *** 1574,1580 ****
|   /*
|    * store_str does the same as strdup(), but allocates memory with allocbuf()
|    */
| ! static char *
|    store_str(char *str)
|   {
|       int size = strlen(str) + 1;
| --- 1572,1578 ----
|   /*
|    * store_str does the same as strdup(), but allocates memory with allocbuf()
|    */
| ! char *
|    store_str(char *str)
|   {
|       int size = strlen(str) + 1;
| 
| 
| *** $(SRC)/pgp263i.orig/src/keymaint.h	Sun Oct 22 15:55:01 1995
| --- keymaint.h	Sat Feb 17 14:34:02 1996
| ***************
| *** 46,51 ****
| --- 46,52 ----
|   void endkrent(void);
|   int init_userhash(void);
|   
| + char *store_str(char *str);
|   
|   extern char trust_lst[8][16];
| 
| 
| *** $(SRC)/pgp263i.orig/src/keymgmt.c	Mon Jan  8 13:05:09 1996
| --- keymgmt.c	Sat Feb 17 15:40:33 1996
| ***************
| *** 1096,1102 ****
|   	if (++guesses > 3)
|   	    hidekey = 0;
|   	else
| ! 	    hidekey = (GetHashedPassPhrase(ideakey, 1) > 0);
|   	/*
|   	 * We've already tried the null password - interpret
|   	 * a null string as "I dunno".
| --- 1096,1102 ----
|   	if (++guesses > 3)
|   	    hidekey = 0;
|   	else
| ! 	    hidekey = (GetHashedPassPhrase((char *)ideakey, 1) > 0);
|   	/*
|   	 * We've already tried the null password - interpret
|   	 * a null string as "I dunno".
| ***************
| *** 2538,2544 ****
|   
|       fprintf(pgpout, LANG("\nDo you want to change your pass phrase (y/N)? "));
|       if (getyesno('n')) {	/* user said yes */
| ! 	hidekey = (GetHashedPassPhrase((byte *) ideakey, 2) > 0);
|   	changed = TRUE;
|       }
|       if (!changed) {
| --- 2538,2544 ----
|   
|       fprintf(pgpout, LANG("\nDo you want to change your pass phrase (y/N)? "));
|       if (getyesno('n')) {	/* user said yes */
| ! 	hidekey = (GetHashedPassPhrase((char *)ideakey, 2) > 0);
|   	changed = TRUE;
|       }
|       if (!changed) {
| ***************
| *** 2805,2811 ****
|       fputs(LANG("\nYou need a pass phrase to protect your RSA secret key.\n\
|   Your pass phrase can be any sentence or phrase and may have many\n\
|   words, spaces, punctuation, or any other printable characters.\n"), pgpout);
| !     hidekey = (GetHashedPassPhrase(ideakey, 2) > 0);
|       /* init CFB IDEA key */
|   #ifdef MACTC5
|       if (Abort)
| --- 2805,2811 ----
|       fputs(LANG("\nYou need a pass phrase to protect your RSA secret key.\n\
|   Your pass phrase can be any sentence or phrase and may have many\n\
|   words, spaces, punctuation, or any other printable characters.\n"), pgpout);
| !     hidekey = (GetHashedPassPhrase((char *)ideakey, 2) > 0);
|       /* init CFB IDEA key */
|   #ifdef MACTC5
|       if (Abort)
| 
| 
| *** $(SRC)/pgp263i.orig/src/passwd.c	Tue Jan  2 15:14:34 1996
| --- passwd.c	Sun Feb  4 15:04:01 1996
| ***************
| *** 76,81 ****
| --- 76,82 ----
|   		noecho = 0;
|   	for (;;) {
|   		fprintf(pgpout,LANG("\nEnter pass phrase: "));
| +                 fflush(pgpout);
|   #ifdef AMIGA
|                   requesterdesc=LANG("\nEnter pass phrase: ");
|   #endif
| 
| 
| *** $(SRC)/pgp263i.orig/src/pgp.c	Thu Jan 18 18:06:45 1996
| --- pgp.c	Mon Mar  4 11:25:03 1996
| ***************
| *** 100,105 ****
| --- 100,106 ----
|      Version 2.6.2 - 11 Oct 94
|      Version 2.6.2i - 7 May 95
|      Version 2.6.3(i) - 18 Jan 96
| +    Version 2.6.3(i)a - 4 Mar 96
|   
|    */
|   
| ***************
| *** 112,131 ****
|   #include <stdlib.h>
|   #include <string.h>
|   
| - /* Hack to get strncasecmp to work */
| - #if defined(WIN32)
| - #define strncasecmp _strnicmp
| - #elif defined(AMIGA) || defined(OS2) || defined(__PUREC__)
| - #define strncasecmp strnicmp
| - #elif defined(MSDOS)
| - #  if defined(__TURBOC__)
| - #  define strncasecmp strncmpi
| - #  else /* MSC */
| - #  define strncasecmp strnicmp
| - #  endif
| - #endif
| - 
|   #ifdef UNIX
|   #include <sys/stat.h>
|   #endif
|   
| --- 113,120 ----
|   #include <stdlib.h>
|   #include <string.h>
|   
|   #ifdef UNIX
| + #include <sys/types.h>
|   #include <sys/stat.h>
|   #endif
|   
| ***************
| *** 168,174 ****
|   char *Outputfile = NULL;
|   void check_expiration_date(void);
|   #define BEST -1
| - #define strncasecmp strncmpi
|   #define exit Exit
|   void Exit(int x);
|   #endif
| --- 157,162 ----
| ***************
| *** 198,204 ****
|     * compiler flags.
|     */
|   #ifdef USA
| ! static const char __DOSVer[] = "$VER: PGP 2.6.3 (18.01.96)"
|   #  ifdef _M68020
|           " Amiga 68020 version by Rob Knop <rknop@mop.caltech.edu>";
|   #  else
| --- 186,192 ----
|     * compiler flags.
|     */
|   #ifdef USA
| ! static const char __DOSVer[] = "$VER: PGP 2.6.3a (04.03.96)"
|   #  ifdef _M68020
|           " Amiga 68020 version by Rob Knop <rknop@mop.caltech.edu>";
|   #  else
| ***************
| *** 205,211 ****
|           " Amiga 68000 version by Rob Knop <rknop@mop.caltech.edu>";
|   #  endif
|   #else
| ! static const char __DOSVer[] = "$VER: PGP 2.6.3i (18.01.96)"
|   #  ifdef _M68020
|           " Amiga 68020 version by Peter Simons <simons@peti.rhein.de>";
|   #  else
| --- 193,199 ----
|           " Amiga 68000 version by Rob Knop <rknop@mop.caltech.edu>";
|   #  endif
|   #else
| ! static const char __DOSVer[] = "$VER: PGP 2.6.3ia (04.03.96)"
|   #  ifdef _M68020
|           " Amiga 68020 version by Peter Simons <simons@peti.rhein.de>";
|   #  else
| ***************
| *** 216,226 ****
|   
|   /* Global filenames and system-wide file extensions... */
|   #ifdef USA
| ! char rel_version[] = _LANG("2.6.3");	/* release version */
|   #else
| ! char rel_version[] = _LANG("2.6.3i");	/* release version */
|   #endif
| ! char rel_date[] = "1996-01-18";		/* release date */
|   char PGP_EXTENSION[] = ".pgp";
|   char ASC_EXTENSION[] = ".asc";
|   char SIG_EXTENSION[] = ".sig";
| --- 204,214 ----
|   
|   /* Global filenames and system-wide file extensions... */
|   #ifdef USA
| ! char rel_version[] = _LANG("2.6.3a");	/* release version */
|   #else
| ! char rel_version[] = _LANG("2.6.3ia");	/* release version */
|   #endif
| ! char rel_date[] = "1996-03-04";		/* release date */
|   char PGP_EXTENSION[] = ".pgp";
|   char ASC_EXTENSION[] = ".asc";
|   char SIG_EXTENSION[] = ".sig";
| ***************
| *** 260,279 ****
|   
|      27-Jun-95 simons@peti.rhein.de (Peter Simons)
|      Added support for lh5 archive as generated by Lha. Unfortunately,
| !    Lha requires special treatment also. I inserted the check right
|      _before_ lharc, because lh5/lha is a special type of an lharc
|      archive.
|    */
|   static char *compressSig[] =
| ! {"PK\03\04", "ZOO ", "GIF8", "\352\140",
|    "HPAK", "\037\213", "\037\235", "\032\013", "\032HP%"
|   	/* lharc is special, must be last */ };
|   static char *compressName[] =
| ! {"PKZIP", "Zoo", "GIF", "Arj",
|    "Hpack", "gzip", "compressed", "PAK", "Hyper",
|    "Lha", "Lharc"};
|   static char *compressExt[] =
| ! {".zip", ".zoo", ".gif", ".arj",
|    ".hpk", ".gz", ".Z", ".pak", ".hyp",
|    ".lha", ".lzh"};
|   
| --- 248,267 ----
|   
|      27-Jun-95 simons@peti.rhein.de (Peter Simons)
|      Added support for lh5 archive as generated by Lha. Unfortunately,
| !    lh5 requires special treatment also. I inserted the check right
|      _before_ lharc, because lh5/lha is a special type of an lharc
|      archive.
|    */
|   static char *compressSig[] =
| ! {"PK\03\04", "ZOO ", "GIF8", "\352\140", "Rar!",
|    "HPAK", "\037\213", "\037\235", "\032\013", "\032HP%"
|   	/* lharc is special, must be last */ };
|   static char *compressName[] =
| ! {"PKZIP", "Zoo", "GIF", "Arj", "RAR",
|    "Hpack", "gzip", "compressed", "PAK", "Hyper",
|    "Lha", "Lharc"};
|   static char *compressExt[] =
| ! {".zip", ".zoo", ".gif", ".arj", ".rar",
|    ".hpk", ".gz", ".Z", ".pak", ".hyp",
|    ".lha", ".lzh"};
|   
| ***************
| *** 723,730 ****
|        */
|       opt = 0;			/* Number of config files read */
|   #ifdef PGP_SYSTEM_DIR
| !     strcpy(mcguffin, PGP_SYSTEM_DIR);
| !     strcat(mcguffin, "config.txt");
|       if (access(mcguffin, 0) == 0) {
|   	opt++;
|   	/*
| --- 711,721 ----
|        */
|       opt = 0;			/* Number of config files read */
|   #ifdef PGP_SYSTEM_DIR
| ! #ifdef UNIX
| !     buildsysfilename(mcguffin, ".pgprc");
| !     if (access(mcguffin, 0) != 0)
| ! #endif
| !     buildsysfilename(mcguffin, "config.txt");
|       if (access(mcguffin, 0) == 0) {
|   	opt++;
|   	/*
| ***************
| *** 800,806 ****
|   	 * NOTE: this does not work with GNU getopt, use getopt.c from
|   	 * the PGP distribution.
|   	 */
| ! 	if ((!strncasecmp(argv[optind], INCLUDE_MARK, INCLUDE_MARK_LEN)) ||
|              ((opt = pgp_getopt(argc, argv, OPTIONS)) == EOF)) {
|   	    if (optind == argc)	/* -- at end */
|   		break;
| --- 791,797 ----
|   	 * NOTE: this does not work with GNU getopt, use getopt.c from
|   	 * the PGP distribution.
|   	 */
| ! 	if ((!strncmp(argv[optind], INCLUDE_MARK, INCLUDE_MARK_LEN)) ||
|              ((opt = pgp_getopt(argc, argv, OPTIONS)) == EOF)) {
|   	    if (optind == argc)	/* -- at end */
|   		break;
| ***************
| *** 908,914 ****
|   	    /* '+' special option: does not require - */
|   	case '+':
|   	    if (processConfigLine(optarg) == 0) {
| !                 if (!strncasecmp(optarg,"charset",7))
|                       init_charset();
|   		break;
|   	    }
| --- 899,905 ----
|   	    /* '+' special option: does not require - */
|   	case '+':
|   	    if (processConfigLine(optarg) == 0) {
| !                 if (!strncmp(optarg,"CH",2)) /* CHARSET */
|                       init_charset();
|   		break;
|   	    }
| ***************
| *** 2866,2872 ****
|   
|    	/* Check whether we need to do something or not. */
|    	while(*recipients) {
| !  		if (!strncasecmp(*recipients, INCLUDE_MARK, INCLUDE_MARK_LEN))
|    		    break;
|    		recipients++;
|    	}
| --- 2857,2863 ----
|   
|    	/* Check whether we need to do something or not. */
|    	while(*recipients) {
| !  		if (!strncmp(*recipients, INCLUDE_MARK, INCLUDE_MARK_LEN))
|    		    break;
|    		recipients++;
|    	}
| ***************
| *** 2879,2885 ****
|    	entrynum = 0;
|   
|    	while(*recipients) {
| !  		if (strncasecmp(*recipients, INCLUDE_MARK, INCLUDE_MARK_LEN))
|                   {
|    			new[entrynum++] = *recipients++;
|    			if (entrynum == MAX_RECIPIENTS) {
| --- 2870,2876 ----
|    	entrynum = 0;
|   
|    	while(*recipients) {
| !  		if (strncmp(*recipients, INCLUDE_MARK, INCLUDE_MARK_LEN))
|                   {
|    			new[entrynum++] = *recipients++;
|    			if (entrynum == MAX_RECIPIENTS) {
| ***************
| *** 2919,2925 ****
|    				tempbuf[i] = '\0';
|   
|    				/* Copy new entry to new */
| !  				if (!(new[entrynum++] = strdup(tempbuf)))
|    				  exitPGP(OUT_OF_MEM);
|    				if (entrynum == MAX_RECIPIENTS) {
|    					/* Current buffer is too small.
| --- 2910,2916 ----
|    				tempbuf[i] = '\0';
|   
|    				/* Copy new entry to new */
| !  				if (!(new[entrynum++] = store_str(tempbuf)))
|    				  exitPGP(OUT_OF_MEM);
|    				if (entrynum == MAX_RECIPIENTS) {
|    					/* Current buffer is too small.
| 
| 
| *** $(SRC)/pgp263i.orig/src/zdeflate.c	Wed Sep 27 20:17:40 1995
| --- zdeflate.c	Sat Feb 17 14:48:47 1996
| ***************
| *** 467,473 ****
|               start, match, length);
|           error("invalid match");
|       }
| !     if (verbose > 1) {
|           fprintf(stderr,"\\[%d,%d]", start-match, length);
|           /* putc a macro, not safe to modify args!! */
|           do { putc(slide[start], stderr); start++; } while (--length!=0);
| --- 467,473 ----
|               start, match, length);
|           error("invalid match");
|       }
| !     if (verbose) {
|           fprintf(stderr,"\\[%d,%d]", start-match, length);
|           /* putc a macro, not safe to modify args!! */
|           do { putc(slide[start], stderr); start++; } while (--length!=0);
| 
| 
| *** $(SRC)/pgp263i.orig/src/zip.h	Wed Sep 27 20:18:52 1995
| --- zip.h	Sat Feb 17 15:05:31 1996
| ***************
| *** 83,89 ****
|   
|   /* Diagnostic functions */
|   #ifdef DEBUG
| !   extern char verbose;	/* PGP -l flag */
|   # ifdef MSDOS
|   #  undef  stderr
|   #  define stderr stdout
| --- 83,89 ----
|   
|   /* Diagnostic functions */
|   #ifdef DEBUG
| !   extern unsigned char verbose;	/* PGP -l flag */
|   # ifdef MSDOS
|   #  undef  stderr
|   #  define stderr stdout
| ***************
| *** 92,100 ****
|   #  define Assert(cond,msg) {if(!(cond)) error(msg);}
|   #  define Trace(x) fprintf x
|   #  define Tracev(x) {if (verbose) fprintf x ;}
| ! #  define Tracevv(x) {if (verbose>1) fprintf x ;}
|   #  define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
| ! #  define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;}
|   #else
|   #  define diag(where)
|   #  define Assert(cond,msg)
| --- 92,100 ----
|   #  define Assert(cond,msg) {if(!(cond)) error(msg);}
|   #  define Trace(x) fprintf x
|   #  define Tracev(x) {if (verbose) fprintf x ;}
| ! #  define Tracevv(x) {if (verbose) fprintf x ;}
|   #  define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
| ! #  define Tracecv(c,x) {if (verbose && (c)) fprintf x ;}
|   #else
|   #  define diag(where)
|   #  define Assert(cond,msg)
| 
| 
| *** $(SRC)/pgp263i.orig/src/ztrees.c	Mon Jun 26 20:43:46 1995
| --- ztrees.c	Sat Feb 17 14:49:00 1996
| ***************
| *** 312,318 ****
|   
|   #else /* DEBUG */
|   #  define send_code(c, tree) \
| !      { if (verbose>1) fprintf(stderr,"\ncd %3d ",(c)); \
|          send_bits(tree[c].Code, tree[c].Len); }
|   #endif
|   
| --- 312,318 ----
|   
|   #else /* DEBUG */
|   #  define send_code(c, tree) \
| !      { if (verbose) fprintf(stderr,"\ncd %3d ",(c)); \
|          send_bits(tree[c].Code, tree[c].Len); }
|   #endif
+----------------

+---------------- DIFFS
| *** fileio.h.orig	Sat Jan  6 14:46:36 1996
| --- fileio.h	Sun Dec  1 21:09:00 1996
| ***************
| *** 25,34 ****
| --- 25,36 ----
|    * Directory for system-wide files.  Must end in a /, ready for
|    * dumb appending of the filename.  (If not defined, it's not used.)
|    */
| + #ifndef PGP_SYSTEM_DIR
|   #ifdef LINUX
|   #  define PGP_SYSTEM_DIR "/var/lib/pgp/"
|   #else
|   #  define PGP_SYSTEM_DIR "/usr/local/lib/pgp/"
| + #endif
|   #endif
|   #define FOPRBIN		"r"
|   #define FOPRTXT		"r"
| *** makefile.orig	Thu Jan 18 05:42:36 1996
| --- makefile	Mon Dec  2 06:34:24 1996
| ***************
| *** 38,43 ****
| --- 38,46 ----
|   # -DPORTABLE  and
|   # -DMPORTABLE to build the portable version of the RSA primitives
|   #             (ie if no optimized asm versions are available)
| + # -DPGP_SYSTEM_DIR='"/some/path/"' to specify PGP_SYSTEM_DIR here
| + # Unfortunately, because of the way the build procedure overrides
| + # these, you have to go change this in the target for your machine.
|   #
|   # Define one of:
|   # -DMERRITT    Merritt's modmult (fast on risc machines)
| ***************
| *** 186,192 ****
|   
|   netbsd_68k:
|   	$(MAKE) all CC=gcc LD=gcc OBJS_EXT="mc68020.o" \
| ! 	CFLAGS="$(RSAINCDIR) -O -DUNIX -DHIGHFIRST -DIDEA32 -DMAX_NAMELEN=255"
|   
|   # Sun 3 with gcc
|   # change -traditional-cpp to -traditional for gcc < 2.0
| --- 189,195 ----
|   
|   netbsd_68k:
|   	$(MAKE) all CC=gcc LD=gcc OBJS_EXT="mc68020.o" \
| ! 	CFLAGS="$(RSAINCDIR) -O -DUNIX -DHIGHFIRST -DIDEA32 -DMAX_NAMELEN=255 -DPGP_SYSTEM_DIR='\"/local/.lib/pgp-263i\"'"
|   
|   # Sun 3 with gcc
|   # change -traditional-cpp to -traditional for gcc < 2.0
+----------------

					der Mouse

			       mouse@rodents.montreal.qc.ca
		     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B

-----BEGIN PGP SIGNATURE-----
Version: 2.6.3ia
Charset: latin1

iQCVAwUBM13yWtiXPKPXYL91AQE6+wP/ZIlS0wn/sIZF+MzIn53989IiFIBvb9TF
knAxxXty1hQeBXTVIWQmPYeW95m7rr/XfPHe7DalPSXzdxBjKbLdG1c/Ha17yq7X
DlU4WLqwq4DKnTPTlTCPjp7QvO7dWsnoRzAU2m7zJEzmlJy1izQ0sngTj5plDEhW
+ef0xXcOTJs=
=+G5v
-----END PGP SIGNATURE-----