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