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