📄 ckc192.upd
字号:
Fixed a bug that caused TELNET negotiations to be ignored if C-Kermit wasused to make a TELNET connection, then a serial connection, and then aanother TELNET connection, in that order. ckuus7.c, 25 Oct 93.Merged in support for a whole new and different proprietary operating system,Stratus VOS, from David Lane at Bellsouth <David_Lane_@vos.stratus.com>. Thisis a full new C-Kermit implementation, including TCP/IP and X.25. Changes toall modules are within #ifdef STRATUS..#endif. For X.25, the symbol isSTRATUSX25. Elements common to SunLink and Stratus X.25 are now combinedunder the new ANYX25 symbol. All ckc* and cku* modules affected (exceptcku[ft]io.c). All modules must now #include "ckcsym.h" first thing to pick upother symbol definitions -- the VOS C compiler doesn't allow -D/-d for this.David also VOS-ified the ckbmkb and ckbunb programs, wart, and the mallocdebugger. 25 Oct 93. Supporting system-dependent modules -- ckl*.[ch] --still to come, along with VOS-specific documentation, build procedure, etc.Last month, Olaf Seibert <rhialto@mbfys.kun.nl> pointed out that C-Kermit,particularly on the Mac, would seem to operate in stop-and-wait mode,even though a nonzero window size was successfully negotiated. The behaviorwould sometimes change during the transfer a particular file -- windowingone minute, stop-and-wait the next. Olaf figured out that, in the "PARSENSE"case (in which C-Kermit's packet reader is length-driven rather than waitingfor the packet terminator), the packet terminator is left over in the buffer.Meanwhile, back in sdata() -- the Data-Packet sender in ckcfns.c -- thefollowing code: spack('D',pktnum,len,data); /* Send the data packet. */ x = ttchk(); /* Peek at input buffer. */ debug(F101,"sdata ttchk","",x); /* ACKs waiting, maybe? */ if (x) return(1); /* Yes, stop sending data packets */checks whether *any* data has arrived, in which case it breaks out of sendingthe current windowful and goes to read a packet. And that's just what happenswhen the packet terminator is still waiting to be read. The fix turned out tobe simple: if (x) return(1);becomes: if (x > 4) return(1);The minimum number of characters in a Kermit packet is 5, so we don't breakout of the send loop unless there are at least that many characters waiting.This tiny change should speed things up quite a bit in situations wherewindowing is needed. ckcfns.c 5A(092) 25 Oct 93.Fixed an incorrect test (nettype == NP_TELNET) in ckvtio.c. 5A(030) 27 Oct 93.Noticed by David Lane.Fixed incorrect setting of network type via command-line arguments.Noticed by David Lane. ckuusy.c.Changed the UNIX CONNECT command to buffer keystrokes, rather than readingthem one at a time. This turns out to be important when C-Kermit is "in themiddle", in CONNECT mode, between two other computers that are transferringdata. Fulvio Marino of Olivetti in Italy recoded C-Kermit's communicationsand console i/o for this very reason, but his changes are massive and wouldrequire months or years of testing, debugging, adaptation to every UNIXvariant in the world, etc, which might well be worth it, since his generalizedi/o buffering scheme makes most kinds of i/o in Kermit MUCH faster and easieron the system in terms of cycles, system calls, etc... In other words, thepresent change is just a quick fix to get a modest improvement in thisparticular case. Benchmarks using a 58K file on a network connection: No Buffering With Buffering SEND through C-Kermit in CONNECT mode: 102 sec 47 sec TRANSMIT thru C-Kermit in CONNECT mode: 237 sec 94 secSo, about a 100%+ speedup.The buffer size is only 256 bytes, since that's the biggest amount that UNIXitself seems to buffer from the console (i.e. tests on SunOS showed thatconchk() never returned a value greater than 256). No ill or side effectswere noted -- CONNECT works in the normal way during interactive use.ckucon.c 5A(055) 27 Oct 93.This code could not be adapted to VMS C-Kermit because of the insane way thatit reads characters from the keyboard. It was not adapted to OS/2 becauseOS/2 C-Kermit is never "in the middle".Changed the SET NETWORK keyword table to allow any combination of networkswithout getting compile-time syntax errors caused by too many or too fewcommas. Problem noticed by David Lane when he built VOS C-Kermit with X.25and no TCP/IP. ckuusr.c 5A(107), 28 Oct 93.Added vanity herald for NetBSD based on preprocessor symbol __NetBSD__.ckuver.h, 28 Oct 93.Disabled -j command-line option if TCPSOCKET not defined.Disabled -X and -Y command-line options if ANYX25 not defined.Suggested by David Lane. ckuusy.c, 29 Oct 93.Added a new variable, \v(parity), to allow script programs to get the currentparity, in case they need to save, change, and restore it, e.g. around adialog with a modem that doesn't work right if it sees a parity bit.ckuusr.h, ckuus4.c, 29 Oct 93.Added a new variable, \v(dialstatus), a return code from the last DIALcommand, either success or else any of twenty-some specific error codes (busy,no answer, no dialtone, etc). This allows users to write script programs thatcan decide whether to redial based on the failure reason. For now, the valueof \v(dialstatus) is a number. ckcker.h, ckudia.c, ckuus4.c. The failurereason codes are:#define DIA_UNK -1 /* No DIAL command given yet */#define DIA_OK 0 /* DIAL succeeded */#define DIA_NOMO 1 /* Modem type not specified */#define DIA_NOLI 2 /* Communication line not spec'd */#define DIA_OPEN 3 /* Line can't be opened */#define DIA_NOSP 4 /* Speed not specified */#define DIA_HANG 5 /* Hangup failure */#define DIA_IE 6 /* Internal error (malloc, etc) */#define DIA_IO 7 /* I/O error */#define DIA_TIMO 8 /* Dial timeout expired */#define DIA_INTR 9 /* Dialing interrupted by user */#define DIA_NRDY 10 /* Modem not ready */#define DIA_ERR 20 /* Modem command error */#define DIA_NOIN 21 /* Failure to initialize modem */#define DIA_BUSY 22 /* Phone busy */#define DIA_NOCA 23 /* No carrier */#define DIA_NODT 24 /* No dialtone */#define DIA_RING 25 /* Ring, incoming call */#define DIA_NOAN 26 /* No answer */#define DIA_DISC 27 /* Disconnected */#define DIA_VOIC 28 /* Answered by voice */#define DIA_NOAC 29 /* Access denied, forbidden call */#define DIA_UERR 98 /* Unknown error */#define DIA_UNSP 99 /* Unspecified failure detected by modem */From Jamie Watson <jw@adasoft.ch>:- On AIX 3.x, the xon/xoff and rts/cts values in the tty line discipline stack are saved on startup and restored on exit. This fixes a very irritating problem in which C-Kermit could leave a tty in a state that was unusable by uucp or cu.- The REDIRECT command is enabled and working on AIX 3.x and on DEC Ultrix. The AIX version has been tested on AIX 3.1.5 and AIX 3.2.x (heaven only knows what the "x" might be; I defy anyone to assign a specific value to any currently running AIX 3.2 system). The Ultrix version has been tested on a DECsystem 5000/25, Ultrix 4.3, and on a MicroVAX 2000, Ultrix 4.2.ckutio.c 5A(116) 1 Nov 93.Jamie also noticed that the new keyboard-input buffering invariably causedCONNECT/TELNET to fail under AIX, as it would have under most any System Vimplementation. The culprit turns out to be that the read() in kbget() wasgetting interrupted by the lower CONNECT fork as a result of TELNET echonegotiations, thus read() would fail with EINTR. Solution: ignore EINTRerrors when read()ing from keyboard during CONNECT. ckucon.c 5A(056) 1 Nov 93.Fixed prototype-mismatch complaints in new buffering code in SCRIPT and INPUTcommands. ckuscr.c 5A(019), ckuus4.c, 1 Nov 93.Added a compile-time symbol for ckufio.c: ISREGBUG. If this symbol isdefined, it tells ckufio.c to define S_ISREG and S_ISDIR itself, rather thanusing definitions from header files, when the latter don't work. There isalready code in ckufio.c to do this for certain systems, but the new symbolallows it to be done from the CC command line (or with KFLAGS on the "make"command line) without modifying the source code. This is necessary for atleast one of the NCR UNIX versions.Added numeric C-Kermit program version number to OS/2 C-Kermit ENQ/Answerbackstring so now it says "OS/2 C-Kermit 501190". ckocon.c 5A(104), 2 Nov 93.From CKUKER.BWR:"If a file arrives that has the same name as a directory, and C-Kermit's FILECOLLISION setting is BACKUP, C-Kermit will either: (a) rename the directory,or (b) not be able to rename the directory and so will refuse the incomingfile with the message "Can't transform filename". Similarly, if C-Kermit'sFILE COLLISION setting is OVERWRITE, C-Kermit will, hopefully (!), not be ableto delete the directory, and so will refuse the incoming file."And from CKOKER.BWR:"You can't give a command like "RECEIVE A:". C-Kermit will fail to openthe output file. You must also include a filename, e.g. "RECEIVE A:X.X"."These are now fixed. C-Kermit -- at least the UNIX and OS/2 versions -- nowhas the ability to recognize disk and directory names when they are given asoutput filespecs. When this happens, primarily when "as-names" are given inRECEIVE or GET commands, or in a '-a' command-line argument, C-Kermit nowchanges its directory (or disk) to the one given for the duration of thatcommand, and then restores the previous current disk/directory when thecommand is done. So now in UNIX, you can say "receive foo", where foo is adirectory name (relative or absolute, need not end in slash), and C-Kermitwill CD to that directory and store all the incoming files there under theirown names until protocol mode exits, at which time C-Kermit goes back to thedirectory that was current when the RECEIVE command was given. If "foo" isnot a directory, then C-Kermit stores the (first) incoming file in the currentdirectory, under the name of "foo", as before. This feature depends on thesymbol CK_TMPDIR, which is automatically defined in ckcker.h for UNIX andOS/2, and a new supporting CK?FIO.C function, isdir(), which has been filledin for UNIX and OS/2. Also, files that arrive under names which correspond todirectory names are no longer able to cause renaming or other modification todirectory files, and useful error messages are now returned in this case.Also, 'kermit -r' is bit more careful about checking whether the output filecan be created before going into protocol mode. ckcker.h, ckcfns.c 5A(093),ckuus[r56y].c 5A(108), ckufio.c 5A(075), 2 Nov 93.(Ideally, the receiving system should be able to send back a fully qualifiedfile specification in the ACK to F packet, but most systems where C-Kermitruns are not able to do this. The temporary directory name might be absoluteor relative, might have or lack a terminating separator, etc, so we'd need aton of system-dependent code to do this right.)Added the ability to repaint the fullscreen file transfer display screen, forexample if the screen gets messed up by talk or broadcast messages during filetransfer. User types Ctrl-L (or L) to repaint. Internally, two methods areused. If the symbol CK_WREFRESH is defined, which can be added to ckcdeb.hfor a particular version (as I have done for SunOS, NeXTSTEP, and AIX), oradded to a makefile entry, or given as "KFLAGS=-DCK_WREFRESH", or otherwisedefined at compile time, then the real-curses-library functions clearok() andwrefresh() are called, which totally repaint the screen -- just what we want.Otherwise, Kermit uses a do-it-yourself method which clears the screen andrepaints most of the fields, but not all of them, because certain informationmight be lost by the time repainting occurs, such as the filename and thedirection of transfer. The latter method works for all implementations offullscreen file transfer display, but making this method work for all fieldswould be a major recoding task, and would add a lot of complexity and storagespace, basically duplicating the functionality of curses itself (keeping eachfield, or an entire screen image, for repainting purposes). ckcdeb.h,ckuusx.c, ckuus5.c, 3 Nov 93.Added CK_WREFRESH for AT&T System V R3 and later, since it's in the SVID.Also for BSD 4.4 and derivatives. However, this type of change is alwaysrisky, so I also added a new symbol, NOWREFRESH, to allow this decision to beoverriden from the CC or 'make' command line. In other words, if your linkercomplains that _clearok or _wrefresh are undefined, then "touch ckuusx.c"and rebuild with -DNOWREFRESH. ckcdeb.h, 3 Nov 93.Added VMS support for CK_WREFRESH, contributed by William Bader<wbader@pluto.CSEE.Lehigh.Edu>. ckcdeb.h, ckuusx.c, 4 Nov 93.Added a makefile entry for DECstation 5000 models based on R4000 "MIPS-3"chip, Ultrix 4.3A, from Jamie Watson <jw@adasoft.ch>. 4 Nov 93.A few more minor Stratus VOS changes, having to do with X.25, from David Lane.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -