Patches and instructions to use BIND 4.8.3 resolver on SunOS 4.1

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..http://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

[25366 byte] By [CodeProf.com] at [2007-12-25 7:14:00]