Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

v09i048: UUmail 4.X patch

5 views
Skip to first unread message

sources...@mirror.uucp

unread,
Apr 14, 1987, 6:17:25 PM4/14/87
to
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)
{

0 new messages