Annotation of 43BSD/contrib/kermit/ckuker.upd, revision 1.1.1.1

1.1       root        1: C-KERMIT FOR UNIX, CHANGES FROM 4C(056) TO 4C(057), 31 JUL 85:
                      2: 
                      3: general (many modules affected):
                      4: . Change "set send packet-length" to override Send-Init value.
                      5: . Change still more global character variables from int or char to CHAR.
                      6: . Fix 4.1BSD and C/70 support (Charles Brooks), 2.9 support (Herm Fischer).
                      7: 
                      8: ckcfns.c:
                      9: . Server always executes generic (but not host) commands in text mode.
                     10: . Change calling convention for getchx() to allow better reporting of eof.
                     11:   Some earlier changes had apparently broken PDP-11 support for binary
                     12:   files because of sign extension...
                     13: . Again, several hours after initial announcement of 4C(057) found that above
                     14:   change had busted things for 68000s (again) because of still more int/char
                     15:   conversion problems.  Changed 'next' from int to char and moved its file
                     16:   begin/end function to a new flag variable, 'first'.  Hopefully, not too many
                     17:   copies got out; those that did are dated 29 July; the version with this fix
                     18:   is dated 31 July.  Sigh...
                     19: 
                     20: ckuusr.c:
                     21: . Fix timing statistics to work for 16-bit machines too (Dan).
                     22: . Change calls to execl() to terminate with "(char *)0", not "0".
                     23: 
                     24: ckufio.c:
                     25: . Fix bug that sometimes prevented sending files with 14-char long names.
                     26: 
                     27: ckutio.c:
                     28: . Herm fixed it up so all the changes in previous edits that broke his
                     29:   modem control code are now more compatible with it.  Also, myread() -- the
                     30:   nonblocking equivalent of read() -- was fixed to report errors better.
                     31: 
                     32: ckudia.c:
                     33: . Many changes from Herm & Dan, mostly relating to modem control and resetting
                     34:   alarms to get the dialing-with-no-carrier-to-connected-with-carrier
                     35:   transition working again.
                     36: 
                     37: 
                     38: C-KERMIT FOR UNIX, CHANGES FROM 4C(055) TO 4C(056), 11 JUL 85:
                     39: 
                     40: ckcpro.w:
                     41: . Make new ssfile state, to allow for display of data in ack to file header.
                     42: . If data comes in ack to file header, log to transaction file.
                     43: . Put local filename in data field of ack to F packet.
                     44: . Add calls to new rtimer(), gtimer() to allow transactions to be timed.
                     45: . When sending, include D in EOF packet in all cases when interrupted.
                     46:   Previously, only "czseen" would do it, but not cxseen.
                     47: . Upon receipt of Z packet, send Ack AFTER closing file rather than before.
                     48:   If file can't be closed, send Error packet instead of Ack.
                     49: . Upon receipt of error packet while receiving file, discard file.
                     50: . Upon receipt of unexpected packet type, send Error, not Nak.
                     51: 
                     52: ckcfns.c:
                     53: . Change clsof() to accept an argument specifying whether to discard.
                     54: . Change clsof() to keep incomplete file regardless of arg if keep != 0.
                     55: . Change clsof() to return -1 if output file could not be closed.
                     56: . Change name of getch() to getchx() to avoid conflict with libraries.
                     57: . Fix Yet Another Problem with 8th-bit Quoting Negotation.  The bug was that
                     58:   if other side said 'N' we would treat 'N' as quoting prefix rather than "NO"
                     59:   (but only if parity was set to other than none).
                     60: . Remove input buffer flush from sfile() (why was it ever there???).
                     61: . Change seof() to accept an argument to put in the Z-packet data field.
                     62: . Add transaction timing statistics to reof(),reot() for transaction log.
                     63: . Combine sfile() and sxpack() into one function.
                     64: 
                     65: ckcfn2.c:
                     66: . Improve performance of rpack by reducing scan for soh to number of chars
                     67:   read rather than whole buffer (required changing inlin()'s return code).
                     68: . Allow rpack to skip over "blank lines" without failing; this was preventing
                     69:   file transfer with some systems that always sent CRLF before transmitting
                     70:   anything (e.g. UCLA's MVS/TSO VTAM).
                     71: . Don't flush input buffer at end of rpack(), because if the packet that we
                     72:   just read is a repeat or an echo, the one we want might be queued up after
                     73:   it.  Instead, flush in input() only after the desired packet arrives.
                     74: . Allow user to type ^A^C^C to interrupt rpack and exit cleanly from program.
                     75: 
                     76: ckuusr.c:
                     77: . Add "incomplete" to "set" parse table and display incomplete in "show".
                     78: . Add "%" command for comment lines.
                     79: . Add elapsed time and effective baud rate display to "statistics" command.
                     80: . Fix "show parameters", had send/receive end-of-packet reversed.
                     81: . Make modem-type lookup in "show" a little cleaner.
                     82: . Fix "echo" to interpret \ooo escapes in its argument.
                     83: 
                     84: ckuus2.c:
                     85: . Add "help set incomplete".
                     86: . Fix help message for "set line".
                     87: 
                     88: ckuus3.c:
                     89: . Add "set incomplete" support.
                     90: . Allow "set prompt" argument in doublequotes and strip quotes if used, to
                     91:   allow specification of prompt with leading &/or trailing blanks.
                     92: . Fix "set send/receive padding/pad-character" -- they had variables reversed.
                     93: 
                     94: ckufio.c:
                     95: . For Pro/Venix V1, make MAXWILD and SSPACE even smaller, so malloc() still
                     96:   has some space left to allocate...
                     97: . Change zclose() to return -1 if file could not be closed.
                     98: 
                     99: ckutio.c:
                    100: . Use Sys III/V nonblocking read() technique also for 4.xBSD -- improves
                    101:   performance noticably!
                    102: . Add rtimer() and gtimer() functions for resetting/getting elapsed time.
                    103: . Don't return failure from tthang() if line wasn't open.
                    104: . Print warning message if tthang() or ttunlk() fail.
                    105: . In ttclos(), relinquish exclusive access.
                    106: . Change some #ifdefs so they depend on features, like FIONREAD, rather than
                    107:   system, like BSD4.  This allows collapsing a lot of redundant code.
                    108: 
                    109: ckucon.c:
                    110: . Add hangup (h) option to escape character arguments.
                    111: 
                    112: ckuscr.c:
                    113: . Change static timeInt() to global scrtime() to avoid problems on code
                    114:   mapped systems.
                    115: 
                    116: 
                    117: C-KERMIT FOR UNIX, CHANGES FROM 4C(054) TO 4C(055), 28 JUNE 85:
                    118: 
                    119: ckudia.c (all changes by Dan Schullman, DEC):
                    120: . Add support for US Robotics modem (untested) from Joe Orost at Berkeley.
                    121: . Reorganize MDMINF data structure to accommodate US Robotics (some char
                    122:    fields had to become strings).
                    123: . Allow interrupts (SIGINT, e.g. ^C) to cancel dialing in progress.
                    124: . Ring bell when connection made successfully.
                    125: . Close line on failures.
                    126: . Allow stored numbers with DF100 and 200 modems.
                    127: 
                    128: ckudia.c now supports the following modems:
                    129: . Cermetek Info-Mate 212 A
                    130: . DEC DF03-AC
                    131: . DEC DF100 Series
                    132: . DEC DF200 Series
                    133: . General Data Comm 212A/ED
                    134: . Hayes Smartmodem 1200 & compatibles
                    135: . Penril
                    136: . Racal Vadic
                    137: . US Robotics 212A
                    138: . Ventel
                    139: Plus "unknown" modems and direct (modemless) connections.
                    140: 
                    141: 
                    142: C-KERMIT FOR UNIX, CHANGES FROM 4C(053) TO 4C(054), 25 JUNE 85:
                    143: 
                    144: ckuker.mak (makefile):
                    145: . Add "make ft17" for Fortune 16:32 For:Pro 1.7.
                    146: . Add "make uts24" for Amdahl UTS 2.4
                    147: . Add "make valid" for Valid Scaldstar CAD system
                    148: . Add "make c70" for BBN C/70 IOS 2.4
                    149: 
                    150: ckcmai.c:
                    151: . Add call to sysinit()
                    152: 
                    153: ck[uvm]tio.c:
                    154: . Add sysinit() function.  For VMS, open console.  For others, null for now.
                    155: 
                    156: ckutio.c, ckufio.c:
                    157: . Add support for Fortune 16:32, mostly like 4.1bsd.
                    158: . Ditto for Amdahl UTS 2.4, mostly like V7.
                    159: 
                    160: ckuus2.c:
                    161: . Expand a couple tabs in hlp1 (-h help message) so things line up right.
                    162: 
                    163: 
                    164: C-KERMIT FOR UNIX, CHANGES FROM 4C(052) TO 4C(053), 21 JUNE 85:
                    165: 
                    166: ckcfn2.c:
                    167: . Change dopar() to be of type CHAR.
                    168: . Fix dopar() to calculate odd parity correctly.
                    169: 
                    170: ckucon.c, ckuscr.c:
                    171: . Add "extern CHAR dopar();" declarations.
                    172: 
                    173: 
                    174: C-KERMIT FOR UNIX, CHANGES FROM 4C(050) TO 4C(052), 18 JUNE 85:
                    175: 
                    176: ckcfns.c:
                    177: . Repair rpar() and spar() handling of 8th bit prefix negotiation.
                    178: . In sinit(), when sending from stdin, allow "-a name" to work.
                    179: . In rcvfil(), guard against receiving a null F packet.
                    180: 
                    181: ckcmai.c:
                    182: . Change hlptxt[] to contain less than 256 characters (for Xenix)
                    183: 
                    184: ckcpro.c:
                    185: . In proto() call ttopen() with a temp, x, rather than "local", then only
                    186:   set local if x was set.
                    187: 
                    188: ckucmd.c:
                    189: . In cmifi(), make y long rather than int.  This was making some 16-bit
                    190:   machines erroneously report that files longer than 32K could not be found.
                    191: 
                    192: ckuker.mak (makefile): 
                    193: . Change symbol 3BX to ATT3BX (has to start with letter)
                    194: . Remove line continuations in the middle of strings
                    195: . Add entry for sys3nid (System III/V on PDP-11 with no I&D space)
                    196: 
                    197: ckufio.c:
                    198: . Add appropriate #ifdef for TOWER1 in zkself()
                    199: . Add 2.9bsd identification string
                    200: 
                    201: ckutio.c: 
                    202: . Move definition of CTTNAM from here to ckcdeb.h, so it can be shared.
                    203: . In initrawq() (for V7 only) read the proc table again after fork().
                    204: . Change symbol 3BX to ATT3BX.
                    205: . Get rid of the (void) casts in strxxx() invocations -- the proliferation
                    206:   of conditionals was getting ridiculous, and it was only to please lint.
                    207: . In conbin() for Sys III/V, open terminal in 7-bit, parity-enabled mode rather
                    208:   than 8-bit, no-parity mode (some sites actually use parity).
                    209: . In conint(), trap and ignore QUIT signal, trap SIGHUP and handle like SIGINT.
                    210:   This prevents lock files from being left behind after hangup or quit.
                    211: . In connoi(), turn off traps for SIGQUIT, SIGHUP.
                    212: . In ttopen(), add Sys III/V code using ctermid() to better determine remote/
                    213:   local status when stdin redirected.  If not Sys III/V and stdin redirected,
                    214:   assume local, rather than remote, so that "set speed" and other local-mode
                    215:   only commands will work.
                    216: . Add 2.9bsd identification string
                    217: . Make new ANYBSD symbol to select 4.1, 4.2, and 2.9.  In some cases, all 3
                    218:   work the same, in others, 2.9 and 4.2 are the same, 4.1 special.
                    219: 
                    220: ckuus*.c:
                    221: . In command line invocation, base local/remote determination on CTTNAM.
                    222: . In "set line" only ask ttopen() to set local/remote if not default tty.
                    223: . Ignore SIGQUIT and SIGINT signals while inferior shell active in XXSHE:.
                    224:   Previously, both Kermit and the inferior shell would catch them.
                    225: . In XYLINE: call ttopen() with a temp, x, rather than "local", then only
                    226:   set local if x was set.
                    227: . Change message "status report..." to "status report:" to avoid dot confusion.
                    228: 
                    229: 
                    230: C-KERMIT FOR UNIX, CHANGES FROM VERSION 4.2(030) TO 4C(050), 30 May 85:
                    231: 
                    232: All files except ckwart.* have been renamed according to a consistent
                    233: convention, see ckaaaa.hlp for an explanation.
                    234: 
                    235: Copyright notices added to every module, so we can't be enjoined from
                    236: distributing our own program if we give the right to other organizations,
                    237: like Berkeley, to distribute it.
                    238: 
                    239: ckwart.c
                    240: 
                    241: . Move the #define in the txt1 string to not start on a new line.
                    242: . Fix the comments printed by wart so they can't be construed as comments
                    243:   by the compiler that compiles wart.
                    244: . Include formfeed among the skipped-over whitespace characters.
                    245: . Add wart version information. 
                    246: 
                    247: ckcdeb.h (formerly ckdebu.h):
                    248: 
                    249: Forget about typedefing LONG to be unsigned long -- it causes too many
                    250: problems for PDP-11 C compilers, etc.  Just let LONG be long.
                    251: 
                    252: If symbols DEBUG and TLOG not defined (e.g. in Makefile), then define
                    253: null macros to replace calls to the debug() and tlog() functions, to save
                    254: space and execution time.  Program is too big for Macintosh with these
                    255: functions compiled in.
                    256: 
                    257: Establish a symbol NLCHAR.  If this symbol is defined, then text (ascii)
                    258: files are stored with a single character (such as lf or cr) terminating
                    259: each line, and this character is the value of NLCHAR.  If not defined,
                    260: then the system uses CRLF.  When NLCHAR is defined, C-Kermit maps between
                    261: that character and CRLF.
                    262: 
                    263: ckcfns.c, ckcfn2.c (formerly ckfns.c, ckfns2.c):
                    264: 
                    265: . change all calls to screen() to new form.
                    266: . fix bug in sfile() that sometimes prevented literal names from working.
                    267: . don't translate send-as names in sfile, always use them literally.
                    268: . change input() to always resend() after getting a NAK.
                    269: . change getpkt to clear leftovers when starting new file (next = -1),
                    270:   so that filenames in F pkt wouldn't have garbage after previous file
                    271:   was interrupted.
                    272: . Change call to zchin() to use new calling convention so bytes with
                    273:   hi bit on won't be confused with eof on some systems.
                    274: . Reset czseen in seof, not in clsif, so that remote ^X while C-Kermit
                    275:   sending will result in correct Z packet with D in data.
                    276: . In resend(), don't send any packet if packet buffer is empty.
                    277: . Un-hardwire getch() from Unix newline text file convention.
                    278: . Fix bug that sometimes resulted in contents of R or X packet
                    279:   having first character doubled.
                    280: . Fix bug in getpkt that prevented leftovers from being transmitted
                    281:   after end of file.
                    282: . Have tinit() clear c[xz]seen and filnam to prevent bad things happening
                    283:   after interruption or emergency protocol exit.
                    284: . Have syscmd() return 0 if called with null string.  This allows single
                    285:   process systems like the Macintosh to act as servers, even if they can't do
                    286:   commands like remote directory.
                    287: . Send out initial nak when doing receive, so that there will be something
                    288:   in the packet buffer to resend.
                    289: . Check for failure return code from zchout, to catch disk full errors, etc.
                    290: . When server getting input from a system function, call zopeni() on new
                    291:   ZSYSFN channel, rather than circumventing zopeni() by calling zopen().
                    292: . Clean up inlin() a little, use maxt vs MAXTRY consistently. 
                    293: . Change rpack,spack,rpar,spar,etc to use the new, separated send/receive
                    294:   packet parameters (padding,timeout,eol,soh,etc).
                    295: 
                    296: ckcker.h (formerly ckermi.h):
                    297: 
                    298: . Removed #include <stdio.h> and <ctype.h> from ckermi.h.  Macintosh does not
                    299:   need all that... (thanks, Bill)
                    300: . Remove include of ckdebu.h (now ckcdeb.h).
                    301: . Add defs for LF and NUL.
                    302: . Add def for new ZSYSFN file i/o channel.
                    303: 
                    304: ckcpro.w (formerly ckprot.w) Protocol Module:
                    305: 
                    306: . Add "a" state to cancel any transaction.
                    307: . Remove entries for input='N', since this is now handled by input().
                    308: . Fix "a" state to not cause "OK" message when files closed.
                    309: 
                    310: ckucmd.c (formerly ckcmd.c) Unix Command Package:
                    311: 
                    312: . Set global cmerrp (error prefix) to be same as prompt, but with '>' stripped.
                    313: . Allow interactive command continuation using trailing '\'.
                    314: . Change "*bp++ == NUL;" in getwd() to simply "bp++;".
                    315: . Test for CR as well as NL for line termination (for Apollo Aegis).
                    316: . In ckucmd.h, #define getchar specially for VMS and Aegis.
                    317: . In cmfld, return(0) from filling out default when ESC typed; this prevents
                    318:   "log trans <ESC>transact.log <ESC>transact.log <ESC>transact.log ..."
                    319: . In cmtxt, preserve pointers & counts across calls in case of reparse.
                    320: . In getwd, return -1, NOT -2, if ^U (line kill) is typed.
                    321: 
                    322: ckucon.c (formerly ckconu.c) Connect module:
                    323: 
                    324: . When writing to session log, make some minimal attempt to recover
                    325:   from disk full or other i/o errors (just turn off logging flag).
                    326: . Add baud and parity info to status display.
                    327: 
                    328: ckudia.c (formerly ckdial.c) Dial command:
                    329: 
                    330: . Support added for Racal-Vadic, Cermetek, Penril, General Datacomm.
                    331: . Use msleep() for higher precision timing.
                    332: 
                    333: ckufio.c (formerly ckzunx.c, and before that ckzbsd.c):
                    334: 
                    335: Started from Charles Brooks's 4.2 ckzunx.c, which is the original C-Kermit
                    336: release 4.2 version, to which he added 4.1bsd support.
                    337: 
                    338: . Fixed zltor() to only count dots after the last '/'.
                    339: . Declared malloc as "char *malloc()".
                    340: . Change fprintf(fp[n],s) to fputs(s, fp[n]) in zsout & zsoutl.
                    341: . Added zkself() function to log self out, for use by server "bye".
                    342: . Changed calling convention for zchin() to allow 68000's etc to return EOF.
                    343: . Make zopeno() chown the file to self, in case program set[ug]id'd.
                    344: . Changed znewn() to try not to contruct a name that is too long.
                    345: . Merge in Gregg Wonderly's v7 support.
                    346: . Make various changes to v7 support to fit proc table stuff to other systems.
                    347: 
                    348: . (023) Changed zopeni(), when called with new ZSYSFN channel number,
                    349:   to invoke zxcmd() to start a fork and get its fd; also changed zclose()
                    350:   and chkfn() accordingly.
                    351: 
                    352: . (024) In zchki(), allowed 0 as well as S_IFREG as S_IFMT value for ordinary
                    353:   file; Sys V stat() can return either of these values for an ordinary file.
                    354:   Also, insert missing #else in zkself().
                    355: 
                    356: . (025) declare zchki() to be of type 'long', so that it can return valid
                    357:   file sizes for big files.  Also fix internal variables that hold size to
                    358:   also be long.  (Same change to ckvfio.c.)  Also, change ckcfns.c and ckucmd.c
                    359:   to declare 'long zchki();'.
                    360: 
                    361: ckutio.c (formerly ckxunx.c and ckxbsd.c):
                    362: 
                    363: Started from Charles Brooks's 4.2 ckxunx.c, which is the original C-Kermit
                    364: release 4.2 version, to which he added 4.1bsd support.
                    365: 
                    366: . Added the following for Pro/Venix Version 1:
                    367:    - Filled in msleep() using alarm(-clockticks).
                    368:    - Filled in conchk() and ttchk() using TIOCQCNT.
                    369:    - Changed default tty name (dftty) to be "/dev/com1.dout".
                    370:    - Added line locking via /usr/spool/uucp/LCK..devname and TIOCEXCL.
                    371: . Changed local variable c from int to CHAR in ttinl().
                    372: . Let CEB's code to hangup line upon close in 4.1bsd also work for 4.2bsd.
                    373: . Removed flock() from ttopen(), call ttlock() before trying to open tty.
                    374: . Corrected some places where alarms & signals were not turned off.
                    375: 
                    376: . Changed calling convention for ttopen() to allow it to set the "local"
                    377:   variable, since ttopen can call the system to figure out whether a given
                    378:   device is the job's controlling tty.  Also had to change all modules that
                    379:   call ttopen() to pass this variable by reference instead of by value.
                    380: 
                    381: . In ttopen, copy ttname string into a static ttnmsv string global to ckutio
                    382:   module, rather than just copying the pointer (which is pointing at a moving
                    383:   target).  Should fix PC/IX tthang() problem.
                    384: 
                    385: . Add support for AT&T 3B-series under 3BX conditional; initially, it just
                    386:   follows UXIII conditional, but uses special uucp lock file name.
                    387: 
                    388: ckuusr.c, ckuus2.c, ckuus3.c (formerly ckuser.c, ckusr2.c, ckusr3.c):
                    389: 
                    390: . all occurrences of printf(s) replaced by printf("%s",s) or puts(s).
                    391: . shortening of remaining long strings.
                    392: . continuation lines now allowed in commands if line ends with "\".
                    393: . make "dir" command arg default to ".", not "*", to prevent recursive listing.
                    394: . make "!" command with no args do system("$SHELL").
                    395: . removed redundant definitions of ncmd, nrmt, nprm.
                    396: . totally redefined and rewrote screen() function.
                    397: . Change send-as to use cmtxt, not cmfld; remove cmcfm.
                    398: . Fix send command to wait for confirmation after wild filespec (this was
                    399:   broken by send-as change above, few people saw it).
                    400: . Put 'log debug' command in #ifdef DEBUG
                    401: . Put 'log transaction' command in #ifdef TLOG
                    402: . Use 'transact.log' as default name for transaction log, rather than
                    403:   'transaction.log', which is too long for all but 4.2bsd Unixes.
                    404: . Use symbols for exit() & doexit() return codes, not hardwired 0 and 1.
                    405: . Use symbol for name of init file.
                    406: . Put Unix-specific messages in #ifdef's
                    407: . In 'set line', put speed back to -1 if not local.
                    408: . Change "*xargv++;" in cmdlin() to simply "xargv++;".
                    409: . Change all "if (x = (cmcfm()) < 0)" to "if ((x = cmcfm()) < 0)".
                    410: . In ckuus3, change "turnch == y" to "turnch = y"; this bug prevented
                    411:   "set handshake" from working.
                    412: . Add code in shopar() to look up and display modem type correctly.
                    413: . Change "set line" code to have ttopen() figure out local/remote mode.
                    414: . Fix "set line" not to erroneously set ttname if it ttopen fails.
                    415: . In remote cwd parsing, accept CR as well as NL as password terminator.
                    416: . In local directory command, use DIRCMD rather than "ls -l ".
                    417: . In screen() function SCR_QE, print long argument with %ld so the ^A
                    418:   status report doesn't show all 0's on systems where ints and longs
                    419:   are different length (%ld was already used in the other screen functions).
                    420: . Fix multiline 'get' parsing to allow editing (required fixes to ckucmd.c).
                    421: . Add conditionals for init file name for various systems.
                    422: . Phase out the following set commands:
                    423:   set end-of-packet, set start-of-packet, set timeout, set padding & pad-ch.
                    424:   Replace by set send (each of these) and set receive (each of these), to
                    425:   allow inbound & outbound packet parameters to be set separately.
                    426: . Put new set send/receive params in show command display.
                    427: . Add version info for ckudia and ckuscr to 'sho ver'.
                    428: . Add init file name to 'sho param'.
                    429: . Replace system("pwd") in XXCWD code with system(PWDCMD), defined in ckufio.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.