home *** CD-ROM | disk | FTP | other *** search
Text File | 1988-09-11 | 25.2 KB | 1,035 lines |
- Subject: v09i048: UUmail 4.X patch
- Newsgroups: mod.sources
- Approved: rs@mirror.TMC.COM
-
- Submitted by: rice!cortex!sob (Stan Barber)
- Mod.sources: Volume 9, Issue 48
- Archive-name: uumail.pch
-
- [ The version published in Volume 8 of mod.sources had already integrated
- Patch 1. --r$ ]
-
- System: uumail version 4.2
- Patch #: 2
- Priority: REQUIRED
- Subject: General fixes to getpath.c rmail.c uumail.c Configure Makefile.SH
- From: smb!dave, atelabs!cds
-
- Description:
- Some typos in the declaration of Version and bangpath. The Putfrom
- routine was not rebuilding the From_ line correctly. Configure
- needed to identify 8086 and z8000 machines for their need for
- seperate I and D. Default log, Alias and paths files are now
- created if the user wants them created. Getpaths calls uuname
- twice when it only has to call it once. Makefile will not protect
- the naive installed from killing his copy of REALUUX. uumail can
- now double as address as well as uupath.
-
- Repeat by:
- Feed uumail a message with lots of From_ lines and see what Putfrom
- does when it rebuilds them. The Configure problems are obvious ones.
- rmail did not make sure that the argv was terminated with NULL.
-
- Fix: Fix the typos. Add the code to fix the problems in Putfrom.
- Replace the code in getpaths to call uuname only once and make
- a linked list. Fix Makefile. Add support for address into uumail.
-
- From rn, say "| patch -d DIR", where DIR is your rn source directory.
- Outside of rn, say "cd DIR; patch <thisarticle". If you don't have
- the patch program, apply the following by hand, or get patch.
-
-
- Stan Barber
- {shell,rice,soma}!academ!sob
-
-
- Index: pathlevel.h
- Prereq: 1
- *** patchlevel.BAK Tue Mar 17 13:09:28 1987
- --- patchlevel.h Tue Mar 17 15:38:14 1987
- ***************
- *** 1,2 ****
- ! #define PATCHLEVEL 1
- ! static char *Version[] = "uumail 4.2 02/02/87";
- --- 1,2 ----
- ! #define PATCHLEVEL 2
- ! static char Version[] = "uumail 4.3 03/18/87";
-
- Index:Makefile.SH
- Prereq: 1.2
- *** /tmp/,RCSt1003969 Wed Mar 18 13:58:36 1987
- --- /tmp/,RCSt2003969 Wed Mar 18 13:58:37 1987
- ***************
- *** 8,14 ****
- # program to integrate with pathalias created uucpmap databases
- # programs originally developed by Jeff Donnelly
- # updated to use pathalias database by Stan Barber
- ! # $Header: Makefile.SH,v 1.2 86/12/15 13:27:53 sob Exp $
- #***************************************************************************
- # This work in its current form is Copyright 1986 Stan Barber
- # with the exception of resolve, gethostname and the original getpath which
- --- 8,14 ----
- # program to integrate with pathalias created uucpmap databases
- # programs originally developed by Jeff Donnelly
- # updated to use pathalias database by Stan Barber
- ! # $Header: Makefile.SH,v 1.4 87/03/18 13:58:00 sob Exp $
- #***************************************************************************
- # This work in its current form is Copyright 1986 Stan Barber
- # with the exception of resolve, gethostname and the original getpath which
- ***************
- *** 49,55 ****
- .h,v.h:
- co -q $*.h
-
- ! all: uumail rmail address uux
-
- cobj=getpath.o resolve.o
-
- --- 49,55 ----
- .h,v.h:
- co -q $*.h
-
- ! all: uumail rmail uux
-
- cobj=getpath.o resolve.o
-
- ***************
- *** 57,77 ****
-
- robj= rmail.o gethostnam.o
-
- ! aobj= address.o $(cobj)
-
- ! obj= $(aobj) $(uobj) $(robj)
-
- uumail: $(uobj)
- $(CC) $(CFLAGS) $(uobj) -o uumail $(LIBS)
-
- - address:$(aobj)
- - $(CC) $(CFLAGS) $(aobj) -o address $(LIBS)
- -
- rmail: $(robj)
- $(CC) $(CFLAGS) $(robj) -o rmail $(LIBS)
-
- ! install: uumail address palias
- ! $(CP) address $(BINDIR)
- $(CP) uumail $(UUCPDIR)
- $(CP) uumail.8 $(MANDIR)/man8
- $(CP) address.1 $(MANDIR)/man1
- --- 57,77 ----
-
- robj= rmail.o gethostnam.o
-
- ! uuxobj= uux.c
-
- ! obj= $(uobj) $(robj) $(uuxobj)
-
- uumail: $(uobj)
- $(CC) $(CFLAGS) $(uobj) -o uumail $(LIBS)
-
- rmail: $(robj)
- $(CC) $(CFLAGS) $(robj) -o rmail $(LIBS)
-
- ! uux: $(uuxobj)
- ! $(CC) $(CFLAGS) $(uuxobj) -o uux $(LIBS)
- !
- ! install: uumail palias
- ! $(CP) uumail $(BINDIR)/address
- $(CP) uumail $(UUCPDIR)
- $(CP) uumail.8 $(MANDIR)/man8
- $(CP) address.1 $(MANDIR)/man1
- ***************
- *** 89,99 ****
- $(RM) -rf /bin/rmail
- $(CP) rmail /bin/rmail
-
- ! fakeuux: uux
- make install
- $(CP) /usr/bin/uux $(REALUUX)
- $(CP) uux /usr/bin/uux
- ! chmod 6755 /usr/bin/uux
-
- lint:
- lint $(CFLAGS) getpath.c uumail.c gethostnam.c resolve.c alias.c
- --- 89,102 ----
- $(RM) -rf /bin/rmail
- $(CP) rmail /bin/rmail
-
- ! fakeuux: uux /usr/bin/uux
- make install
- + export PATH || exit 1
- + if test -x $(REALUUX); then $(CP) $(REALUUX) $(REALUUX).old; fi
- $(CP) /usr/bin/uux $(REALUUX)
- $(CP) uux /usr/bin/uux
- ! chown root /usr/bin/uux
- ! chmod 4755 /usr/bin/uux
-
- lint:
- lint $(CFLAGS) getpath.c uumail.c gethostnam.c resolve.c alias.c
-
- Index: Configure
- Prereq: 1.12
- *** /tmp/,RCSt1004039 Wed Mar 18 14:19:52 1987
- --- /tmp/,RCSt2004039 Wed Mar 18 14:19:57 1987
- ***************
- *** 1,11 ****
- ! #! /bin/sh
- #
- # If these # comments don't work, trim them. Don't worry about the other
- # shell scripts, Configure will trim # comments from them for you.
- #
- ! # $Header: Configure,v 1.12 87/02/02 15:44:21 sob Exp $
- #
- # $Log: Configure,v $
- # Revision 1.12 87/02/02 15:44:21 sob
- # Added localflags option
- #
- --- 1,23 ----
- ! #!/bin/sh
- #
- # If these # comments don't work, trim them. Don't worry about the other
- # shell scripts, Configure will trim # comments from them for you.
- #
- ! # $Header: Configure,v 1.15 87/03/18 14:18:38 sob Exp $
- #
- # $Log: Configure,v $
- + # Revision 1.15 87/03/18 14:18:38 sob
- + # Minor language and appearance things
- + #
- + # Revision 1.14 87/03/17 15:49:51 sob
- + # More fixes
- + #
- + # Revision 1.13 87/03/17 14:49:06 sob
- + # Added checks for other seperate i and d processors
- + # Added options for creating the Alias and Paths files if
- + # they did not previously exist.
- + # Other fixes.
- + #
- # Revision 1.12 87/02/02 15:44:21 sob
- # Added localflags option
- #
- ***************
- *** 388,394 ****
- --- 400,445 ----
- else
- echo "This doesn't look like a pdp11 to me."
- fi
- + : check for i8086
- + echo " "
- + cat <<'EOT' >i8086.c
- + #ifdef i8086
- + exit 0
- + #else
- + exit 1
- + #endif
- + EOT
- + $cpp i8086.c | grep exit >i8086
- + chmod 755 i8086
- + $eunicefix i8086
- + rm i8086.c
-
- + if i8086; then
- + echo "This looks like an 8086-based computer to me."
- + else
- + echo "This doesn't look like an 8086-based computer to me."
- + fi
- +
- + : check for z8000
- + echo " "
- + cat <<'EOT' >z8000.c
- + #ifdef z8000
- + exit 0
- + #else
- + exit 1
- + #endif
- + EOT
- + $cpp z8000.c | grep exit >z8000
- + chmod 755 z8000
- + $eunicefix z8000
- + rm z8000.c
- +
- + if z8000; then
- + echo "This looks like a z8000-based computer to me."
- + else
- + echo "This doesn't look like a z8000-based computer to me."
- + fi
- +
- : see if sh knows # comments
- echo " "
- echo "Checking your sh to see if it knows about # comments..."
- ***************
- *** 803,809 ****
- $echo " "
- case "$libexp" in
- blurfl*) ;;
- ! *) $echo "File $libexp not found";;
- esac
- $echo $n "Where is your uumail log file (~name okay)? [$dflt] $c"
- . myread
- --- 854,868 ----
- $echo " "
- case "$libexp" in
- blurfl*) ;;
- ! *) $echo "File $libexp not found"
- ! $echo $n "Shall I create it for you? $c"
- ! . myread
- ! case "$ans" in
- ! y*) $echo $n "OK... I will create it for you... $c"
- ! cp /dev/null $libexp
- ! $echo "done" ;;
- ! esac
- ! ;;
- esac
- $echo $n "Where is your uumail log file (~name okay)? [$dflt] $c"
- . myread
- ***************
- *** 865,871 ****
- $echo " "
- case "$libexp" in
- blurfl*) ;;
- ! *) $echo "File $libexp not found";;
- esac
- $echo $n "Where is your uucp map database (~name okay)? [$dflt] $c"
- . myread
- --- 924,943 ----
- $echo " "
- case "$libexp" in
- blurfl*) ;;
- ! *) $echo "File $libexp not found"
- ! $echo $n "Shall I create it for you? $c"
- ! . myread
- ! case "$ans" in
- ! y*) $echo $n "OK... I will create it for you... $c"
- ! for i in `cat uucp.local`
- ! do
- ! $echo "$i $i!%s" >> $libexp
- ! done
- ! $echo "done" ;;
- ! *) $echo "OK, you create it and run Configure when you are done."
- ! exit 1 ;;
- ! esac
- ! ;;
- esac
- $echo $n "Where is your uucp map database (~name okay)? [$dflt] $c"
- . myread
- ***************
- *** 948,954 ****
- $echo " "
- case "$libexp" in
- blurfl*) ;;
- ! *) $echo "File $libexp not found";;
- esac
- $echo $n "Where is your aliases file (~name okay)? [$dflt] $c"
- . myread
- --- 1020,1036 ----
- $echo " "
- case "$libexp" in
- blurfl*) ;;
- ! *) $echo "File $libexp not found"
- ! $echo $n "Shall I create it for you? $c"
- ! . myread
- ! case "$ans" in
- ! y*) $echo $n "OK... I will create it for you... $c"
- ! $echo "Postmaster: root" > $libexp
- ! $echo "done" ;;
- ! *) $echo "OK, you create it and run Configure when you are done."
- ! exit 1 ;;
- ! esac
- ! ;;
- esac
- $echo $n "Where is your aliases file (~name okay)? [$dflt] $c"
- . myread
- ***************
- *** 1221,1227 ****
-
- : see if we should throw a -i into the Makefile
- $echo " "
- ! if pdp11; then
- if $contains '\-i' $mansrc/cc.1 >/dev/null 2>&1 ; then
- $echo $n "Your system appears to have separate I and D space. Is this true? [y] $c"
- . myread
- --- 1303,1309 ----
-
- : see if we should throw a -i into the Makefile
- $echo " "
- ! if pdp11 || i8086 || z8000; then
- if $contains '\-i' $mansrc/cc.1 >/dev/null 2>&1 ; then
- $echo $n "Your system appears to have separate I and D space. Is this true? [y] $c"
- . myread
- ***************
- *** 1239,1245 ****
- esac
- fi
- else
- ! $echo "Not a pdp11--assuming no separate I and D."
- fi
-
- : index or strcpy
- --- 1321,1327 ----
- esac
- fi
- else
- ! $echo "Not a pdp11 or i8086 or z8000 --assuming no separate I and D."
- fi
-
- : index or strcpy
- ***************
- *** 1882,1886 ****
- case "$ans" in
- y*) makedepend;;
- esac
- ! $rm -f uucp.local myread loc filexp bsd pdp11 v7 usg eunice
- ! : end of Configure
- --- 1964,1967 ----
- case "$ans" in
- y*) makedepend;;
- esac
- ! $rm -f uucp.local myread loc filexp bsd pdp11 z8000 i8086 v7 usg eunice
-
- Index: uumail.c
- Prereq: 4.2
- *** /tmp/,RCSt1003985 Wed Mar 18 14:00:02 1987
- --- /tmp/,RCSt2003985 Wed Mar 18 14:00:07 1987
- ***************
- *** 20,25 ****
- --- 20,34 ----
- or any damage it may cause to any data of any kind anywhere.
- ***************************************************************************
- * $Log: uumail.c,v $
- + * Revision 4.4 87/03/18 13:53:44 sob
- + * More fixes to Putfrom. Added support for uumail acting as the
- + * address command. Some cleanup of parts of the code.
- + *
- + * Revision 4.3 87/03/17 14:48:15 sob
- + * Made some minor changes in Putfrom suggest by smail 2.3 posting.
- + * Other bug fixes as well.
- + * Stan
- + *
- * Revision 4.2 87/02/02 15:43:50 sob
- * Added fix for lost line at the beginning of the message problems
- *
- ***************
- *** 206,213 ****
- --- 215,224 ----
-
- #include "uuconf.h"
- #include "patchlevel.h"
- + #include <time.h>
-
- EXTERN bool uupath;
- + EXTERN bool addrcmd;
- extern int errno;
- extern struct passwd *getpwuid();
- extern FILE *popen();
- ***************
- *** 221,227 ****
- extern bool nghborflag;
- EXTERN char progname[12];
- EXTERN char *paths;
- ! char * bangpath[BUFSIZ];
- char templet[64];
- struct mailname addrlist; /* list of addresses */
- int local;
- --- 232,238 ----
- extern bool nghborflag;
- EXTERN char progname[12];
- EXTERN char *paths;
- ! char bangpath[BUFSIZ];
- char templet[64];
- struct mailname addrlist; /* list of addresses */
- int local;
- ***************
- *** 276,283 ****
- if (p++ == NULL)
- p = *av;
- strcpy(progname ,p);
- ! if(strcmp(p,"uupath") == 0)
- uupath = TRUE;
- while ((p = *++av) != NULL && p[0] == '-')
- {
- switch (p[1])
- --- 287,296 ----
- if (p++ == NULL)
- p = *av;
- strcpy(progname ,p);
- ! if(strcmp(p,"uupath") == 0) /* this is the uupath command */
- uupath = TRUE;
- + if(strcmp(p,"address") == 0) /* this is the address command */
- + addrcmd = TRUE;
- while ((p = *++av) != NULL && p[0] == '-')
- {
- switch (p[1])
- ***************
- *** 402,408 ****
-
- /* If this is not uupath, then there must be a letter */
-
- ! if (!uupath)
- {
- #ifdef DEBUG
- if (Debug) (void) printf("Mail from %s\n",from);
- --- 415,421 ----
-
- /* If this is not uupath, then there must be a letter */
-
- ! if (!uupath && !addrcmd)
- {
- #ifdef DEBUG
- if (Debug) (void) printf("Mail from %s\n",from);
- ***************
- *** 494,521 ****
- }
- r = malloc(PATHSIZ);
- strcpy(r,p);
- ! if (index(p,'@') != NULL) handle = ALL;
- /* try one */
- ! form = resolve(p,path,user);
- if ( (form == LOCAL && path[0] == '\0')
- || form == ERROR || form == ROUTE || form == DOMAIN){
- ! if (user[0] != '\0') strcpy(p,user);
- path[0] = user[0] = '\0';
- /* try two */
- ! if (index(p,'@') != NULL) handle = ALL;
- ! form = resolve(p,path,user);
- }
- /* we could punt at this point, but let's forward it to a known
- host that might be able to resolve it */
-
- #ifdef KNOWNHOST /* ugly... alternate suggestions welcome */
- ! if ( (exitstat || form == ERROR)
- ! && (index(r,'@') != NULL || index(r,'!') != NULL) ){
- ! strcpy(p,KNOWNHOST);
- ! strcat(p,"!");
- ! strcat(p,r);
- user[0] = '\0';
- ! form = resolve(p,path,user);
- }
- #endif
-
- --- 507,534 ----
- }
- r = malloc(PATHSIZ);
- strcpy(r,p);
- ! if (index(r,'@') != NULL) handle = ALL;
- /* try one */
- ! form = resolve(r,path,user);
- if ( (form == LOCAL && path[0] == '\0')
- || form == ERROR || form == ROUTE || form == DOMAIN){
- ! if (user[0] != '\0') strcpy(r,user);
- path[0] = user[0] = '\0';
- /* try two */
- ! if (index(r,'@') != NULL) handle = ALL;
- ! form = resolve(r,path,user);
- }
- /* we could punt at this point, but let's forward it to a known
- host that might be able to resolve it */
-
- #ifdef KNOWNHOST /* ugly... alternate suggestions welcome */
- ! if ((addrcmd == FALSE) && (((exitstat || form == ERROR)
- ! && (index(p,'@') != NULL || index(p,'!') != NULL) ))){
- ! strcpy(r,KNOWNHOST);
- ! strcat(r,"!");
- ! strcat(r,p);
- user[0] = '\0';
- ! form = resolve(r,path,user);
- }
- #endif
-
- ***************
- *** 527,535 ****
- if (exitstat || form == ERROR )
- /* no match in pathalias database */
- {
- ! deadletter(tmpf,local,exitstat,p);
- ! unlink(templet);
- ! exit(exitstat);
- }
-
-
- --- 540,555 ----
- if (exitstat || form == ERROR )
- /* no match in pathalias database */
- {
- ! if (addrcmd) {
- ! fprintf(stderr,"%s cannot be resolved.\n",
- ! lp->m_name);
- ! break;
- ! } else {
- ! deadletter(tmpf,local,exitstat,p);
- ! unlink(templet);
- ! exit(exitstat); /* this may be the wrong approach */
- ! }
- !
- }
-
-
- ***************
- *** 539,545 ****
- local = 1;
- }
- } /* end of else uupath */
- ! #else
- else
- {
- p = index(q,'!');
- --- 559,565 ----
- local = 1;
- }
- } /* end of else uupath */
- ! #else /* not RESOLVE */
- else
- {
- p = index(q,'!');
- ***************
- *** 565,576 ****
- }
- }
- }
- ! #endif
-
- #ifdef DEBUG
- if(Debug>3)
- (void) fprintf(stderr,
- ! "p = %s path = %s user = %s\n",p, path,user);
- #endif
-
- if (uupath)
- --- 585,596 ----
- }
- }
- }
- ! #endif /* end RESOLVE */
-
- #ifdef DEBUG
- if(Debug>3)
- (void) fprintf(stderr,
- ! "address = %s path = %s user = %s\n",p, path,user);
- #endif
-
- if (uupath)
- ***************
- *** 580,585 ****
- --- 600,611 ----
- lp->m_name,path);
- continue;
- }
- + else if (addrcmd)
- + {
- + (void) printf("Address %s resolves to %s!%s.\n",
- + lp->m_name, path, user);
- + continue;
- + }
- else
- {
- if (local)
- ***************
- *** 619,624 ****
- --- 645,656 ----
- }
- }
- pipeout:
- +
- + if(addrcmd)
- + {
- + printf("Address %s pipes output to %s.\n",lp->m_name,cmd);
- + continue;
- + } else {
- #ifdef DEBUG
- if (Debug) (void) fprintf(stderr,"Command is %s\n",cmd);
- #endif
- ***************
- *** 658,663 ****
- --- 690,696 ----
- #ifdef LOG
- maillog(cmd);
- #endif
- + }
- }
- }
- #ifdef DEBUG
- ***************
- *** 684,691 ****
- char *asctime();
- struct tm *bp, *localtime();
- char *tp, *zp,*c;
- ! int parts,fromflag=0;
- ! char *partv[16];
- char buf[BUFSIZ], addr[PATHSIZ], domain[PATHSIZ], user[NAMESIZ];
- int form;
- extern build();
- --- 717,724 ----
- char *asctime();
- struct tm *bp, *localtime();
- char *tp, *zp,*c;
- ! int i,parts,fromflag=0;
- ! char *partv[128];
- char buf[BUFSIZ], addr[PATHSIZ], domain[PATHSIZ], user[NAMESIZ];
- int form;
- extern build();
- ***************
- *** 745,750 ****
- --- 778,811 ----
- */
- if (bangpath[0] == '\0') strcpy(bangpath,from);
-
- + parts = ssplit(bangpath,'!',partv);
- + /* null terminate each part of partv */
- + for (i = 0;i < (parts-1);i++){
- + tp = partv[i];
- + if(*tp == '\0') continue;
- + zp = partv[i+1];
- + zp--;
- + *zp = '\0';
- + zp++;
- + }
- + /* now eliminate duplicate parts */
- + for (i = 0; i < ( parts - 2) ; i++){
- + tp = partv[i];
- + zp = partv[i+1];
- + if(strcmp(tp,zp) == 0)
- + *tp = '\0';
- + }
- + buf[0] = '\0';
- + /* reassemble the line */
- + for ( i = 0;i<(parts-1);i++){
- + if ((partv[i][0] == '\0') || ((buf[0] == '\0') &&
- + (strcmp(partv[i],Myname) == 0))) continue;
- + (void) strcat(buf,partv[i]);
- + (void) strcat(buf, "!");
- + }
- +
- + (void) strcat(buf,partv[i]);
- + (void) strcpy(bangpath,buf); /* overwrite old bangpath */
- /*
- * Format time
- */
-
- Index: getpath.c
- Prereq: 4.0
- *** /tmp/,RCSt1004133 Wed Mar 18 14:59:23 1987
- --- /tmp/,RCSt2004133 Wed Mar 18 14:59:26 1987
- ***************
- *** 39,44 ****
- --- 39,50 ----
- * modified to rewind path file (if open), rather than open again
- *
- * $Log: getpath.c,v $
- + * Revision 4.2 87/03/18 13:54:28 sob
- + * Added some fixes to handle domain searches better.
- + *
- + * Revision 4.1 87/03/17 14:47:44 sob
- + * Replaced old getneighbors with a new version supplied by smb!dave
- + *
- * Revision 4.0 86/11/17 16:02:15 sob
- * Release version 4.0 -- uumail
- *
- ***************
- *** 160,178 ****
- #include <sys/stat.h>
- #endif
-
- ! static char rcsid[] = "$Header: getpath.c,v 4.0 86/11/17 16:02:15 sob Exp $";
- extern char * index();
- !
- extern FILE * fopen (), *popen();
- FILE * in;
- bool nghborflag,gotneighbors;
- - char **neighbors, *n_array; /* rct */
-
- int getpath (sysname, pathname, pathfile)
- char *sysname, *pathname,*pathfile;
- {
- ! int indx,x;
- char ACsysname[NAMESIZ]; /* alternate case sysname */
- #ifdef UUDBM
- datum lhs,rhs;
- #else
- --- 166,192 ----
- #include <sys/stat.h>
- #endif
-
- ! static char rcsid[] = "$Header: getpath.c,v 4.2 87/03/18 13:54:28 sob Exp $";
- extern char * index();
- ! extern char * malloc();
- extern FILE * fopen (), *popen();
- FILE * in;
- bool nghborflag,gotneighbors;
-
- + struct system {
- + char *s_name;
- + struct system *s_next;
- + };
- +
- + static struct system head = {NULL, NULL};
- +
- +
- int getpath (sysname, pathname, pathfile)
- char *sysname, *pathname,*pathfile;
- {
- ! int indx,x,t;
- char ACsysname[NAMESIZ]; /* alternate case sysname */
- + struct system *sys = &head;
- #ifdef UUDBM
- datum lhs,rhs;
- #else
- ***************
- *** 187,207 ****
- long last;
- static char buf[256];
- #else
- ! char * p, * q, t;
- #endif
- #endif
-
-
- /* build sysname in the alternate case to conform to methods in SMAIL */
- ! if (*(sysname) == '.' || isupper(*sysname)) /* a kludge */
- {
- for (x=0;x<strlen(sysname);x++)
- ! ACsysname[x] = tolower(*(sysname+x));
- }
- else
- {
- for (x=0;x<strlen(sysname);x++)
- ! ACsysname[x] = toupper(*(sysname+x));
- }
-
- if (x < NAMESIZ) ACsysname[x] = '\0';
- --- 201,226 ----
- long last;
- static char buf[256];
- #else
- ! char * p, * q;
- #endif
- #endif
-
-
- /* build sysname in the alternate case to conform to methods in SMAIL */
- ! if ((*(sysname) == '.' && isupper (*(sysname+1))) ||
- ! isupper (*sysname)) /* a kludge */
- {
- for (x=0;x<strlen(sysname);x++)
- ! if (*(sysname+x) != '.')
- ! ACsysname[x] = tolower(*(sysname+x));
- ! else ACsysname[x] = '.';
- }
- else
- {
- for (x=0;x<strlen(sysname);x++)
- ! if (*(sysname+x) != '.')
- ! ACsysname[x] = toupper(*(sysname+x));
- ! else ACsysname[x] = '.';
- }
-
- if (x < NAMESIZ) ACsysname[x] = '\0';
- ***************
- *** 216,229 ****
- if (gotneighbors != TRUE) getneighbors();
- indx = 0;
- /* is it a neighbor? */
- ! while(neighbors[indx] != NULL && *(neighbors[indx]) != '\0'){
- ! if(!strcmp(sysname, neighbors[indx])
- ! || !strcmp(ACsysname,neighbors[indx])){
- ! strcpy(pathname, neighbors[indx]);
- ! strcat(pathname, "!%s");
- return(EX_OK);
- }
- ! indx++;
- }
- }
- /* not a neighbor, let's look in the database */
- --- 235,249 ----
- if (gotneighbors != TRUE) getneighbors();
- indx = 0;
- /* is it a neighbor? */
- ! /* thanks to smb!dave for the suggested revision */
- ! while(sys->s_name){
- ! if (!strcmp(sysname,sys->s_name)
- ! || !strcmp(ACsysname,sys->s_name)){
- ! strcpy(pathname,sys->s_name);
- ! strcat(pathname,"!%s");
- return(EX_OK);
- }
- ! sys = sys->s_next;
- }
- }
- /* not a neighbor, let's look in the database */
- ***************
- *** 397,491 ****
- }
- #endif
-
- ! getneighbors()
- ! {
- ! FILE *ppntr;
- ! char * ptr;
- ! int x = 0;
- ! char n_neigh[16], *calloc(); /* rct */
- ! int nelem = 0; /* rct */
-
- ! gotneighbors = TRUE;
- !
- ! /*
- ! * Let's get the number of neighbors we have.
- ! *
- ! * Beginning of added code. --rct
- ! */
- !
- ! if((ppntr = popen("uuname | wc -l", "r")) != NULL){
- ! #ifdef DEBUG
- ! if(Debug > 2)
- ! (void)fprintf(stderr, "Starting uuname | wc -l\n");
- #endif
- }
- ! else{
- ! (void)fprintf(stderr, "Error: popen\(\"uuname | wc -l\"\)\n");
- ! exit(1);
- }
- ! if((fgets(n_neigh, sizeof(n_neigh), ppntr)) != (char *)0){
- ! if((ptr = index(n_neigh, '\n')) != (char *)0)
- ! *ptr = '\0';
- ! }
- ! else{
- ! (void)fprintf(stderr, "Error: fgets\(n_neigh\)\n");
- ! exit(2);
- ! }
- ! #ifdef DEBUG
- ! if (Debug > 2)
- ! (void)fprintf(stderr, "n_neigh = %s\n", n_neigh);
- ! #endif
- ! (void)pclose(ppntr);
- !
- ! /*
- ! * Allocate storage for neighbors based on n_neigh.
- ! * Assumption being made here is that no system has a name
- ! * longer than 14 characters. If this assumption ever turns
- ! * out to be wrong, lots of other code will break before this
- ! * does! --rct
- ! */
- !
- ! nelem = atoi(n_neigh) + 2;
- !
- ! if(((neighbors = (char **)calloc((unsigned)nelem,
- ! sizeof(char **))) == (char **)0) ||
- ! ((n_array = calloc((unsigned)nelem, 15)) == (char *)0)){
- ! (void)fprintf(stderr, "Error: getneighbors\(\): calloc\(\)\n");
- ! exit(3);
- ! }
- !
- ! /*
- ! * Set up pointers.
- ! */
- !
- ! for(x = 0; x < nelem; x++)
- ! neighbors[x] = &n_array[x * 15];
- !
- ! /*
- ! * Now, let's read them in!
- ! *
- ! * End of added code. --rct
- ! */
- !
- ! if ((ppntr = popen("uuname", "r")) != NULL) {
- ! #ifdef DEBUG
- ! if (Debug>2)
- ! (void)fprintf(stderr, "Starting uuname\n");
- ! #endif
- ! x = 0;
- ! while((fgets(neighbors[x], 15, ppntr)) != NULL){
- ! if ((ptr = index(neighbors[x], '\n')) != NULL)
- ! *ptr = '\0';
- ! #ifdef DEBUG
- ! if (Debug>4)
- ! (void) fprintf(stderr, "Neighbor # %d: %s\n",
- ! x + 1, neighbors[x]);
- ! #endif
- ! x++;
- ! }
- ! (void) pclose(ppntr);
- ! }
- ! strcpy(neighbors[x], Myname);
- }
-
-
- --- 417,459 ----
- }
- #endif
-
- ! /*
- ! * The getneighbors subroutine is
- ! * Copyright (C) Dave Settle Thorn-EMI Datasolve Mar 1987
- ! * You can do anything with this, except sell it for profit, or remove
- ! * this copyright notice. {used by permission -- sob}
- ! *
- ! * read list of direct connections from "uuname"
- ! */
- ! getneighbors(){
- ! char name[32], *p;
- ! struct system *sys = &head;
- ! FILE *cmd;
- ! int i;
- ! /*
- ! */
-
- ! if((cmd = popen("uuname", "r")) == NULL) {
- ! #ifdef notdef
- ! perror("uuname");
- ! return(EX_NOHOST); /* we don't really care */
- ! #else
- ! return;
- #endif
- }
- ! while(fgets(name, sizeof name, cmd)) {
- ! i = strlen(name);
- ! name[i - 1] = '\0'; /* chop off newline */
- ! p = malloc(i + 1);
- ! strcpy(p, name);
- ! sys->s_name = p; /* store system name */
- ! sys->s_next = (struct system *) malloc(sizeof (struct system));
- ! sys = sys->s_next;
- ! sys->s_name = NULL;
- ! sys->s_next = (struct system *) 0;
- }
- ! gotneighbors = TRUE;
- ! pclose(cmd);
- }
-
-
- Index: rmail.c
- Prereq: 4.0
- *** /tmp/,RCSt1003977 Wed Mar 18 13:59:22 1987
- --- /tmp/,RCSt2003977 Wed Mar 18 13:59:23 1987
- ***************
- *** 1,5 ****
- #ifndef lint
- ! static char rcsid[]="$Header: rmail.c,v 4.0 86/11/17 16:02:32 sob Exp $";
-
- #endif
-
- --- 1,5 ----
- #ifndef lint
- ! static char rcsid[]="$Header: rmail.c,v 4.1 87/03/17 15:49:04 sob Exp $";
-
- #endif
-
- ***************
- *** 44,50 ****
- register char *cp;
- register char *uf; /* ptr into ufrom */
- int i;
- !
- # ifdef DEBUG
- if (argc > 1 && strcmp(argv[1], "-T") == 0)
- {
- --- 44,50 ----
- register char *cp;
- register char *uf; /* ptr into ufrom */
- int i;
- ! argv[argc] = NULL;
- # ifdef DEBUG
- if (argc > 1 && strcmp(argv[1], "-T") == 0)
- {
-
-
-
-