[comp.sources.misc] uniflex dcp Part 1 of 2

sampson@killer.UUCP (Steve Sampson) (08/27/87)

#!/bin/sh
# This is a shell archive.  Remove anything before this line,
# then unpack it by saving it in a file and typing "sh file".
#
# Wrapped by sampson on Mon Aug 24 03:10:17 CDT 1987
# Contents:  dcp.h uucp.h dcp.doc uuclone.doc uucico.log makefile
 
echo x - dcp.h
sed 's/^XX//' > "dcp.h" <<'@//E*O*F dcp.h//'
XX/* DCP a uucp clone. Copyright Richard H. Lamb 1985,1986,1987 */
XX
XX#include <stdio.h>		/* Standard UNIX  definitions */
XX#include <sys/modes.h>
XX#include "uucp.h"
XX
XX#define	UNIFLEX		/* undefine for other versions */
XX
XX#define	PERMS		(S_IREAD | S_IWRITE | S_IEXEC)
XX
XX#define MSGTIME         18
XX#define MAXPACK         256
XX
XX#define ACK     4       /*      general definitions     */
XX#define NAK     2
XX#define DATA    0
XX#define CLOSE   1
XX#define ERROR   10
XX#define EMPTY   11
XX
XX
XX#define TRUE    -1
XX#define FALSE   0
XX
XXtypedef int (*procref)();
XXtypedef struct {
XX        char type;
XX        procref a;
XX        procref b;
XX        procref c;
XX        procref d;
XX} Proto;
XX
XX/* the various protocols available. Add here for others */
XX
XXextern procref          getpkt,sendpkt,openpk,closepk;
XX
XXextern int              ggetpkt(),gsendpkt(),gopenpk(),gclosepk();
XX
XXextern int              pktsize;                /* packet size for this pro*/
XXextern int              flog;                   /* system log file */
XXextern int              fw;                     /* cfile pointer */
XXextern int              fpr,fpw;                /* comm dev pointer */
XXextern char             cfile[];                /* work file pointer */
XXextern int              remote;                 /* -1 means we're remote*/
XXextern int              debug;                  /* debugging level */
XXextern int              msgtime;                /* timout setting */
XXextern char             fromfile[];
XXextern char             tofile[];
XXextern char             state;                  /* present state */
XXextern int              fp;                     /* current disk file ptr */
XXextern int              size;                   /* nbytes in buff */
XXextern int              fsys;
XXextern char             tty[];
XXextern char             myname[];
XXextern char             username[];
XXextern char             spooldir[];
XXextern char             rmtname[];
XXextern char             cctime[];
XXextern char             device[];
XXextern char             type[];
XXextern char             speed[];
XXextern char             proto[];
XXextern char             loginseq[];
XXextern unsigned int     checksum();
@//E*O*F dcp.h//
chmod u=rw,g=r,o=r dcp.h
 
echo x - uucp.h
sed 's/^XX//' > "uucp.h" <<'@//E*O*F uucp.h//'
XX/*
XX *	uucp.h
XX *
XX *	Header file for rmail.c, uuxqt.c, and uucico.c
XX *
XX */
XX
XX#define	SPOOLDIR	"/gen/spooler/uucp"    /* place to spool remote mail */
XX#define	SYSTEMS		".Systems"	/* file with calling info	     */
XX#define	DEVICES		".Devices"	/* file with terminal info	     */
XX#define	ERRORNAME	"system"	/* user who gets error mail (root)   */
XX#define	USERNAME	"uucp"		/* name of user who is the mailman   */
XX#define	MYNAME		"ddmok"		/* the name of your machine (6 char) */
XX#define	SYSLOG		".Log/uucico"	/* error log file for uucico	     */
XX#define	XQTLOG		".Log/uuxqt"	/* error log file for uuxqt	     */
XX#define	TTY		"/dev/tty03"	/* default comm terminal             */
XX
XX
XX/* EOF */
@//E*O*F uucp.h//
chmod u=rw,g=r,o=r uucp.h
 
