*BSD News Article 8494


Return to BSD News archive

Newsgroups: comp.unix.bsd
Path: sserve!manuel.anu.edu.au!munnari.oz.au!spool.mu.edu!caen!umeecs!zip!don
From: don@eecs.umich.edu (Don Winsor)
Subject: 386bsd patches for pgp-2.0
Message-ID: <DON.92Dec3094123@bullwinkle.eecs.umich.edu>
Sender: news@zip.eecs.umich.edu (Mr. News)
Organization: U. of Michigan EECS Dept.
Date: Thu, 3 Dec 1992 14:41:23 GMT
Lines: 224

PGP version 2.0 builds fairly easily on 386BSD.  The only big problem is
the busted toupper/tolower routines; if you configure appropriately and
compile in good versions of these routines everything seems to work file.

To build PGP for 386BSD:

  1)  Unpack the distribution (unix_pgp20.tar.Z)
        Some anonymous FTP sites for this:
          HOSTNAME              IP ADDRESS       DIRECTORY
          sol.cs.ruu.nl         131.211.80.17    /UNIX
          ghost.dsi.unimi.it    149.132.2.1      /pub/security
          goya.dit.upm.es       138.4.2.2        /info/unix/misc/pgp20

  2)  Go into the "pgp-2.0/src" directory.

  3)  Apply the patches supplied at the end of this article:
        * Makefile change to include a fixed "isctype"
        * Makefile support for a 386bsd configuration
        * A small configuration fix for fileio.c
        * A working "isctype.c" file

  4)  Run "make 386bsd"

Standard disclaimers:  absolutely no warranty,
use at own risk, copyright/patent status not verified,
buyer beware, may be habit forming, etc.

-- Don Winsor
-- Department of Electrical Engineering and Computer Science
-- The University of Michigan
-- Ann Arbor, Michigan  48109-2122
-- don@eecs.umich.edu

================ pgp-2.0 patches for 386bsd follow ================

*** Makefile~	Thu Sep 10 08:25:40 1992
--- Makefile	Thu Oct 22 13:22:38 1992
***************
*** 83,89 ****
  	mdfile.o more.o armor.o mpilib.o mpiio.o \
  	genprime.o rsagen.o random.o idea.o passwd.o \
  	md5.o system.o language.o getopt.o keyadd.o \
! 	config.o keymaint.o charset.o
  
  OBJS =	$(OBJ1) $(ZIPOBJS) $(OBJS_EXT)
  
--- 83,89 ----
  	mdfile.o more.o armor.o mpilib.o mpiio.o \
  	genprime.o rsagen.o random.o idea.o passwd.o \
  	md5.o system.o language.o getopt.o keyadd.o \
! 	config.o keymaint.o charset.o isctype.o
  
  OBJS =	$(OBJ1) $(ZIPOBJS) $(OBJS_EXT)
  
***************
*** 92,97 ****
--- 92,101 ----
  
  
  linux:
+ 	$(MAKE) all CC=gcc LD=gcc OBJS_EXT=80386.o \
+ 	CFLAGS="-O -DUNIX -DUNIT32"
+ 
+ 386bsd:
  	$(MAKE) all CC=gcc LD=gcc OBJS_EXT=80386.o \
  	CFLAGS="-O -DUNIX -DUNIT32"
  
*** fileio.c~	Sun Aug 30 23:02:46 1992
--- fileio.c	Fri Oct  9 06:30:26 1992
***************
*** 253,258 ****
--- 253,259 ----
  #endif
  #endif
  
+ #undef UNIX
  void truncate_name(char *path, int ext_len)
  {	/* truncate the filename so that an extension can be tacked on. */
  #ifdef UNIX		/* for other systems this is a no-op */
*** isctype.c~	Thu Dec  3 08:29:54 1992
--- isctype.c	Thu Oct 22 13:22:12 1992
***************
*** 0 ****
--- 1,139 ----
+ /*
+  * Copyright (c) 1989 The Regents of the University of California.
+  * All rights reserved.
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted provided that the following conditions
+  * are met:
+  * 1. Redistributions of source code must retain the above copyright
+  *    notice, this list of conditions and the following disclaimer.
+  * 2. Redistributions in binary form must reproduce the above copyright
+  *    notice, this list of conditions and the following disclaimer in the
+  *    documentation and/or other materials provided with the distribution.
+  * 3. All advertising materials mentioning features or use of this software
+  *    must display the following acknowledgement:
+  *	This product includes software developed by the University of
+  *	California, Berkeley and its contributors.
+  * 4. Neither the name of the University nor the names of its contributors
+  *    may be used to endorse or promote products derived from this software
+  *    without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+  * SUCH DAMAGE.
+  *
+  * PATCHES MAGIC                LEVEL   PATCH THAT GOT US HERE
+  * --------------------         -----   ----------------------
+  * CURRENT PATCH LEVEL:         1       00027
+  * --------------------         -----   ----------------------
+  *
+  * 02 Aug 92	Wiljo Heinen		Fixed toupper()/tolower() range check
+  */
+ 
+ #if defined(LIBC_SCCS) && !defined(lint)
+ static char sccsid[] = "@(#)isctype.c	5.2 (Berkeley) 6/1/90";
+ #endif /* LIBC_SCCS and not lint */
+ 
+ #define _ANSI_LIBRARY
+ #include <ctype.h>
+ 
+ #undef isalnum
+ isalnum(c)
+ 	int c;
+ {
+ 	return((_ctype_ + 1)[c] & (_U|_L|_N));
+ }
+ 
+ #undef isalpha
+ isalpha(c)
+ 	int c;
+ {
+ 	return((_ctype_ + 1)[c] & (_U|_L));
+ }
+ 
+ #undef iscntrl
+ iscntrl(c)
+ 	int c;
+ {
+ 	return((_ctype_ + 1)[c] & _C);
+ }
+ 
+ #undef isdigit
+ isdigit(c)
+ 	int c;
+ {
+ 	return((_ctype_ + 1)[c] & _N);
+ }
+ 
+ #undef isgraph
+ isgraph(c)
+ 	int c;
+ {
+ 	return((_ctype_ + 1)[c] & (_P|_U|_L|_N));
+ }
+ 
+ #undef islower
+ islower(c)
+ 	int c;
+ {
+ 	return((_ctype_ + 1)[c] & _L);
+ }
+ 
+ #undef isprint
+ isprint(c)
+ 	int c;
+ {
+ 	return((_ctype_ + 1)[c] & (_P|_U|_L|_N|_B));
+ }
+ 
+ #undef ispunct
+ ispunct(c)
+ 	int c;
+ {
+ 	return((_ctype_ + 1)[c] & _P);
+ }
+ 
+ #undef isspace
+ isspace(c)
+ 	int c;
+ {
+ 	return((_ctype_ + 1)[c] & _S);
+ }
+ 
+ #undef isupper
+ isupper(c)
+ 	int c;
+ {
+ 	return((_ctype_ + 1)[c] & _U);
+ }
+ 
+ #undef isxdigit
+ isxdigit(c)
+ 	int c;
+ {
+ 	return((_ctype_ + 1)[c] & (_N|_X));
+ }
+ 
+ #undef tolower
+ tolower(c)
+ 	int c;
+ {
+ /* was:	return((c) - 'A' + 'a');*/
+ 	return ( isupper(c) ? c - 'A' + 'a' : c);
+ }
+ 
+ #undef toupper
+ toupper(c)
+ 	int c;
+ {
+ /* was:	return((c) - 'a' + 'A');*/
+ 	return ( islower(c) ? c - 'a' + 'A' : c);
+ }