|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T U
Length: 32654 (0x7f8e) Types: TextFile Notes: Uncompressed file
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit └─⟦fbd05780a⟧ »EurOpenD3/network/uupc/uupc.mcl.8.8.Z« └─⟦this⟧
From uucp Wed Aug 12 02:44 PDT 1987 >From slynne Wed Aug 12 02:43:38 1987 remote from slmac Received: by van-bc.uucp (smail2.3) id AA17617; 12 Aug 87 02:43:38 PDT (Wed) Received: by slmac.vnet.van-bc.uucp (pcmail) Wed Aug 12 02:38:20 1987 Date: Wed Aug 12 02:38:20 1987 From: Stuart Lynne - test a mac <slynne@slmac.vnet.van-bc.uucp> Message-ID: <150@slmac.vnet.van-bc.uucp> To: sl@van-bc Subject: shar/uupc.macl.8.8 #! /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.MAC # Makefile # genv.h # ndir.h # sio.h # rename.c # splitname.c # scandir.c # ndir.c # chdir.c # getcwd.c # genv.c # sio.c # getargs.c # mkdir.c # hfixnam.c # macinit.c # This archive created: Sun Jun 21 21:59:59 1987 # By: Stuart Lynne - test a mac () export PATH; PATH=/bin:$PATH if test -f 'README.MAC' then echo shar: will not over-write existing file "'README.MAC'" else cat << \SHAR_EOF > 'README.MAC' mac library May 21, 1987 Stuart Lynne These files define various library routines that I have found useful in porting unix software to the Aztec mac environment. Have fun! For more information, bug fixes, more routines: Stuart.Lynne@van-bc.uucp 604-937-7532 SHAR_EOF chmod +x 'README.MAC' fi # end of overwriting check if test -f 'Makefile' then echo shar: will not over-write existing file "'Makefile'" else cat << \SHAR_EOF > 'Makefile' # # makefile for rz/sz/ezmail/uuslave/pcmail/mail # # # Copyright (c) 1986 Stuart Lynne # # # Rules # .c.o: cc $(CFLAGS) $*.c .asm.o: as $(AFLAGS) $*.asm .a.o: as $(AFLAGS) $*.a # # Macros # CFLAGS= AFLAGS= LFLAGS= -lc LLIB= SFiles = rename.c splitname.c scandir.c ndir.c chdir.c getcwd.c \ genv.c sio.c getargs.c mkdir.c hfixnam.c macinit.c Files = rename.o splitname.o scandir.o ndir.o chdir.o getcwd.o \ genv.o sio.o getargs.o mkdir.o hfixnam.o macinit.o all: $(Files) libutil -o "$$CLIB""x.lib" $(Files) /usr/include/local/genv.h: genv.h cp genv.h /usr/include/local/genv.h genv.o: genv.c genv.h cc -dSLAZTECMAC genv.c -o genv.o splitname: splitname.c cc -dTEST -o splitname.o splitname.c ln -o splitname splitname.o $(LFLAGS) rm splitname.o rename: rename.c splitname.o hfixnam.o cc -dTEST -o rename.o rename.c ln -o rename rename.o splitname.o hfixnam.o $(LFLAGS) rm rename.o ndir: ndir.c hfixnam.o cc -dTEST -o ndir.o ndir.c ln -o ndir ndir.o hfixnam.o $(LFLAGS) rm dir.o hfixnam: hfixnam.c cc -dTEST -o hfixnam.o hfixnam.c ln -o hfixnam hfixnam.o $(LFLAGS) rm hfixnam.o chdir: chdir.c cc -dTEST -o chdir.o chdir.c ln -o chdir chdir.o hfixnam.o $(LFLAGS) rm chdir.o mkdir: mkdir.c cc -dTEST -o mkdir.o mkdir.c ln -o mkdir mkdir.o hfixnam.o $(LFLAGS) rm mkdir.o getcwd: getcwd.c cc -dTEST -o getcwd.o getcwd.c ln -o getcwd getcwd.o hfixnam.o $(LFLAGS) rm getcwd.o genv: genv.c cc -dSLAZTECMAC -dTEST -o genv.o genv.c ln -o genv genv.o $(LFLAGS) rm genv.o shar: shar README.MAC Makefile *.h $(SFiles) > shar.maclib SHAR_EOF chmod +x 'Makefile' fi # end of overwriting check if test -f 'genv.h' then echo shar: will not over-write existing file "'genv.h'" else cat << \SHAR_EOF > 'genv.h' /* genv.c copyright (C) 1987 Stuart Lynne Copying and use of this program are controlled by the terms of the Free Software Foundations GNU Emacs General Public License. version 0.1 March 31/1987 environment variables The following evironment variables are defined: MAILBOX current user's mailbox, "sl" NAME current user's name, "Stuart Lynne" HOME current user's home dir "/usr/sl" DOMAIN domain of this machine, "mac.van-bc.can" MAILDIR where mail is kept, "/usr/mail" CONFDIR where config data is kept, "/usr/lib/uucp" SPOOLDIR where spooled files are "/usr/spool/uucp" PUBDIR public spool directory "/usr/spool/uucppublic" MAILSERVICE who do we send remote mail "van-bc" NODENAME what is our local nodename "slmac" DEVICE what is the default device ".a" SPEED what is the default speed "1200" TEMPDIR what is temp directory "/tmp" */ #define MAILBOX "MAILBOX" #define NAME "NAME" #define HOME "HOME" #define DOMAIN "DOMAIN" #define MAILDIR "MAILDIR" #define CONFDIR "CONFDIR" #define SPOOLDIR "SPOOLDIR" #define PUBDIR "PUBDIR" #define MAILSERVICE "MAILSERVICE" #define NODENAME "NODENAME" #define DEVICE "DEVICE" #define SPEED "SPEED" #define TEMPDIR "TEMPDIR" extern char *mailbox; extern char *name; extern char *home; extern char *domain; extern char *maildir; extern char *confdir; extern char *spooldir; extern char *pubdir; extern char *mailserv; extern char *nodename; extern char *device; extern char *speed; extern char *tempdir; void loadenv(); void genv(); void mkfilename(); SHAR_EOF chmod +x 'genv.h' fi # end of overwriting check if test -f 'ndir.h' then echo shar: will not over-write existing file "'ndir.h'" else cat << \SHAR_EOF > 'ndir.h' /* @(#)ndir.h 1.4 4/16/85 */ #ifndef DEV_BSIZE #define DEV_BSIZE 512 #endif #define DIRBLKSIZ DEV_BSIZE #define MAXNAMLEN 255 struct direct { long d_ino; /* inode number of entry */ short d_reclen; /* length of this record */ short d_namlen; /* length of string in d_name */ char d_name[MAXNAMLEN + 1]; /* name must be no longer than this */ }; /* * The DIRSIZ macro gives the minimum record length which will hold * the directory entry. This requires the amount of space in struct direct * without the d_name field, plus enough space for the name with a terminating * null byte (dp->d_namlen+1), rounded up to a 4 byte boundary. */ #ifdef DIRSIZ #undef DIRSIZ #endif /* DIRSIZ */ #define DIRSIZ(dp) \ ((sizeof (struct direct) - (MAXNAMLEN+1)) + (((dp)->d_namlen+1 + 3) &~ 3)) /* * Definitions for library routines operating on directories. */ /* typedef struct _dirdesc { int dd_fd; long dd_loc; long dd_size; char dd_buf[DIRBLKSIZ]; } DIR; */ typedef struct _dirdesc { int ioVRefNum; long ioDrDirID; int ioFDirIndex; } DIR; #ifndef NULL #define NULL 0L #endif extern DIR *opendir(); extern struct direct *readdir(); extern void closedir(); SHAR_EOF chmod +x 'ndir.h' fi # end of overwriting check if test -f 'sio.h' then echo shar: will not over-write existing file "'sio.h'" else cat << \SHAR_EOF > 'sio.h' /* sio.h */ #include <serial.h> #define AIN "\P.AIN" #define AOUT "\P.AOUT" #define BIN "\P.BIN" #define BOUT "\P.BOUT" typedef struct SIOPort { int refin, refout; unsigned short baud, parity, stopbits, databits; SerShk handshake; char * out, * in; int insize, outsize; char * inbuffer, * outbuffer; } SIOPort; extern struct SIOPort PortA, PortB, *Port; extern SIOInit( /*whichport, speed*/ ); extern SIOSpeed( /*speed*/ ); extern SIOHandshake ( /*fInx, fXOn, fCTS, xOn, xOff*/ ); extern SIOSetting( /*speed, parity, stopbits, databits*/ ); extern SIOInBuffer ( /*buf, size*/ ); extern SIOOutBuffer ( /*buf, size*/ ); extern SIOClose ( /*dtr*/ ); extern SIOPurge (); extern SIOPutchar ( /*ch*/ ); extern SIOWStr ( /*st*/ ); /* timeout is in tenths of a second */ extern int SIORead ( /*byt, maxcount, tenths*/ ); extern putu( /*c, count, refout*/ ); extern int getn ( /*cp, cmax, cmin, refin*/ ); SHAR_EOF chmod +x 'sio.h' fi # end of overwriting check if test -f 'rename.c' then echo shar: will not over-write existing file "'rename.c'" else cat << \SHAR_EOF > 'rename.c' /* Copyright (C) 1984 by Manx Software Systems, Inc. */ #include <quickdraw.h> #include <pb.h> #include <errno.h> #define _DEBUG #include <max/debug.h> #ifdef TEST #include <stdio.h> #endif long setdir( path, dir, name ) char * path; char * dir; char * name; { CInfoPBRec cpb; int err; splitname( path, dir, name ); #ifdef TEST fprintf( stderr, "setdir: \"%s\" \"%s\" \"%s\"\n", name, dir, path ); #endif cpb.ioNamePtr = ctop( dir ); cpb.ioVRefNum = 0; cpb.ioFDirIndex = 0; cpb.u.di.ioDrDirID = 0L; if ((err = PBGetCatInfo( &cpb, 0 )) != 0 ) { #ifdef TEST fprintf( stderr, "setdir: err %d\n", err ); #endif } ptoc( dir ); #ifdef TEST fprintf( stderr, "setdir: path|%s dir|%s name|%s\n", path, dir, name ); #endif return( cpb.u.di.ioDrDirID ); } rename(old, new) char *old, *new; { register int i, err; long int freeb; int vrefnum; union { struct HPrmBlkRec pb; struct CMovePBRec cm; } pbcm; char nbuf[64], ndir[64], nname[32]; char obuf[64], odir[64], oname[32]; /* get vRefNum */ if ( (i=hfixnam(old, obuf)) == 0 || (pbcm.pb.ioVRefNum = hfixnam(new, nbuf)) == 0 ) return(-1); if (i != pbcm.pb.ioVRefNum) { errno = EINVAL; return(-1); } #ifdef TEST fprintf( stderr, "rename: obuf|%s -> nbuf|%s\n", obuf, nbuf ); #endif /* get dir refnums, fix path names, get dir name, and name */ pbcm.cm.ioNewDirID = setdir( nbuf, ndir, nname ); pbcm.cm.ioDirID = setdir( obuf, odir, oname ); /* use name only */ if ( pbcm.cm.ioDirID != pbcm.cm.ioNewDirID ) { #ifdef TEST fprintf( stderr, "rename: catmove\n" ); fprintf( stderr, "rename: %ld|%s -> %ld|%s\n", pbcm.cm.ioDirID, obuf, pbcm.cm.ioNewDirID, ndir ); #endif /* use full path name including volume name */ pbcm.pb.ioNamePtr = ctop(obuf); pbcm.cm.ioNewName = ctop(ndir); err = PBCatMove(&pbcm, 0); } else err = 0; if (err) { if (err == -48) err = EEXIST; errno = err; return(-1); } else { #ifdef TEST fprintf( stderr, "rename: rename\n" ); fprintf( stderr, "rename: %ld|%s -> %ld|%s\n", pbcm.cm.ioDirID, oname, pbcm.cm.ioNewDirID, nname); #endif pbcm.pb.ioNamePtr = ctop(oname); pbcm.pb.u.iop.ioVersNum = 0; pbcm.pb.u.iop.ioMisc = ctop(nname); pbcm.cm.ioDirID = pbcm.cm.ioNewDirID; err = PBHRename(&pbcm, 0); if (err) { if (err == -48) err = EEXIST; errno = err; return(-1); } else return(0); } } #ifdef TEST #include <errno.h> main() { char command[100]; char f1[100], f2[100]; while(gets(command) != NULL) { sscanf( command, "%s%s", f1, f2 ); fprintf( stderr, "test: %s %s\n", f1, f2 ); if ( rename( f1, f2 ) == 0 ) fprintf( stderr, "test: OK\n\n" ); else fprintf( stderr, "test: ERROR %d\n\n", errno ); } } #endif SHAR_EOF chmod +x 'rename.c' fi # end of overwriting check if test -f 'splitname.c' then echo shar: will not over-write existing file "'splitname.c'" else cat << \SHAR_EOF > 'splitname.c' /* splitname split and and copy directory and filename from pathname to dir and name */ splitname( path, dir, name ) char * path; char * dir; char * name; { register char *cp; register int i; strcpy( dir, path ); i = strlen( dir); cp = dir + i; while ((i-- > 0) && (*--cp != '/') && (*cp != ':') ); if (*cp == '/') cp++; else if (*cp == ':') cp++; strcpy( name, cp ); *cp = '\0'; } #ifdef TEST #include <stdio.h> main () { char buf[100]; char dir[100], name[100]; while (gets( buf ) != NULL ) { splitname( buf, dir, name ); printf( "%s -> \"%s\" \"%s\"\n", buf, dir, name ); } } #endif SHAR_EOF chmod +x 'splitname.c' fi # end of overwriting check if test -f 'scandir.c' then echo shar: will not over-write existing file "'scandir.c'" else cat << \SHAR_EOF > 'scandir.c' /* * scandir - a SysV library routine that simulates the * BSD 4.3 version. * * returns: * -1 for failures * # of files found if successful * * Produces a list of files which are contained in the * directory "dirname". * * The list is returned through "namelist" which is an * array of pointers to (struct direct). This list of * pointers are malloc'ed and should be freed when * done with. * * The passed function "select" is passed a (struct direct) * pointer for each directory entry. If "select" returns * non-zero the entry is included in "namelist", otherwise * it is not. If "select" is NULL, all entries are returned. * * The function "compar" is passed a pair of pointers to * (struct direct) and is used to sort "namelist" via qsort. * If "compar" is NULL, the names are unsorted. * * This source is public domain and the author claims no * rights to it. It may be copied, spindled, or mutilated. * * R.J. Esposito - Bell of Pennsylvania * */ #include <stdio.h> /*#include <sys/types.h>*/ #include <ndir.h> int scandir(dirname, namelist, select, compar) char *dirname; struct direct *(*namelist[]); int (*select)(); int (*compar)(); { DIR *dfp; struct direct *dp; register int ii, nf; char *malloc(); if ((dfp = opendir(dirname)) == NULL) /* can't open directory */ return(-1); nf = 0; while ((dp = readdir(dfp)) != NULL) /* read thru direcetory */ if (select == NULL || (*select)(dp)) nf++; if (!nf) /* nothing found */ return(0); /* malloc memory for the namelist array */ *namelist = (struct direct **)malloc((nf+1)*sizeof(struct direct *)); if (*namelist == NULL) { fprintf(stderr, "scandir: out of memory\n"); return(-1); } for (ii = 0; ii < nf; ii++) { (*namelist)[ii] = (struct direct *)malloc(sizeof(struct direct)); if ((*namelist)[ii] == NULL) { fprintf(stderr, "scandir: out of memory\n"); return(-1); } } /* now re-read the directory loading up the namelist array */ closedir( dfp ); if ((dfp = opendir(dirname)) == NULL) /* can't open directory */ return(-1); (*namelist)[ii] = 0; /*seekdir(dfp, 0L);*/ ii = 0; while ((dp = readdir(dfp)) != NULL) { if (select == NULL || (*select)(dp)) { (*namelist)[ii]->d_ino = dp->d_ino; (*namelist)[ii]->d_reclen = dp->d_reclen; (*namelist)[ii]->d_namlen = dp->d_namlen; strcpy((*namelist)[ii]->d_name, dp->d_name); ii++; } } closedir(dfp); #ifdef test if (compar != NULL) /* sort the list if required */ qsort((char **)*namelist, nf, sizeof(struct direct *), compar); #endif return(nf); } SHAR_EOF chmod +x 'scandir.c' fi # end of overwriting check if test -f 'ndir.c' then echo shar: will not over-write existing file "'ndir.c'" else cat << \SHAR_EOF > 'ndir.c' /*#include <ndir.h>*/ #include <local/ndir.h> #include <pb.h> #ifdef TEST #include <stdio.h> #define _DEBUG #include <max/debug.h> #endif /* * support for Berkeley directory reading routine on a V7 file system */ extern char *malloc(); /* * open a directory. */ DIR * opendir(name) char *name; { register DIR *dirp; register int fd; char buf[100]; CInfoPBRec cpb; int err; /* fix name, and get volume reference number */ cpb.ioVRefNum = hfixnam( name, buf ); cpb.ioNamePtr = ctop( buf ); cpb.ioFDirIndex = 0; cpb.u.di.ioDrDirID = 0L; #ifdef TEST fprintf( stderr, "opendir: %s\n", buf ); #endif if ((err = PBGetCatInfo( &cpb, 0 )) != 0 ) { #ifdef TEST fprintf( stderr, "setdir: PBGetCatInfo %d\n", err ); #endif return NULL; } if ((dirp = (DIR *)malloc(sizeof(DIR))) == NULL) { #ifdef TEST fprintf( stderr, "opendir: couldn't malloc %d\n",sizeof(DIR)); #endif return NULL; } dirp->ioVRefNum = cpb.ioVRefNum; dirp->ioDrDirID = cpb.u.di.ioDrDirID; dirp->ioFDirIndex = 1; #ifdef TEST fprintf( stderr, "opendir: # %ld\n", cpb.u.di.ioDrDirID ); #endif return dirp; } /* * get next entry in a directory. */ struct direct * readdir(dirp) register DIR *dirp; { CInfoPBRec cpb; int err; static struct direct dir; #ifdef TEST fprintf( stderr, "readdir: v:%d d:%ld i:%d\n", dirp->ioVRefNum, dirp->ioDrDirID, dirp->ioFDirIndex ); #endif strcpy( dir.d_name, "" ); cpb.ioNamePtr = dir.d_name; cpb.ioVRefNum = dirp->ioVRefNum; cpb.u.di.ioDrDirID = dirp->ioDrDirID; cpb.ioFDirIndex = dirp->ioFDirIndex++; if ((err = PBGetCatInfo( &cpb, 0 )) != 0 ) { #ifdef TEST fprintf( stderr, "readdir: err %d\n", err ); #endif return NULL; } dir.d_ino = 0; ptoc( dir.d_name ); #ifdef TEST fprintf( stderr, "readdir: OK \"%s\"\n", dir.d_name); #endif dir.d_namlen = strlen(dir.d_name); dir.d_reclen = DIRSIZ(&dir); return (&dir); } /* * close a directory. */ void closedir(dirp) register DIR *dirp; { free((char *)dirp); } #ifdef TEST #include <errno.h> main() { char command[100]; struct DIR *dirp; struct direct *dp; while(gets(command) != NULL) { fprintf( stderr, "test: %s\n", command ); if ((dirp = opendir( command )) == NULL ) { fprintf( stderr, "couldn't open dir %s\n", command ); } while ((dp = readdir(dirp)) != NULL) fprintf( stderr, "%s", dp->d_name ); closedir( dirp ); } } #endif SHAR_EOF chmod +x 'ndir.c' fi # end of overwriting check if test -f 'chdir.c' then echo shar: will not over-write existing file "'chdir.c'" else cat << \SHAR_EOF > 'chdir.c' #include <errno.h> #include <memory.h> #include <pb.h> #include <aztec/shell.h> #define _DEBUG #include <max/debug.h> #ifdef TEST #include <stdio.h> #endif #ifndef NULL #define NULL 0L #endif chdir( path ) char * path; { char npath[255]; CInfoPBRec cpb; int err; register char * cp; /* fix name, and get volume reference number */ cpb.ioVRefNum = hfixnam( path, npath ); #ifdef TEST fprintf( stderr, "opendir: %s\n", npath ); #endif cpb.ioNamePtr = ctop( npath ); cpb.ioFDirIndex = 0; cpb.u.di.ioDrDirID = 0L; if ((err = PBGetCatInfo( &cpb, 0 )) != 0 ) { #ifdef TEST fprintf( stderr, "setdir: PBGetCatInfo %d\n", err ); #endif return ENOENT; } /* resize handle */ ptoc( npath ); strcpy( npath, index( npath, ':' )+1 ); while ((cp = index( npath, ':' )) != NULL ) *cp = '/'; #ifdef TEST fprintf( stderr, "chdir: setting curdir to \"%s\"\n", npath ); #endif SetHandleSize( Sp->curdir, (long)(strlen( npath )+2)); if (MemError() != 0) return ENOMEM; strcpy( *Sp->curdir, npath ); return 0; } #ifdef TEST main() { char command[100]; gets( command ); fprintf( stderr, "%d\n", chdir( command )); } #endif SHAR_EOF chmod +x 'chdir.c' fi # end of overwriting check if test -f 'getcwd.c' then echo shar: will not over-write existing file "'getcwd.c'" else cat << \SHAR_EOF > 'getcwd.c' #include <errno.h> #include <memory.h> #include <aztec/shell.h> #ifdef TEST #include <stdio.h> #define _DEBUG #include <max/debug.h> #endif #ifndef NULL #define NULL 0L #endif char * malloc(); char * getcwd( path, size ) char * path; int size; { register char * cp; cp = *Sp->curdir; if (path == NULL) { if (size == 0) size = strlen( cp ) + 2; path = malloc( size ); } if (size <= strlen( cp )) { strcpy( path, "" ); errno = E2BIG; return NULL; } strcpy( path, "/" ); strcat( path, cp ); return( path ); } #ifdef TEST main() { fprintf( stderr, "%s\n", getcwd( NULL, 0 )); } #endif SHAR_EOF chmod +x 'getcwd.c' fi # end of overwriting check if test -f 'genv.c' then echo shar: will not over-write existing file "'genv.c'" else cat << \SHAR_EOF > 'genv.c' /* genv.c copyright (C) 1987 Stuart Lynne Copying and use of this program are controlled by the terms of the Free Software Foundations GNU Emacs General Public License. version 0.1 March 31/1987 */ #ifdef UNIX #include <sys/types.h> #endif #ifdef slmacaztec #include <mac/types.h> #endif #include <stdio.h> #include "genv.h" #define DMAILBOX "mailbox" #define DNAME "" #define DHOME "/usr/guest" #define DDOMAIN "pc.uucp" #define DMAILDIR "/usr/mail" #define DCONFDIR "/usr/lib/uucp" #define DSPOOLDIR "/usr/spool/uucp" #define DPUBDIR "/usr/spool/uucppublic" #define DMAILSERVICE "host" #define DNODENAME "" #define DDEVICE ".a" #define DSPEED "1200" #define DTEMPDIR "/tmp" #define TFILENAME "tmpfile" #define FILENAME "%s/%s" char *getenv(); void genv(); #ifdef SLAZTECMAC char rmailbox[64]; char rname[64]; char rhome[64]; char rdomain[64]; char rmaildir[64]; char rconfdir[64]; char rspooldir[64]; char rpubdir[64]; char rmailserv[16]; char rnodename[16]; char rdevice[16]; char rspeed[8]; char rtempdir[64]; char *mailbox = rmailbox; char *name = rname; char *home = rhome; char *domain = rdomain; char *maildir = rmaildir; char *confdir = rconfdir; char *spooldir = rspooldir; char *pubdir = rpubdir; char *mailserv = rmailserv; char *nodename = rnodename; char *device = rdevice; char *speed = rspeed; char *tempdir = rtempdir; void genv(thename, envname, dflt) char **thename; char *envname; char *dflt; { char * temp; if ((temp = getenv( envname )) == NULL) { /* fprintf( stderr, "genv: %s not found, using %s\n", envname, dflt ); /* */ temp = dflt; } strcpy( *thename, temp ); /* fprintf( stderr, "genv: %s %s\n", envname, *thename ); /**/ } #else char *mailbox; char *name; char *domain; char *maildir; char *spooldir; char *pubdir; char *confdir; char *mailserv; void genv(thename, envname, dflt) char **thename; char *envname; char *dflt; { if ((*thename = getenv( envname )) == NULL) { fprintf( stderr, "genv: %s not found, using %s\n", envname, dflt ); *thename = dflt; } /* fprintf( stderr, "genv: %s %s\n", envname, *thename ); /**/ } #endif void loadenv() { /* get environment var's */ genv( &name, NAME, DNAME ); genv( &mailbox, MAILBOX, DMAILBOX ); genv( &home, HOME, DHOME ); genv( &domain, DOMAIN, DDOMAIN ); genv( &maildir, MAILDIR, DMAILDIR ); genv( &confdir, CONFDIR, DCONFDIR ); genv( &spooldir, SPOOLDIR, DSPOOLDIR ); genv( &pubdir, PUBDIR, DPUBDIR ); genv( &mailserv, MAILSERVICE, DMAILSERVICE ); genv( &nodename, NODENAME, DNODENAME ); genv( &device, DEVICE, DDEVICE ); genv( &speed, SPEED, DSPEED ); genv( &tempdir, TEMPDIR, DTEMPDIR ); } void mkfilename( filename, dirname, name ) char * filename; char * dirname; char * name; { sprintf( filename, FILENAME, dirname, name ); /* fprintf( stderr, "New filename %s\n", filename ); /**/ } #ifdef TEST main() { loadenv(); } #endif SHAR_EOF chmod +x 'genv.c' fi # end of overwriting check if test -f 'sio.c' then echo shar: will not over-write existing file "'sio.c'" else cat << \SHAR_EOF > 'sio.c' /* sio.c Serial I/O for rz/sz Copyright (c) 1986 Stuart Lynne June 1986 */ #include <local/sio.h> #include <stdio.h> #include <pb.h> #include <osutil.h> /* #include <max/macglobals.h> */ #include <max/debug.h> #include <max/asc.h> #define FALSE 0 #ifndef TRUE #define TRUE 1 #endif struct SIOPort curPort; struct { unsigned baudr; int speedcode; } speeds[] = { 300, baud300, 600, baud600, 1200, baud1200, 2400, baud2400, 4800, baud4800, 9600, baud9600, 19200, baud19200, /* 38400, baud38400, */ 57600, baud57600, 9600, baud9600, 0, }; static unsigned getspeed(code) { register n; for (n=0; speeds[n].baudr; ++n) if (speeds[n].speedcode == code) return speeds[n].baudr; return 0; } static unsigned getbaud(code) char *code; { register n; register int Baudrate; Baudrate = atoi(code); for (n=0; speeds[n].baudr; ++n) if (speeds[n].baudr == Baudrate) return speeds[n].speedcode; return 0; } SIOInit ( whichport, speed ) char * whichport; char * speed; { char i; SerShk handshake; int setting; int err; /* fprintf( stderr, "sioinit %s %s\n", whichport, speed ); /* */ if ( strncmp( whichport, ".a", 2 ) == 0 || strncmp( whichport, "a",1 ) == 0 || strcmp( whichport, "modem") == 0 ) { curPort.in = AIN; curPort.out = AOUT; } else if ( strncmp( whichport, ".b", 2 ) == 0 || strncmp( whichport, "b", 1 ) == 0 || strcmp( whichport, "printer") == 0 ) { curPort.in = BIN; curPort.out = BOUT; } else return( -1 ); if ((err = OpenDriver ( curPort.in, &curPort.refin )) !=0 ) { fprintf( stderr, "Err: %d\n", err); debugMsg ( ctop( curPort.in ) ); SysBeep (20); return( -1 ); } if ((err=OpenDriver ( curPort.out, &curPort.refout )) !=0 ) { fprintf( stderr, "Err: %d\n", err); debugMsg ( ctop( curPort.out ) ); SysBeep (20); return( -1 ); } SIOHandshake( FALSE, FALSE, FALSE, XON, XOF ); SIOSettings( speed, noParity, stop10, data8 ); return( 0 ); } SIOSpeed( speed ) char * speed; { SIOSetting( speed, curPort.parity, curPort.stopbits, curPort.databits ); } SIOHandshake ( fInx, fXOn, fCTS, xOn, xOff ) { int err; curPort.handshake.fInX = fInx; curPort.handshake.fXOn = fXOn; curPort.handshake.fCTS = fCTS; curPort.handshake.xOn = xOn; curPort.handshake.xOff = xOff; /* handshake.fXOn = TRUE; */ curPort.handshake.errs = 0; curPort.handshake.evts = 0; if ((err=SerHShake (curPort.refin, &curPort.handshake ))!=0 ) { fprintf( stderr, "Err: %d\n", err); debugMsg ("\PSerHShake error"); SysBeep (20); } } SIOSetting( speed, parity, stopbits, databits ) char * speed; { int err; int setting; curPort.baud = getbaud(speed); curPort.parity = parity; curPort.stopbits = stopbits; curPort.databits = databits; setting = curPort.baud + parity + stopbits + databits; if ((err=SerReset(curPort.refin, setting))!=0 ) { fprintf( stderr, "Err: %d\n", err); debugMsg ("\PSerReset error"); SysBeep (20); } } SIOInBuffer ( buf, size ) char * buf; int size; { curPort.inbuffer = buf; curPort.insize = size; SerSetBuf( curPort.refin, buf, size ); } SIOOutBuffer ( buf, size ) char * buf; int size; { curPort.outbuffer = buf; curPort.outsize = size; SerSetBuf( curPort.refout, buf, size ); } SIOClose ( dtr ) { struct ParamBlkRec SIOpb; register Ptr *sp; long count; if ( dtr != 0) { /* drop DTR */ SIOpb.ioCompletion = NULL; SIOpb.u.cp.csRefNum = curPort.refin; SIOpb.u.cp.csCode = 18; sp = (Ptr) &SIOpb; /**/ PBControl (&SIOpb, FALSE); /**/ /* #asm move.l a3,a0 dc.w $a004 #endasm */ } SIOInBuffer( NULL, 0 ); SIOOutBuffer( NULL, 0 ); CloseDriver( curPort.refin ); CloseDriver( curPort.refout ); } sfflushout () { } SIOPurge () { char ch; while (sread (&ch, 1, 1) == 1); } SIOPutchar ( ch ) char ch; { /*fprintf(stderr, "<%02x>", ch);*/ return( putu ( &ch, 1, curPort.refout ) ); } SIOWrite ( buf, count ) char * buf; int count; { return( putu (buf, count, curPort.refout) ); } SIOWStr ( st ) char * st; { return( putu (st, strlen(st), curPort.refout) ); } #define Ticks (*(long *) 0x16a) /* timeout is in tenths of a second */ int SIORead ( byt, mincount, maxcount, tenths ) char * byt; int mincount; int maxcount; int tenths; { long timea; short actCount; int i; timea = Ticks; tenths *= 6; /* fprintf (stderr, "Read m= %d T= %ld", maxcount, Ticks );/**/ do { actCount = getn (byt, mincount, maxcount, curPort.refin ); if (actCount > 0) { /* fprintf (stderr, " OK: %d\n", actCount);/**/ return actCount; } } while ((long)(Ticks - timea) < (long) tenths); /* fprintf (stderr, " Timed out: t= %d\n T:%ld", tenths, Ticks );/**/ return -1; } srdchk () { struct ParamBlkRec SIOpb; register Ptr *sp; long count; SIOpb.ioCompletion = NULL; SIOpb.u.cp.csRefNum = curPort.refin; SIOpb.u.cp.csCode = 2; SIOpb.u.cp.csParam.asyncNBytes = 0L; sp = (Ptr) &SIOpb; /**/ PBStatus (&SIOpb, FALSE); /**/ /* #asm move.l a3,a0 dc.w $a005 #endasm */ count = SIOpb.u.cp.csParam.asyncNBytes; if (count >= 1) return TRUE; else return FALSE; } sleep (seconds) { long timea; timea = Ticks; seconds *= 60; while ((long)(Ticks - timea) < (long) seconds); } ssendbrk (bnulls) int bnulls; { int setting; setting = curPort.baud + noParity + stop10 + data8; if (SerReset(curPort.refin, setting) ) { debugMsg ("\PSerReset error"); SysBeep (20); } swrite("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", bnulls*2); setting = curPort.baud + noParity + stop10 + data8; if (SerReset(curPort.refin, setting) ) { debugMsg ("\PSerReset error"); SysBeep (20); } return; } /* Fill array *cp with characters from serial buffer, starting at 0, until cmax. Return actual chars read. Don't read unless at least cmin are available. */ int getn ( cp, cmin, cmax, refin ) char *cp; register int cmax, cmin; register short refin; { struct ParamBlkRec SIOpb; register Ptr pbp = &SIOpb; register int count; /* fprintf( stderr, " %d", cmin ); /* */ SIOpb.ioCompletion = NULL; SIOpb.u.cp.csRefNum = refin; SIOpb.u.cp.csCode = 2; SIOpb.u.cp.csParam.asyncNBytes = 0L; pbp = (Ptr) &SIOpb; /**/ PBStatus (&SIOpb, FALSE); /**/ /* #asm move.l a3,a0 dc.w $a005 #endasm */ count = (int) SIOpb.u.cp.csParam.asyncNBytes; SIOpb.u.iop.ioReqCount = (long) count; if ( count >= cmin) { if ( count > cmax) SIOpb.u.iop.ioReqCount = (long) cmax; SIOpb.u.iop.ioRefNum = refin; SIOpb.u.iop.ioBuffer = (Ptr) cp; SIOpb.u.iop.ioPosMode = 0; /* */ PBRead (&SIOpb, FALSE); /* */ /* #asm move.l a3,a0 dc.w $a002 #endasm */ count = (int) SIOpb.u.iop.ioActCount; return( count ); } else return 0; } int putu( c, count, refout ) char *c; short count; short refout; { struct ParamBlkRec pb; register Ptr pbp = &pb; pb.u.iop.ioRefNum = refout; pb.u.iop.ioBuffer = c; pb.u.iop.ioReqCount = count; pb.u.iop.ioPosMode = 0; /* */ PBWrite(&pb, FALSE ); /* */ /* #asm move.l a3,a0 dc.w $a003 #endasm */ return( (short) pb.u.iop.ioActCount ); } SHAR_EOF chmod +x 'sio.c' fi # end of overwriting check if test -f 'getargs.c' then echo shar: will not over-write existing file "'getargs.c'" else cat << \SHAR_EOF > 'getargs.c' #include <stdio.h> getargs(cp, flds) register char *cp; char *flds[]; { register int count = 0; while ( *cp != '\0' ) { while ( *cp == ' ' || *cp == '\t') *cp++ = '\0'; if (*cp == '\n') *cp = '\0'; if (*cp != '\0' ) { flds[count++] = cp; while (*cp != ' ' && *cp != '\t' && *cp != '\n' && *cp != '\0' ) cp++; } } flds[count] = NULL; return(count); } #ifdef testtoken /* tokenize command line */ while ( *cp != '\0' ) { /*debuglevelMsg("\PCheck isspace(*cp++)");*/ if ( isspace(*cp) ) { /* terminate previous token */ *cp++ = '\0'; /* eat white space */ while ( isspace(*cp) ) cp++; } else { /* put address of token into argv, inc argc */ *argvp++ = cp; argcp++; fprintf( stderr, "shell: token %s\n", cp ); /*debuglevelMsg("\PCheck !isspace(*cp++)");*/ while ( !isspace(*cp) ) cp++; } } #endif SHAR_EOF chmod +x 'getargs.c' fi # end of overwriting check if test -f 'mkdir.c' then echo shar: will not over-write existing file "'mkdir.c'" else cat << \SHAR_EOF > 'mkdir.c' #include <errno.h> #include <memory.h> #include <pb.h> #include <aztec/shell.h> #define _DEBUG #include <max/debug.h> #ifdef TEST #include <stdio.h> #endif #ifndef NULL #define NULL 0L #endif mkdir( path ) char * path; { char npath[255]; CInfoPBRec cpb; int err; register char * cp; /* fix name, and get volume reference number */ cpb.ioVRefNum = hfixnam( path, npath ); #ifdef TEST fprintf( stderr, "opendir: %s\n", npath ); #endif cpb.ioNamePtr = ctop( npath ); cpb.ioFDirIndex = 0; cpb.u.di.ioDrDirID = 0L; if ((err = PBDirCreate( &cpb, 0 )) != 0 ) { #ifdef TEST fprintf( stderr, "setdir: PBDirCreateGetCatInfo %d\n", err ); #endif return ENOENT; } return 0; } #ifdef TEST main() { char command[100]; gets( command ); fprintf( stderr, "%d\n", mkdir( command )); } #endif SHAR_EOF chmod +x 'mkdir.c' fi # end of overwriting check if test -f 'hfixnam.c' then echo shar: will not over-write existing file "'hfixnam.c'" else cat << \SHAR_EOF > 'hfixnam.c' #ifdef TEST #include <stdio.h> #endif #include <pb.h> hfixnam( path, npath ) char * path; char * npath; { HPrmBlkRec pb; char vname[256]; strcpy( vname, "" ); strcpy( npath, "" ); pb.ioNamePtr = vname; #ifdef TEST fprintf( stderr, "hfixnam: before \"%s\"\n", path ); #endif pb.ioVRefNum = fixnam( path, npath ); #ifdef TEST fprintf( stderr, "hfixnam: vrefnum %d\n", pb.ioVRefNum ); fprintf( stderr, "hfixnam: after \"%s\"\n", npath ); #endif pb.u.hvp.ioVolIndex = 0; if (PBGetVInfo(&pb, 0) == 0) { ptoc( vname ); #ifdef TEST fprintf( stderr, "hfixnam: \"%s\"\n", vname ); #endif strcat( vname, npath ); strcpy( npath, vname ); } return pb.ioVRefNum; } #ifdef TEST #include <errno.h> main() { char command[100]; char ncommand[100]; int vrefnum; while ( gets( command ) != NULL) { fprintf( stderr, "test: %s \n", command ); vrefnum = hfixnam( command, ncommand ); fprintf( stderr, "test: %d %s\n", vrefnum, ncommand ); } } #endif SHAR_EOF chmod +x 'hfixnam.c' fi # end of overwriting check if test -f 'macinit.c' then echo shar: will not over-write existing file "'macinit.c'" else cat << \SHAR_EOF > 'macinit.c' /* macinit.c */ #include <quickdraw.h> #include <font.h> macinit() { TextFont( monaco ); TextSize( 10 ); } SHAR_EOF chmod +x 'macinit.c' fi # end of overwriting check # End of shell archive exit 0 -- {ubc-vision,uunet}!van-bc!sl Stuart.Lynne@van-bc.uucp