Well, feeling industrious, I sat down and beat BIND 4.8.3 into submission on
SunOS 4.1 today. Since I had several requests in response to my earlier
offer, I have put together a set of instructions for assembling a libc.so
which uses the resolver routines directly instead of going through the
brain-damaged YP/NIS "ypserv -i" interface.
Here 'tis; enjoy.
Dave Curry
SRI International
davy@itstd.sri.com
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
# README
# named.patches
# nslookup.patches
# resolver.patches
# This archive created: Mon Sep 10 15:06:20 1990
export PATH; PATH=/bin:$PATH
echo shar: extracting "'README'" '(4624 characters)'
if test -f 'README'
then
echo shar: will not over-write existing file "'README'"
else
sed 's/^X//' << \SHAR_EOF > 'README'
X
XThis distribution contains:
X
X - Instructions for creating a SunOS 4.1 shared library which uses
X the BIND resolver routines in place of the YP/NIS gethostby*()
X routines. (This file.)
X - Patches to the BIND 4.8.3 resolver routines which enable you to
X place them in a SunOS 4.1 shared library. (resolver.patches)
X - Patches to the named Makefile and named-xfer.c to enable you to
X compile them under SunOS 4.1. (named.patches)
X - Patches to the nslookup Makefile to enable you to compile it
X under SunOS 4.1. (nslookup.patches)
X
XYou will require SunOS 4.1, and you must have the "Shlib_Custom" option
Xinstalled. If you didn't select the "Shlib_Custom" option when you
Xinstalled your system, use the SunOS add_services(8) command to load it from
Xthe distribution tapes.
X
XFor those of you who haven't upgraded to SunOS 4.1 yet, you're out of luck:
XSunOS 4.0 did not give you any way to build a custom libc.so. Upgrade to
XSunOS 4.1.
X
XCAUTION:
X I do not know the effects of doing this if you run with Sun's version of
X sendmail, which has YP/NIS built into it. I suspect that it should all
X work okay, but as one of the first things I do when installing a Sun is
X throw Sun's sendmail away and replace it with "real" sendmail, I have
X never tried it.
X
XSteps for building a resolver shared library:
X
X1. Get the BIND 4.8.3 release from ucbarpa.berkeley.edu in the file
X "4.3/bind.4.8.3.tar.Z", uncompress the tar file, and extract it. In the
X following, we'll assume you put everything into the directory BINDSRC.
X
X2. Change directories to BINDSRC/res.
X 2a. Move the Makefile to Makefile.orig, and replace it with the one
X enclosed here.
X 2b. Apply the enclosed patches to the following files:
X
X herror.c
X res_debug.c
X res_init.c
X res_send.c
X named/gethostnamadr.c
X
X3. Type "make". Everything should build without errors. The Makefile will
X not compile mktemp.c, strcasecmp.c, and strpbrk.c; these routines are
X already present in Sun's libc, and are thus not needed.
X
X[you must be "root" from here on in]
X
X4. Change directories to /usr/lib/shlib.etc.
X
X5. Make a temporary directory called "tmp" and run the following commands.
X See the "README" file in this directory for more details.
X
X # cd tmp
X # ar x ../libc_pic.a
X # rm __.SYMDEF
X # mv rpc_commondata. rpc_commondata.o
X # mv rpc_dtablesize. rpc_dtablesize.o
X # mv xccs.multibyte. xccs.multibyte.o
X
X6. Delete the file "gethostent.o", and copy in the shared versions you just
X compiled:
X
X # rm gethostent.o
X # cp -p BINDSRC/res/shared/*.o .
X
X7. Change back up one directory (to /usr/lib/shlib.etc), and edit the file
X "lorder-sparc" (it's called "lorder-sparc" on Sun-3 machines too).
X
X 7a. Delete the line for "gethostent.o"
X
X 7b. Add the following lines to the end of the file:
X
X gethostnamadr.o
X herror.o
X res_comp.o
X res_debug.o
X res_init.o
X res_mkquery.o
X res_query.o
X res_send.o
X sethostent.o
X
X8. Run make:
X
X # make libc.so
X
X NOTE: If you do not have "." in root's path (as you shouldn't), you may
X need to modify the Makefile to run "./objsort" instead of "objsort".
X
X9. Now you will have a file libc.so.x.y.z in the current directory. If you
X are on a SPARC, it will probably be called libc.so.1.5.1. If you are on
X a Sun-3, it will probably be called libc.so.0.14.1. Use the environment
X variable LD_LIBRARY_PATH to test things before installing the library.
X You can use "finger" or some other program to try hitting hosts that
X you know are not in YP/NIS but are in the name server:
X
X # setenv LD_LIBRARY_PATH `pwd`
X # finger @your-favorite-hosts
X
X Once you're satisfied that it all works, you can install the new library:
X
X # mv libc.so.x.y.z /usr/lib
X # ldconfig
X # unsetenv LD_LIBRARY_PATH
X
X You can verify that you're running with the new library by using the
X "trace" command on something simple:
X
X # trace date
X
X10. You can delete the "tmp" directory you made in /usr/lib/shlib.etc, as
X well as the file "TMP_FILE" (if present).
X
X11. For completeness, you should rebuild libc.a so that people compiling with
X static linking get the name server routines as well. To do this, I
X suggest making a copy of libc.a with the Sun version number, and then
X updating:
X
X # cp -p /usr/lib/libc.a /usr/lib/libc.a.x.y (e.g. libc.a.1.5)
X # cd BINDSRC/res/obj
X # ar dv /usr/lib/libc.a gethostent.o
X # ar uv /usr/lib/libc.a *.o
X # ranlib /usr/lib/libc.a
X
X12. You will probably want to reboot, so that everything which was started
X before you built the new library can be restarted using the new version.
X
XEnjoy,
X
XDave Curry
XSRI International
Xdavy@itstd.sri.com
SHAR_EOF
if test 4624 -ne "`wc -c < 'README'`"
then
echo shar: error transmitting "'README'" '(should have been 4624 characters)'
fi
fi # end of overwriting check
if test ! -d 'named.patches'
then
echo shar: creating directory "'named.patches'"
mkdir 'named.patches'
fi
echo shar: entering directory "'named.patches'"
cd 'named.patches'
echo shar: extracting "'Makefile.patch'" '(1116 characters)'
if test -f 'Makefile.patch'
then
echo shar: will not over-write existing file "'Makefile.patch'"
else
sed 's/^X//' << \SHAR_EOF > 'Makefile.patch'
X*** /tmp/,RCSt1a00559 Mon Sep 10 13:48:12 1990
X--- Makefile Mon Sep 10 13:11:59 1990
X***************
X*** 9,15 ****
X DEFINES= -DDEBUG -DSTATS
X ### -DALLOW_T_UNSPEC -Dmalloc=rt_malloc -Dfree=rt_free
X ### ALLOC=storage.o
X! CFLAGS= -O ${DEFINES}
X
X RES=
X LIBS= ${RES}
X--- 9,15 ----
X DEFINES= -DDEBUG -DSTATS
X ### -DALLOW_T_UNSPEC -Dmalloc=rt_malloc -Dfree=rt_free
X ### ALLOC=storage.o
X! CFLAGS= -O ${DEFINES} -I../include
X
X RES=
X LIBS= ${RES}
X***************
X*** 29,39 ****
X all: named named-xfer
X
X named: ${OBJS} ${LIBC} version.c
X! sh newvers.sh
X ${CC} -o $@ version.c ${OBJS} ${LIBS}
X
X version.c: Version.c
X! (u=$${USER-root} d=`pwd |sed -e 's|/obj/|/src/'` \
X h=`hostname` t=`date`; \
X sed -e "s|%WHEN%|$${t}|" \
X -e "s|%WHOANDWHERE%|$${u}@$${h}:$${d}|" \
X--- 29,39 ----
X all: named named-xfer
X
X named: ${OBJS} ${LIBC} version.c
X! # sh newvers.sh
X ${CC} -o $@ version.c ${OBJS} ${LIBS}
X
X version.c: Version.c
X! (u=$${USER-root} d=`pwd |sed -e 's|/obj/|/src/|'` \
X h=`hostname` t=`date`; \
X sed -e "s|%WHEN%|$${t}|" \
X -e "s|%WHOANDWHERE%|$${u}@$${h}:$${d}|" \
SHAR_EOF
if test 1116 -ne "`wc -c < 'Makefile.patch'`"
then
echo shar: error transmitting "'Makefile.patch'" '(should have been 1116 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'named-xfer.c.patch'" '(500 characters)'
if test -f 'named-xfer.c.patch'
then
echo shar: will not over-write existing file "'named-xfer.c.patch'"
else
sed 's/^X//' << \SHAR_EOF > 'named-xfer.c.patch'
X*** /tmp/,RCSt1a00562 Mon Sep 10 13:48:19 1990
X--- named-xfer.c Mon Sep 10 13:12:02 1990
X***************
X*** 52,61 ****
X--- 52,68 ----
X #include <syslog.h>
X
X #define XFER /* modifies the ns.h include file */
X+ #include <sys/time.h>
X #include "ns.h"
X #include "pathnames.h"
X
X char *savestr();
X+
X+ #ifdef sun
X+ char *index();
X+ extern char sys_errlist[];
X+ #define strerror(x) sys_errlist[(x)]
X+ #endif
X
X /* max length of data in RR data field */
X #define MAXDATA 2048 /* from db.h */
SHAR_EOF
if test 500 -ne "`wc -c < 'named-xfer.c.patch'`"
then
echo shar: error transmitting "'named-xfer.c.patch'" '(should have been 500 characters)'
fi
fi # end of overwriting check
echo shar: done with directory "'named.patches'"
cd ..
if test ! -d 'nslookup.patches'
then
echo shar: creating directory "'nslookup.patches'"
mkdir 'nslookup.patches'
fi
echo shar: entering directory "'nslookup.patches'"
cd 'nslookup.patches'
echo shar: extracting "'Makefile.patch'" '(363 characters)'
if test -f 'Makefile.patch'
then
echo shar: will not over-write existing file "'Makefile.patch'"
else
sed 's/^X//' << \SHAR_EOF > 'Makefile.patch'
X*** /tmp/,RCSt1a00566 Mon Sep 10 13:48:43 1990
X--- Makefile Mon Sep 10 13:32:46 1990
X***************
X*** 16,22 ****
X #
X # @(#)Makefile 5.20 (Berkeley) 10/2/89
X #
X! CFLAGS= -O
X RES=
X LIBC= /lib/libc.a
X LIBS= -ll ${RES}
X--- 16,22 ----
X #
X # @(#)Makefile 5.20 (Berkeley) 10/2/89
X #
X! CFLAGS= -O -I../../include
X RES=
X LIBC= /lib/libc.a
X LIBS= -ll ${RES}
SHAR_EOF
if test 363 -ne "`wc -c < 'Makefile.patch'`"
then
echo shar: error transmitting "'Makefile.patch'" '(should have been 363 characters)'
fi
fi # end of overwriting check
echo shar: done with directory "'nslookup.patches'"
cd ..
if test ! -d 'resolver.patches'
then
echo shar: creating directory "'resolver.patches'"
mkdir 'resolver.patches'
fi
echo shar: entering directory "'resolver.patches'"
cd 'resolver.patches'
echo shar: extracting "'herror.c.patch'" '(1185 characters)'
if test -f 'herror.c.patch'
then
echo shar: will not over-write existing file "'herror.c.patch'"
else
sed 's/^X//' << \SHAR_EOF > 'herror.c.patch'
X*** /tmp/,RCSt1a00545 Mon Sep 10 13:47:18 1990
X--- herror.c Mon Sep 10 10:36:18 1990
X***************
X*** 24,38 ****
X #include <sys/types.h>
X #include <sys/uio.h>
X
X! char *h_errlist[] = {
X! "Error 0",
X! "Unknown host", /* 1 HOST_NOT_FOUND */
X! "Host name lookup failure", /* 2 TRY_AGAIN */
X! "Unknown server error", /* 3 NO_RECOVERY */
X! "No address associated with name", /* 4 NO_ADDRESS */
X! };
X! int h_nerr = { sizeof(h_errlist)/sizeof(h_errlist[0]) };
X
X extern int h_errno;
X
X /*
X--- 24,34 ----
X #include <sys/types.h>
X #include <sys/uio.h>
X
X! #define H_NERR 5
X
X+ char *h_errlist[H_NERR];
X+ int h_nerr;
X+
X extern int h_errno;
X
X /*
X***************
X*** 44,49 ****
X--- 40,58 ----
X {
X struct iovec iov[4];
X register struct iovec *v = iov;
X+
X+ if (h_nerr == 0) {
X+ h_errlist[0] = "Error 0";
X+ h_errlist[1] = "Unknown host";
X+ /* 1 HOST_NOT_FOUND */
X+ h_errlist[2] = "Host name lookup failure";
X+ /* 2 TRY_AGAIN */
X+ h_errlist[3] = "Unknown server error";
X+ /* 3 NO_RECOVERY */
X+ h_errlist[4] = "No address associated with name";
X+ /* 4 NO_ADDRESS */
X+ h_nerr = H_NERR;
X+ }
X
X if (s && *s) {
X v->iov_base = s;
SHAR_EOF
if test 1185 -ne "`wc -c < 'herror.c.patch'`"
then
echo shar: error transmitting "'herror.c.patch'" '(should have been 1185 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'res_debug.c.patch'" '(2341 characters)'
if test -f 'res_debug.c.patch'
then
echo shar: will not over-write existing file "'res_debug.c.patch'"
else
sed 's/^X//' << \SHAR_EOF > 'res_debug.c.patch'
X*** /tmp/,RCSt1a00548 Mon Sep 10 13:47:19 1990
X--- res_debug.c Mon Sep 10 10:36:20 1990
X***************
X*** 31,74 ****
X extern char *p_cdname(), *p_rr(), *p_type(), *p_class(), *p_time();
X extern char *inet_ntoa();
X
X! char *_res_opcodes[] = {
X! "QUERY",
X! "IQUERY",
X! "CQUERYM",
X! "CQUERYU",
X! "4",
X! "5",
X! "6",
X! "7",
X! "8",
X! "UPDATEA",
X! "UPDATED",
X! "UPDATEDA",
X! "UPDATEM",
X! "UPDATEMA",
X! "ZONEINIT",
X! "ZONEREF",
X! };
X
X- char *_res_resultcodes[] = {
X- "NOERROR",
X- "FORMERR",
X- "SERVFAIL",
X- "NXDOMAIN",
X- "NOTIMP",
X- "REFUSED",
X- "6",
X- "7",
X- "8",
X- "9",
X- "10",
X- "11",
X- "12",
X- "13",
X- "14",
X- "NOCHANGE",
X- };
X-
X p_query(msg)
X char *msg;
X {
X--- 31,40 ----
X extern char *p_cdname(), *p_rr(), *p_type(), *p_class(), *p_time();
X extern char *inet_ntoa();
X
X! int _res_stuff_inited;
X! char *_res_opcodes[16];
X! char *_res_resultcodes[16];
X
X p_query(msg)
X char *msg;
X {
X***************
X*** 87,92 ****
X--- 53,61 ----
X register HEADER *hp;
X register int n;
X
X+ if (!_res_stuff_inited)
X+ init_res_stuff();
X+
X /*
X * Print header fields.
X */
X***************
X*** 494,497 ****
X--- 463,506 ----
X (void)sprintf(p, "%d sec%s", PLURALIZE(secs));
X }
X return(nbuf);
X+ }
X+
X+ static int
X+ init_res_stuff()
X+ {
X+ _res_opcodes[0] = "QUERY";
X+ _res_opcodes[1] = "IQUERY";
X+ _res_opcodes[2] = "CQUERYM";
X+ _res_opcodes[3] = "CQUERYU";
X+ _res_opcodes[4] = "4";
X+ _res_opcodes[5] = "5";
X+ _res_opcodes[6] = "6";
X+ _res_opcodes[7] = "7";
X+ _res_opcodes[8] = "8";
X+ _res_opcodes[9] = "UPDATEA";
X+ _res_opcodes[10] = "UPDATED";
X+ _res_opcodes[11] = "UPDATEDA";
X+ _res_opcodes[12] = "UPDATEM";
X+ _res_opcodes[13] = "UPDATEMA";
X+ _res_opcodes[14] = "ZONEINIT";
X+ _res_opcodes[15] = "ZONEREF";
X+
X+ _res_resultcodes[0] = "NOERROR";
X+ _res_resultcodes[1] = "FORMERR";
X+ _res_resultcodes[2] = "SERVFAIL";
X+ _res_resultcodes[3] = "NXDOMAIN";
X+ _res_resultcodes[4] = "NOTIMP";
X+ _res_resultcodes[5] = "REFUSED";
X+ _res_resultcodes[6] = "6";
X+ _res_resultcodes[7] = "7";
X+ _res_resultcodes[8] = "8";
X+ _res_resultcodes[9] = "9";
X+ _res_resultcodes[10] = "10";
X+ _res_resultcodes[11] = "11";
X+ _res_resultcodes[12] = "12";
X+ _res_resultcodes[13] = "13";
X+ _res_resultcodes[14] = "14";
X+ _res_resultcodes[15] = "NOCHANGE";
X+
X+ _res_stuff_inited = 1;
X }
SHAR_EOF
if test 2341 -ne "`wc -c < 'res_debug.c.patch'`"
then
echo shar: error transmitting "'res_debug.c.patch'" '(should have been 2341 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'res_init.c.patch'" '(1143 characters)'
if test -f 'res_init.c.patch'
then
echo shar: will not over-write existing file "'res_init.c.patch'"
else
sed 's/^X//' << \SHAR_EOF > 'res_init.c.patch'
X*** /tmp/,RCSt1a00551 Mon Sep 10 13:47:20 1990
X--- res_init.c Mon Sep 10 11:09:14 1990
X***************
X*** 32,43 ****
X * Resolver state default settings
X */
X
X! struct state _res = {
X! RES_TIMEOUT, /* retransmition time interval */
X! 4, /* number of times to retransmit */
X! RES_DEFAULT, /* options flags */
X! 1, /* number of name servers */
X! };
X
X /*
X * Set up default settings. If the configuration file exist, the values
X--- 32,38 ----
X * Resolver state default settings
X */
X
X! struct state _res;
X
X /*
X * Set up default settings. If the configuration file exist, the values
X***************
X*** 62,67 ****
X--- 57,67 ----
X int nserv = 0; /* number of nameserver records read from file */
X int haveenv = 0;
X int havesearch = 0;
X+
X+ _res.retrans = RES_TIMEOUT; /* retransmition time interval */
X+ _res.retry = 4; /* number of times to retransmit */
X+ _res.options = RES_DEFAULT; /* options flags */
X+ _res.nscount = 1; /* number of name servers */
X
X _res.nsaddr.sin_addr.s_addr = INADDR_ANY;
X _res.nsaddr.sin_family = AF_INET;
SHAR_EOF
if test 1143 -ne "`wc -c < 'res_init.c.patch'`"
then
echo shar: error transmitting "'res_init.c.patch'" '(should have been 1143 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'res_send.c.patch'" '(637 characters)'
if test -f 'res_send.c.patch'
then
echo shar: will not over-write existing file "'res_send.c.patch'"
else
sed 's/^X//' << \SHAR_EOF > 'res_send.c.patch'
X*** /tmp/,RCSt1a00554 Mon Sep 10 13:47:21 1990
X--- res_send.c Mon Sep 10 11:12:12 1990
X***************
X*** 37,43 ****
X
X extern int errno;
X
X! static int s = -1; /* socket used for communications */
X static struct sockaddr no_addr;
X
X
X--- 37,44 ----
X
X extern int errno;
X
X! static int s; /* socket used for communications */
X! static int herebefore;
X static struct sockaddr no_addr;
X
X
X***************
X*** 69,74 ****
X--- 70,80 ----
X struct iovec iov[2];
X int terrno = ETIMEDOUT;
X char junk[512];
X+
X+ if (!herebefore) {
X+ herebefore = 1;
X+ s = -1;
X+ }
X
X #ifdef DEBUG
X if (_res.options & RES_DEBUG) {
SHAR_EOF
if test 637 -ne "`wc -c < 'res_send.c.patch'`"
then
echo shar: error transmitting "'res_send.c.patch'" '(should have been 637 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'Makefile'" '(1615 characters)'
if test -f 'Makefile'
then
echo shar: will not over-write existing file "'Makefile'"
else
sed 's/^X//' << \SHAR_EOF > 'Makefile'
X#
X# Makefile for DNS resolver routines. Compiles for "regular" libc and
X# SunOS 4.1 shared libraries.
X#
X# David A. Curry
X# SRI International
X# davy@itstd.sri.com
X#
XDEFS= -DBSD=43 -I../include
X# for unshared libraries
XUCFLAGS= -O $(DEFS)
X# for shared libraries
XSCFLAGS= -O -R -pic $(DEFS)
X
XSRCS= herror.c res_comp.c res_debug.c res_init.c res_mkquery.c res_query.c \
X res_send.c named/gethostnamadr.c named/sethostent.c
XUOBJS= obj/gethostnamadr.o obj/herror.o obj/res_comp.o obj/res_debug.o \
X obj/res_init.o obj/res_mkquery.o obj/res_query.o obj/res_send.o \
X obj/sethostent.o
XSOBJS= shared/gethostnamadr.o shared/herror.o shared/res_comp.o \
X shared/res_debug.o shared/res_init.o shared/res_mkquery.o \
X shared/res_query.o shared/res_send.o shared/sethostent.o
X
Xall: obj-files shared-files
X
Xobj-files: obj $(UOBJS)
X
Xshared-files: shared $(SOBJS)
X
X$(UOBJS):
X $(CC) $(UCFLAGS) -c $? -o tmp.o
X mv tmp.o $@
X
X$(SOBJS):
X $(CC) $(SCFLAGS) -c $? -o tmp.o
X mv tmp.o $@
X
Xobj:
X -mkdir obj
X
Xshared:
X -mkdir shared
X
Xclean:
X rm -f $(SOBJS) $(UOBJS)
X
Xobj/gethostnamadr.o: named/gethostnamadr.c
Xobj/herror.o: herror.c
Xobj/res_comp.o: res_comp.c
Xobj/res_debug.o: res_debug.c
Xobj/res_init.o: res_init.c
Xobj/res_mkquery.o: res_mkquery.c
Xobj/res_query.o: res_query.c
Xobj/res_send.o: res_send.c
Xobj/sethostent.o: named/sethostent.c
Xshared/gethostnamadr.o: named/gethostnamadr.c
Xshared/herror.o: herror.c
Xshared/res_comp.o: res_comp.c
Xshared/res_debug.o: res_debug.c
Xshared/res_init.o: res_init.c
Xshared/res_mkquery.o: res_mkquery.c
Xshared/res_query.o: res_query.c
Xshared/res_send.o: res_send.c
Xshared/sethostent.o: named/sethostent.c
SHAR_EOF
if test 1615 -ne "`wc -c < 'Makefile'`"
then
echo shar: error transmitting "'Makefile'" '(should have been 1615 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'gethostnamadr.c.patch'" '(669 characters)'
if test -f 'gethostnamadr.c.patch'
then
echo shar: will not over-write existing file "'gethostnamadr.c.patch'"
else
sed 's/^X//' << \SHAR_EOF > 'gethostnamadr.c.patch'
X*** /tmp/,RCSt1a00573 Mon Sep 10 13:50:52 1990
X--- gethostnamadr.c Mon Sep 10 11:06:59 1990
X***************
X*** 40,49 ****
X static char hostbuf[BUFSIZ+1];
X static struct in_addr host_addr;
X static char HOSTDB[] = "/etc/hosts";
X! static FILE *hostf = NULL;
X static char hostaddr[MAXADDRS];
X static char *host_addrs[2];
X! static int stayopen = 0;
X char *strpbrk();
X
X #if PACKETSZ > 1024
X--- 40,49 ----
X static char hostbuf[BUFSIZ+1];
X static struct in_addr host_addr;
X static char HOSTDB[] = "/etc/hosts";
X! static FILE *hostf;
X static char hostaddr[MAXADDRS];
X static char *host_addrs[2];
X! static int stayopen;
X char *strpbrk();
X
X #if PACKETSZ > 1024
SHAR_EOF
if test 669 -ne "`wc -c < 'gethostnamadr.c.patch'`"
then
echo shar: error transmitting "'gethostnamadr.c.patch'" '(should have been 669 characters)'
fi
fi # end of overwriting check
echo shar: done with directory "'resolver.patches'"
cd ..
# End of shell archive
exit 0
This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:05:58 CDT