echo x - dcp.doc
sed 's/^XX//' > "dcp.doc" <<'@//E*O*F dcp.doc//'
XX                        Mini Docs for DCP
XX------------------------------------------------------------------------
XXThree files are needed to use this program.
XX
XX1.  Compile and link the various modules (see the Makefile for info).
XX    Call it dcp (I call it uucico on my machine).  Put this file in
XX    a binary directory with permissions set so that only the uucp user
XX    can run it.  Normal users should use rmail.  The system uses cron
XX    and uucp login.
XX
XX2. Compile and Link rmail.c and put it in a binary directory.  Again
XX   make the owner uucp (as above) with permissions set.  Rmail should
XX   have the SUID bit on.  Rmail should have execution privileges for
XX   others.
XX
XX3.  Create a file called SYSTEMS in the SPOOLDIR and format it like so:
XX
XX	name-of-other-machine Time-to-call tty type baud protocols-supported
XX
XX	then comes the login sequence.  This is a send/receive cycle.  The
XX	text has a dash for a delimiter.
XX
XX	a.  The 'name-of-other-machine' should be significant to six
XX	    characters.
XX
XX	b.  The 'time-to-call' field recognizes only two entries.
XX	    These are 'Any' and 'Slave' (notice the caps on first letter).
XX	    In the future this field would contain the hours and day of week
XX	    that a call should be sent.  'Slave' is used to identify the
XX	    machine name given.  The software has code which checks the
XX	    logged in machines name against the list of machines in the SYSTEMS
XX	    file.  If there is a machine that calls you, but you do not call
XX	    them, then an entry is made:
XX
XX		name-of-other-machine Slave
XX
XX	c.  The 'type' field is currently not used but will contain ACU for a
XX	    modem and DIRECT for a direct connection to another machine.
XX
XX	d.  The 'baud' rate is the baud to use when calling.  A default
XX	    rate is used if the number given is not supported.  The default
XX	    rate is 1200.
XX
XX
XXThe current program expects to find the entry on one line with a maximum
XXof 132 characters, for example (fictional):
XX
XXihnp1 Any /dev/tty03 ACU 1200 g ATDT1-405-123-4567\n-1200-x\nx\n-ogin:-uucp\n
XX-word:-secret\n<CR>
XXppmok Slave<CR>
XX
XXIn this case I call ihnp1 at anytime using tty03 at 1200 and the 'g' protocol.
XXfirst I send ATDT1-405-123-4567\n which the (Hays compatible) modem uses
XXto dial out.  Then I expect to receive 1200.  This is because my modem
XXechos CONNECT 1200 when a carrier is detected.  Since their may be some missed
XXcharacters, I only compare against the final ones.  Then I send two 'x's
XXwhich proved to work at stepping the called modem down from 2400 baud to
XX1200 baud.  I did this by experimentation.  The bottom line is you have to
XXdetermine the login sequence by calling the other machine and see what works.
XXAfter that I expect to see 'ogin:'.  The other machine puts out 'Login:' but
XXI only compare against 'ogin:'.  I send it 'uucp\n' and it says 'Password:'
XXand I compare that to 'word:' and send it 'secret\n'.
XX
XXThe dcp program is then run using:
XX
XX	dcp mode debug-level
XX
XXThe mode is 'master' or 'slave'  and the debug-level is an integer of
XX0 to 9.  The defaults if only dcp is typed is 'dcp slave 0'.  In my
XXimplementation I have an user called 'uucp' and instead of forking a
XXshell at login I fork dcp.  I also have a cron entry which starts up
XXdcp in the master mode at the required time.
@//E*O*F dcp.doc//
chmod u=rw,g=r,o=r dcp.doc
 
