purdon@athena.mit.edu (James R. Purdon III) (12/21/90)
The slugnet program is a multiple-user, interactive conferencing facility. It currently runs under a variety of System V-based and BSD-based operating systems (although certain functions may not be possible under some of these operating systems). Cut here---------------------------------------------------------- #!/bin/sh # to extract, remove the header and type "sh filename" if `test ! -s ./Makefile` then echo "writing ./Makefile" cat > ./Makefile << '\End\Of\Shar\' # # Makefile for slugnet package # # Where the unformatted man pages are # MAN = /usr/man/man1 # Where the slugnet binary lives # SLUGBIN = /usr/local/bin # # Where the slugnet directory lives ( change slugnet.h to match ) # SLUGDIR = /usr/users/slugnet # # who owns slugnet # SLUGUID = slugnet # # Select OS type # # BSD # # OS = -DBSD4 # # SUNOS # # OS = -DBSD4 -OSUNOS # # System V R2.x (slugnetd probably won't work) # # OS = -DSYSV2 # # System V R3 (with BSD network extensions ) # # OS = -DSYSV3 # # System V R3 (with interlan network extensions ) # # OS = -DSYSV3 -DINTERLAN # LDFLAGS = -ltcp # UNICOS # # OS = -DSYSV3 -DUNICOS # LDFLAGS = -lnet # # Ultrix # OS = -DULTRIX # instructions: @echo "make slugnet Builds local program" @echo "make slugnetd Builds network server" @echo "make install Installs slugnet" @echo "make clean Removes objects" # # local program # slugnet: clean @echo "Making slugnet..." @SLUGBIN=$(SLUGBIN) ;SLUGDIR=$(SLUGDIR) ;SLUGUID=$(SLUGUID) ;\ OS="$(OS)" ;SLUGNET=slugnet ;NETFLG="-DLOCAL" ;\ LDFLAGS=$(LDFLAGS) ;\ export LDFLAGS NETFLG OS SLUGBIN SLUGDIR SLUGUID SLUGNET ;\ make -e -f slugnet.mk slugnet # # network server # slugnetd: clean @echo "Making slugnetd..." @SLUGBIN=$(SLUGBIN) ;SLUGDIR=$(SLUGDIR) ;SLUGUID=$(SLUGUID) ;\ OS="$(OS)" ;SLUGNET=slugnetd ;NETFLG="-DNETWORK" ;\ LDFLAGS=$(LDFLAGS) ;\ export LDFLAGS NETFLG OS SLUGBIN SLUGDIR SLUGUID SLUGNET ;\ make -e -f slugnet.mk slugnetd clean: @SLUGBIN=$(SLUGBIN) ;SLUGDIR=$(SLUGDIR) ;SLUGUID=$(SLUGUID) ;\ OS="$(OS)" ;SLUGNET=slugnet ;NETFLG="-DLOCAL" ;\ LDFLAGS=$(LDFLAGS) ;\ export LDFLAGS NETFLG OS SLUGBIN SLUGDIR SLUGUID SLUGNET ;\ make -e -f slugnet.mk clean install: local network local: @SLUGBIN=$(SLUGBIN) ;SLUGDIR=$(SLUGDIR) ;SLUGUID=$(SLUGUID) ;\ OS="$(OS)" ;SLUGNET=slugnet ;NETFLG="-DLOCAL" ;\ LDFLAGS=$(LDFLAGS) ;MAN=$(MAN) ;\ export LDFLAGS MAN NETFLG OS SLUGBIN SLUGDIR SLUGUID SLUGNET ;\ make -e -f slugnet.mk install network: @SLUGBIN=$(SLUGBIN) ;SLUGDIR=$(SLUGDIR) ;SLUGUID=$(SLUGUID) ;\ OS="$(OS)" ;SLUGNET=slugnetd ;NETFLG="-DNETWORK" ;\ LDFLAGS=$(LDFLAGS) ;MAN=$(MAN) ;\ export LDFLAGS MAN NETFLG OS SLUGBIN SLUGDIR SLUGUID SLUGNET ;\ make -e -f slugnet.mk install tar: @SLUGBIN=$(SLUGBIN) ;SLUGDIR=$(SLUGDIR) ;SLUGUID=$(SLUGUID) ;\ OS="$(OS)" ;SLUGNET=slugnetd ;NETFLG="-DNETWORK" ;\ LDFLAGS=$(LDFLAGS) ;\ export LDFLAGS NETFLG OS SLUGBIN SLUGDIR SLUGUID SLUGNET ;\ make -e -f slugnet.mk slugtar \End\Of\Shar\ else echo "will not over write ./Makefile" fi chmod 400 ./Makefile if [ `wc -c ./Makefile | awk '{printf $1}'` -ne 2464 ] then echo `wc -c ./Makefile | awk '{print "Got " $1 ", Expected " 2464}'` fi if `test ! -s ./Readme` then echo "writing ./Readme" cat > ./Readme << '\End\Of\Shar\' @(#)Readme 1.2 Contents of the file slugtar and quick start. File Notes ------------------------------------------------------------------------------ Makefile Makefile for slugnet, slugnetd, and installation. Readme This file. call_socket.c Source. callbyaddr.c " callbyhost.c " chgusr.c " cleanup.c " clnusr.c " copyright.h " establish.c " find.c " get_connect.c " getcfg.c " getjsn.c " interlan " lock.c " lower.c " main.c " net.h " rdline.c " receive.c " repchar.c " send_file.c " setjsn.c " sighang.c " sigquit.c " sigstop.c " sigterm.c " sigtstp.c " sigurg.c " slughlp.dat On line help file. slugnet.1 man page for slugnet. slugnet.c Source. slugnetd.1 man page for slugnetd. slugnet.doc Slugnet documentation. slugnet.h Source. slugnet.mk Prototype makefile, invoked by Makefile. slugnet.n Original FTN5 source for CDC 180/865 running NOS. strnicmp.c " task.c " transmit.c " unlock.c " verify.c " Quick start. 1. In Makefile, be sure that MAN, SLUGBIN, SLUGDIR, SLUGUID, and OS are set correctly. 2. make slugnet 3. make slugnetd 4. make install 5. make clean 6. nohup slugnetd >& /dev/null \End\Of\Shar\ else echo "will not over write ./Readme" fi chmod 400 ./Readme if [ `wc -c ./Readme | awk '{printf $1}'` -ne 1156 ] then echo `wc -c ./Readme | awk '{print "Got " $1 ", Expected " 1156}'` fi if `test ! -s ./call_socket.c` then echo "writing ./call_socket.c" cat > ./call_socket.c << '\End\Of\Shar\' /* @(#)call_socket.c 1.2 */ #ifdef NETWORK #include "net.h" /* calls a socket */ int call_socket(hostname, portnum) char *hostname; int portnum; { struct sockaddr_in sa; struct hostent *hp; int a, s; if ((hp= gethostbyname(hostname)) == NULL) { /* do we know the host's */ errno= ECONNREFUSED; /* address? */ return(0); /* no */ } bzero(&sa,sizeof(sa)); bcopy(hp->h_addr,(char *)&sa.sin_addr,hp->h_length); /* set address */ sa.sin_family= hp->h_addrtype; sa.sin_port= htons((u_short)portnum); if ((s= socket(hp->h_addrtype,SOCK_STREAM,0)) < 0) /* get socket */ return(0); if (connect(s,&sa,sizeof sa) < 0) /* connect */ return(0); return(s); } #endif NETWORK \End\Of\Shar\ else echo "will not over write ./call_socket.c" fi chmod 400 ./call_socket.c if [ `wc -c ./call_socket.c | awk '{printf $1}'` -ne 765 ] then echo `wc -c ./call_socket.c | awk '{print "Got " $1 ", Expected " 765}'` fi if `test ! -s ./callbyaddr.c` then echo "writing ./callbyaddr.c" cat > ./callbyaddr.c << '\End\Of\Shar\' /* @(#)callbyaddr.c 1.1 */ #ifdef NETWORK #include "net.h" /* calls a socket using the ip address */ int callbyaddr(addr, portnum) char *addr; int portnum; { struct sockaddr_in sa; struct hostent *hp; int a, s; long adr; adr = inet_addr( addr ); if ((hp= gethostbyaddr(&adr,strlen(addr),AF_INET)) == NULL) { /* do we know the host's */ errno= ECONNREFUSED; /* address? */ return(0); /* no */ } bzero(&sa,sizeof(sa)); bcopy(hp->h_addr,(char *)&sa.sin_addr,hp->h_length); /* set address */ sa.sin_family= hp->h_addrtype; sa.sin_port= htons((u_short)portnum); if ((s= socket(hp->h_addrtype,SOCK_STREAM,0)) < 0) /* get socket */ return(0); if (connect(s,&sa,sizeof sa) < 0) /* connect */ return(0); return(s); } #endif NETWORK \End\Of\Shar\ else echo "will not over write ./callbyaddr.c" fi chmod 400 ./callbyaddr.c if [ `wc -c ./callbyaddr.c | awk '{printf $1}'` -ne 829 ] then echo `wc -c ./callbyaddr.c | awk '{print "Got " $1 ", Expected " 829}'` fi if `test ! -s ./callbyhost.c` then echo "writing ./callbyhost.c" cat > ./callbyhost.c << '\End\Of\Shar\' /* @(#)callbyhost.c 1.1 */ #ifdef NETWORK #include "net.h" /* calls a socket using the host name */ int callbyhost(hostname, portnum) char *hostname; int portnum; { struct sockaddr_in sa; struct hostent *hp; int a, s; if ((hp= gethostbyname(hostname)) == NULL) { /* do we know the host's */ errno= ECONNREFUSED; /* address? */ return(0); /* no */ } bzero(&sa,sizeof(sa)); bcopy(hp->h_addr,(char *)&sa.sin_addr,hp->h_length); /* set address */ sa.sin_family= hp->h_addrtype; sa.sin_port= htons((u_short)portnum); if ((s= socket(hp->h_addrtype,SOCK_STREAM,0)) < 0) /* get socket */ return(0); if (connect(s,&sa,sizeof sa) < 0) /* connect */ return(0); return(s); } #endif NETWORK \End\Of\Shar\ else echo "will not over write ./callbyhost.c" fi chmod 400 ./callbyhost.c if [ `wc -c ./callbyhost.c | awk '{printf $1}'` -ne 782 ] then echo `wc -c ./callbyhost.c | awk '{print "Got " $1 ", Expected " 782}'` fi echo "Finished archive 6 of 6" exit