echo x - uuclone.doc
sed 's/^XX//' > "uuclone.doc" <<'@//E*O*F uuclone.doc//'
XXThis archive contains:
XX
XX1.	dcp*.*
XX
XX	Programs which allows unattended computer communication
XX	through modem or direct link.  The program calls uuxqt
XX	when finished.  This program has two modes - Master and
XX	Slave.  Master mode is used to initiate communication.
XX	It is usually started by a cron type file.  Slave is the
XX	mode used to answer a call.  It is usually started by a
XX	login to the 'uucp' user account.
XX
XX2.	uuxqt.c
XX
XX	A program which executes work files.  Work files have an
XX	"X." prefix.  These work files can be sent to remote
XX	machines by uucico for remote execution.
XX
XX3.	rmail.c
XX
XX	The first of three programs to generate work files (The
XX	other two are uucp and uux).  This program processes mail
XX	by sending it to a local user, or creating a work file for
XX	a remote user.
XX
XX4.	uucp.h
XX
XX	The header file for the above files.  It contains machine
XX	settup constants.
XX
XX
XX5.	uucp.doc
XX
XX	This file contains information on the uucp G protocol.
XX
XX
XX6.
XX
XX
XXNotes on implementation:
XX
XXSUID         SUID
XXowner root   owner uucp      owner uucp
XX|            |               |
XXmail ----> rmail ----      uuxqt
XX                     \       ^
XX                      \      |
XX                       \     |
XX                        \    |        SLAVE
XX             MASTER      > uucico <---------- uucp login
XX                        /    |                    |
XX                       /   owner uucp             owner uucp
XX           cron -------    SUID
XX           owner root
XX
XXuucico is called from two tasks - cron and login.  uucico will run in the
XXslave mode initially, when called by login.  It will run in master mode
XXinitially, when called by cron.  uucico is owned by the uucp user so it
XXhas its SUID bit on for when cron calls it.  This will change the effective
XXuser to uucp.  uucico calls the machines you have selected in the SYSTEMS
XXfile in master mode.  It then checks for any work to do by looking for "C."
XXprefix files.  If it finds any it performs the commands in the C. file.
XXWhen it completes it switches to slave mode and the remote machine has its
XXturn in the same way.  Also when a user logs in as uucp the password entry
XXfile directs 'uucico slave' to be executed instead of 'shell'.  The remote
XXmachine runs in master then roles switch and the host machine has a go at
XXthe remote machine.  When finished the two machines log out.  At the end
XXuucico executes uuxqt wich then looks for "X." prefix files and performs
XXthe work specified.
XX
XXWhen an user sends mail with a '!' in the address it re-routes the mail to
XXrmail.  rmail then builds the C. and X. work files for the remote machine.
XXWhen cron fires off uucico it finds these files and sends them to the
XXremote machines where they are uuxqt-ed.
XX
XXBasically any command can be put in a work file.  The program uux is
XXused for this.  A special command is uucp which merely copies files
XXfrom machine to machine.  The commands allowed using uux would be any
XXcommand allowed by an user less than the root.
XX
XXFor example if you wanted to do a 'who' command on a remote machine, the
XXuux program would make a work file, uucico would send it, and the remote
XXmachines uuxqt would execute it.  Then the results would be put in a work
XXfile, sent back through uucico and executed by the local uuxqt.  Depositing
XXthe results in the file you specify. (uux s1!who).
XX
XXNOTE:
XXThis version of uucico calls all machines when executed.  It does not search
XXfor work and then call.  Also there is no mechanism to process the 'legal time'
XXentry of the SYSTEMS file.  (FIXME).
XX
XXThe dcp program still has some bugs in it.  The first is a report that it
XXdoesn't work with binary files.  I haven't got to that stage yet.
XXThe second is that I'm recieving an error in transfer that garbages up
XXthe first line in the D. file.  I've been working around it because I'm
XXmore interested in support programs at this time.  Now that their where
XXthier usable, I'm going to tackle the protocol.  The dcp modules are
XXpretty ugly in my book.
@//E*O*F uuclone.doc//
chmod u=rw,g=r,o=r uuclone.doc
 
echo x - uucico.log
sed 's/^XX//' > "uucico.log" <<'@//E*O*F uucico.log//'
XXThis is a sample debug log:
XX
XXIt reflects a problem that occurs about every transfer.  That is, the
XXfirst line of the D. file is garbaged up.  This needs to be isolated
XXand fixed.
XX
XX
XXMstate = I
XXrmt= killer ctm= Any dev= /dev/tty03
XXtyp= ACU spd= 1200 pro= g
XXlogseq= ATDT12148247881\n-1200-x\nx\n-ogin:-uucp\n-word:-secret\n
XXMstate = S
XXsent ATDT12148247881
XX
XXwanted 1200
XXgot that 
XXwanted ogin:
XXgot that 
XXwanted word:
XXgot that 
XXMstate = P
XX1st msg = Shere=killer
XX2nd msg = ROK
XX3rd msg = Pg
XXMstate = D
XXTop level state (master mode) I
XXsend packet type 7
XX  num = 0 n = 0
XX  len = 0 data =
XX||
XXreceive packet type 7 
XX  num = 3 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XXsend packet type 6
XX  num = 0 n = 0
XX  len = 0 data =
XX||
XXreceive packet type 6 
XX  num = 1 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XXsend packet type 5
XX  num = 0 n = 0
XX  len = 0 data =
XX||
XXreceive packet type 5 
XX  num = 3 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XXTop level state (master mode) B
XXdir file = . cfile = C.
XXdir file = .. cfile = C.
XXdir file = .Log cfile = C.
XXdir file = l1 cfile = C.
XXdir file = .Systems cfile = C.
XXdir file = l2 cfile = C.
XXdir file = .killer cfile = C.
XXdir file = l3 cfile = C.
XXTop level state (master mode) Q
XXsend packet type 0
XX  num = 0 n = 1
XX  len = 64 data =
XX|H|
XXreceive packet type 4 
XX  num = 1 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XXreceive packet type 0 
XX  num = 1 n = 1
XX  checksum rec = be13 comp = be13
XX  len = 64 data =
XX|HN|
XXsend packet type 4
XX  num = 1 n = 0
XX  len = 0 data =
XX||
XXSwitch modes
XXTop level state (master mode) G
XX receive state: F
XXreceive packet type 0 
XX  num = 1 n = 2
XX  checksum rec = 6e27 comp = 6e27
XX  len = 64 data =
XX|S D.kille2f281c0 D.kille2f281c0 sampson - D.kille2f281c0 0666 sa|
XXsend packet type 4
XX  num = 2 n = 0
XX  len = 0 data =
XX||
XXReceiving D.kille2f281c0 as D.kille2f281c0
XXsend packet type 0
XX  num = 2 n = 2
XX  len = 64 data =
XX|SY|
XXreceive packet type 0 
XX  num = 1 n = 3
XX  checksum rec = 5a9e comp = 5a9e
XX  len = 64 data =
XX|mpson|
XXsend packet type 0
XX  num = 2 n = 2
XX  len = 64 data =
XX|SY|
XXreceive packet type 4 
XX  num = 2 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XX receive state: D
XXreceive packet type 0 
XX  num = 2 n = 4
XX  checksum rec = 1c8f comp = 1c8f
XX  len = 64 data =
XX|From sampson Fri Aug  7 15:44 CDT 1987 remote from killerThis i|
XXunexpected pkt 2 
XXreceive packet type 0 
XX  num = 2 n = 5
XX  checksum rec = a6ca comp = a6ca
XX  len = 10 data =
XX|s a test|
XXunexpected pkt 2 
XXreceive packet type 0 
XX  num = 2 n = 3
XX  checksum rec = 5a9b comp = 5a9b
XX  len = 64 data =
XX|mpson|
XXsend packet type 4
XX  num = 3 n = 0
XX  len = 0 data =
XX||
XX receive state: D
XXreceive packet type 0 
XX  num = 2 n = 4
XX  checksum rec = 1c8f comp = 1c8f
XX  len = 64 data =
XX|From sampson Fri Aug  7 15:44 CDT 1987 remote from killerThis i|
XXsend packet type 4
XX  num = 4 n = 0
XX  len = 0 data =
XX||
XX receive state: D
XXreceive packet type 0 
XX  num = 2 n = 5
XX  checksum rec = a6ca comp = a6ca
XX  len = 10 data =
XX|s a test|
XXsend packet type 4
XX  num = 5 n = 0
XX  len = 0 data =
XX||
XX receive state: D
XXreceive packet type 0 
XX  num = 2 n = 6
XX  checksum rec = 5c43 comp = 5c43
XX  len = 0 data =
XX||
XXsend packet type 4
XX  num = 6 n = 0
XX  len = 0 data =
XX||
XXsend packet type 0
XX  num = 6 n = 3
XX  len = 64 data =
XX|CY|
XXreceive packet type 4 
XX  num = 2 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XXwrong RR 3 (2) 
XXsend packet type 0
XX  num = 6 n = 3
XX  len = 64 data =
XX|CY|
XXreceive packet type 4 
XX  num = 3 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XXtransfer complete
XX receive state: F
XXreceive packet type 0 
XX  num = 3 n = 7
XX  checksum rec = 8543 comp = 8543
XX  len = 64 data =
XX|S D.ddmok46f0ff9 X.ddmokC46f0 sampson - D.ddmok46f0ff9 0666 samp|
XXsend packet type 4
XX  num = 7 n = 0
XX  len = 0 data =
XX||
XXReceiving D.ddmok46f0ff9 as X.ddmokC46f0
XXsend packet type 0
XX  num = 7 n = 4
XX  len = 64 data =
XX|SY|
XXreceive packet type 0 
XX  num = 3 n = 0
XX  checksum rec = fec2 comp = fec2
XX  len = 64 data =
XX|son|
XXsend packet type 0
XX  num = 7 n = 4
XX  len = 64 data =
XX|SY|
XXreceive packet type 4 
XX  num = 3 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XXwrong RR 4 (3) 
XXsend packet type 0
XX  num = 7 n = 4
XX  len = 64 data =
XX|SY|
XXreceive packet type 4 
XX  num = 4 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XX receive state: D
XXreceive packet type 0 
XX  num = 4 n = 1
XX  checksum rec = 9bda comp = 9bda
XX  len = 64 data =
XX|U sampson killer# return status on failureZ# return address f|
XXunexpected pkt 7 
XXreceive packet type 0 
XX  num = 4 n = 2
XX  checksum rec = 8afb comp = 8afb
XX  len = 64 data =
XX|or status or input returnR sampsonF D.kille2f281c0I D.kille2f|
XXunexpected pkt 7 
XXreceive packet type 0 
XX  num = 4 n = 0
XX  checksum rec = febb comp = febb
XX  len = 64 data =
XX|son|
XXsend packet type 4
XX  num = 0 n = 0
XX  len = 0 data =
XX||
XX receive state: D
XXreceive packet type 0 
XX  num = 4 n = 1
XX  checksum rec = 9bda comp = 9bda
XX  len = 64 data =
XX|U sampson killer# return status on failureZ# return address f|
XXsend packet type 4
XX  num = 1 n = 0
XX  len = 0 data =
XX||
XX receive state: D
XXreceive packet type 0 
XX  num = 4 n = 2
XX  checksum rec = 8afb comp = 8afb
XX  len = 64 data =
XX|or status or input returnR sampsonF D.kille2f281c0I D.kille2f|
XXsend packet type 4
XX  num = 2 n = 0
XX  len = 0 data =
XX||
XX receive state: D
XXreceive packet type 0 
XX  num = 4 n = 3
XX  checksum rec = db60 comp = db60
XX  len = 23 data =
XX|281c0C rmail sampson |
XXsend packet type 4
XX  num = 3 n = 0
XX  len = 0 data =
XX||
XX receive state: D
XXreceive packet type 4 
XX  num = 4 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XXreceive packet type 0 
XX  num = 4 n = 4
XX  checksum rec = 9bf2 comp = 9bf2
XX  len = 0 data =
XX||
XXsend packet type 4
XX  num = 4 n = 0
XX  len = 0 data =
XX||
XXsend packet type 0
XX  num = 4 n = 5
XX  len = 64 data =
XX|CY|
XXreceive packet type 4 
XX  num = 4 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XXwrong RR 5 (4) 
XXsend packet type 0
XX  num = 4 n = 5
XX  len = 64 data =
XX|CY|
XXreceive packet type 4 
XX  num = 5 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XXtransfer complete
XX receive state: F
XXreceive packet type 0 
XX  num = 5 n = 5
XX  checksum rec = 6720 comp = 6720
XX  len = 64 data =
XX|S D.kille2f291b1 D.kille2f291b1 sampson - D.kille2f291b1 0666 sa|
XXsend packet type 4
XX  num = 5 n = 0
XX  len = 0 data =
XX||
XXReceiving D.kille2f291b1 as D.kille2f291b1
XXsend packet type 0
XX  num = 5 n = 6
XX  len = 64 data =
XX|SY|
XXreceive packet type 0 
XX  num = 5 n = 6
XX  checksum rec = 55f8 comp = 55f8
XX  len = 64 data =
XX|mpson|
XXsend packet type 0
XX  num = 5 n = 6
XX  len = 64 data =
XX|SY|
XXreceive packet type 4 
XX  num = 5 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XXwrong RR 6 (5) 
XXsend packet type 0
XX  num = 5 n = 6
XX  len = 64 data =
XX|SY|
XXreceive packet type 4 
XX  num = 6 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XX receive state: D
XXreceive packet type 0 
XX  num = 6 n = 7
XX  checksum rec = 22b6 comp = 22b6
XX  len = 64 data =
XX|From sampson Fri Aug  7 15:45 CDT 1987 remote from killerThis i|
XXunexpected pkt 5 
XXreceive packet type 0 
XX  num = 6 n = 0
XX  checksum rec = 83e6 comp = 83e6
XX  len = 10 data =
XX|s a test|
XXunexpected pkt 5 
XXreceive packet type 0 
XX  num = 6 n = 6
XX  checksum rec = 55f9 comp = 55f9
XX  len = 64 data =
XX|mpson|
XXsend packet type 4
XX  num = 6 n = 0
XX  len = 0 data =
XX||
XX receive state: D
XXreceive packet type 0 
XX  num = 6 n = 7
XX  checksum rec = 22b6 comp = 22b6
XX  len = 64 data =
XX|From sampson Fri Aug  7 15:45 CDT 1987 remote from killerThis i|
XXsend packet type 4
XX  num = 7 n = 0
XX  len = 0 data =
XX||
XX receive state: D
XXreceive packet type 0 
XX  num = 6 n = 0
XX  checksum rec = 83e6 comp = 83e6
XX  len = 10 data =
XX|s a test|
XXsend packet type 4
XX  num = 0 n = 0
XX  len = 0 data =
XX||
XX receive state: D
XXreceive packet type 0 
XX  num = 6 n = 1
XX  checksum rec = 36f1 comp = 36f1
XX  len = 0 data =
XX||
XXsend packet type 4
XX  num = 1 n = 0
XX  len = 0 data =
XX||
XXsend packet type 0
XX  num = 1 n = 7
XX  len = 64 data =
XX|CY|
XXreceive packet type 4 
XX  num = 6 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XXwrong RR 7 (6) 
XXsend packet type 0
XX  num = 1 n = 7
XX  len = 64 data =
XX|CY|
XXreceive packet type 4 
XX  num = 7 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XXtransfer complete
XX receive state: F
XXreceive packet type 0 
XX  num = 7 n = 2
XX  checksum rec = f517 comp = f517
XX  len = 64 data =
XX|S D.ddmok46f11b1 X.ddmokC46f1 sampson - D.ddmok46f11b1 0666 samp|
XXsend packet type 4
XX  num = 2 n = 0
XX  len = 0 data =
XX||
XXReceiving D.ddmok46f11b1 as X.ddmokC46f1
XXsend packet type 0
XX  num = 2 n = 0
XX  len = 64 data =
XX|SY|
XXreceive packet type 0 
XX  num = 7 n = 3
XX  checksum rec = edb1 comp = edb1
XX  len = 64 data =
XX|son|
XXsend packet type 0
XX  num = 2 n = 0
XX  len = 64 data =
XX|SY|
XXreceive packet type 4 
XX  num = 7 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XXwrong RR 0 (7) 
XXsend packet type 0
XX  num = 2 n = 0
XX  len = 64 data =
XX|SY|
XXreceive packet type 4 
XX  num = 0 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XX receive state: D
XXreceive packet type 0 
XX  num = 0 n = 4
XX  checksum rec = 9bae comp = 9bae
XX  len = 64 data =
XX|U sampson killer# return status on failureZ# return address f|
XXunexpected pkt 2 
XXreceive packet type 0 
XX  num = 0 n = 5
XX  checksum rec = 1b17 comp = 1b17
XX  len = 64 data =
XX|or status or input returnR sampsonF D.kille2f291b1I D.kille2f|
XXunexpected pkt 2 
XXreceive packet type 0 
XX  num = 0 n = 3
XX  checksum rec = edac comp = edac
XX  len = 64 data =
XX|son|
XXsend packet type 4
XX  num = 3 n = 0
XX  len = 0 data =
XX||
XX receive state: D
XXreceive packet type 0 
XX  num = 0 n = 4
XX  checksum rec = 9bae comp = 9bae
XX  len = 64 data =
XX|U sampson killer# return status on failureZ# return address f|
XXsend packet type 4
XX  num = 4 n = 0
XX  len = 0 data =
XX||
XX receive state: D
XXreceive packet type 0 
XX  num = 0 n = 5
XX  checksum rec = 1b17 comp = 1b17
XX  len = 64 data =
XX|or status or input returnR sampsonF D.kille2f291b1I D.kille2f|
XXsend packet type 4
XX  num = 5 n = 0
XX  len = 0 data =
XX||
XX receive state: D
XXreceive packet type 0 
XX  num = 0 n = 6
XX  checksum rec = efb5 comp = efb5
XX  len = 20 data =
XX|291b1C rmail pete |
XXsend packet type 4
XX  num = 6 n = 0
XX  len = 0 data =
XX||
XX receive state: D
XXreceive packet type 4 
XX  num = 0 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XXreceive packet type 0 
XX  num = 0 n = 7
XX  checksum rec = 9c06 comp = 9c06
XX  len = 0 data =
XX||
XXsend packet type 4
XX  num = 7 n = 0
XX  len = 0 data =
XX||
XXsend packet type 0
XX  num = 7 n = 1
XX  len = 64 data =
XX|CY|
XXreceive packet type 4 
XX  num = 0 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XXwrong RR 1 (0) 
XXsend packet type 0
XX  num = 7 n = 1
XX  len = 64 data =
XX|CY|
XXreceive packet type 4 
XX  num = 1 n = 0
XX  checksum rec = 0 comp = 0
XX  len = 0 data =
XX||
XXtransfer complete
XX receive state: F
XXreceive packet type 0 
XX  num = 1 n = 0
XX  checksum rec = 2a6 comp = 2a6
XX  len = 64 data =
XX|H|
XXsend packet type 4
XX  num = 0 n = 0
XX  len = 0 data =
XX||
XX receive state: C
XXTop level state (master mode) C
XXTop level state (master mode) Y
XXsend packet type 0
XX  num = 0 n = 2
XX  len = 64 data =
XX|HY|
XXsend packet type 1
XX  num = 0 n = 0
XX  len = 0 data =
XX||
XXsend packet type 1
XX  num = 0 n = 0
XX  len = 0 data =
XX||
XXTop level state (master mode) P
XXMstate = Y
XXMstate = I
@//E*O*F uucico.log//
chmod u=rw,g=r,o=r uucico.log
 
echo x - makefile
sed 's/^XX//' > "makefile" <<'@//E*O*F makefile//'
XX#	Makefile for uucico
XX#	S. R. Sampson
XX#	UniFLEX Version 1.2
XX
XX#	+O is for Optimize, +Q is for don't align on quad word.
XX
XXCFLAGS =	+O +Q
XX
XXOBJ =		dcp.r dcpstart.r dcpsys.r dcpio.r dcpsend.r\
XX		dcprec.r dcpgpkt.r dcpscan.r
XX
XXuucico:	$(OBJ)
XX		cc $(CFLAGS) $(OBJ) +o=uucico
XX
XX		strip uucico
XX		perms o-rwx s+ uucico
XX		mv uucico /etc
XX		owner uucp /etc/uucico
XX
XX$(OBJ):	dcp.h uucp.h
XX
XXclean:
XX		rm *.r
@//E*O*F makefile//
chmod u=rw,g=r,o=r makefile
 
echo Inspecting for damage in transit...
temp=/tmp/sharin$$; dtemp=/tmp/sharout$$
trap "rm -f $temp $dtemp; exit" 0 1 2 3 15
cat > $temp <<\!!!
     65    237   2200 dcp.h
     19    108    698 uucp.h
     72    539   3331 dcp.doc
     98    672   4055 uuclone.doc
    575   2601  11587 uucico.log
     23     63    411 makefile
    852   4220  22282 total
!!!
wc  dcp.h uucp.h dcp.doc uuclone.doc uucico.log makefile | sed 's=[^ ]*/==' | diff -b $temp - >$dtemp
if test -s $dtemp
then echo "Ouch [diff of wc output]:" ; cat $dtemp
else echo "No problems found."
fi the ru