📄 ckc197.txt
字号:
3. "cd xxx?" could produce unbalanced columns, etc. 4. "cd xxx<ESC>" would fail even if only one directory started with "xxx", if a regular file also started with "xxx".Problems 3 and 4 resulted from the fact that "x = zxpand(string);" returnedthe number of *all* matching files, not just the number of directories thatmatched. But since it's far too late to change the API to add a new functionto return a list of directories, or to add an argument to zxpand(), I used ahorrible hack: cmdir() sets a global variable, dironly, if a list of onlydirectories is desired. If dironly == 0, zxpand() behaves as before. Thiswas implemented in the UNIX version of zxpand() in ckufio.c, but nowhere else,although it is easy enough to add (but not to test!) in OS-9, etc. If dironlyis to be set prior to calling to zxpand(), but MUST be restored immediatelyafter so as not to disrupt other legitimate callers throughout the code.Thus, this usage is strictly confined to cmdir() (really cmifi2()) and notdocumented in the API. 5. "cd xxx<ESC>" left a space at the end when completion was successful.It has to, in case there is a subsequent field. Peter Eichhorn asked that itstop at the "/" in case there are subdirectories, but how would we know (a)that there *are* subdirectories without descending through the entiredirectory tree, which could take hours, and (b) that even if there weresubdirectories, that this was not the directory the user wanted to CD to?So no action here. BTW, note that "if directory blah" does not use cmdir();if it did, and "blah" was not a directory, we'd get a parse error.Added SET BPRINTER (bidirectional printer port) for K95 only; Jeff will fillin details; ckuusr.[ch], ckuus3.c, 6 Jun 97. Full syntax is:SET BPRINTER [ port speed [ parity [ flow ] ] ].Fixed help text for PRINT and SET PRINTER. Put BPRINTER code in #ifdefBPRINT. 7 Jun 97.Added options to SET EDITOR and SET BROWSER. ckuus[r35].c, 8 Jun 97.Added \v(editor), \v(editopts), \v(editfile), \v(browser), \v(browsopts),\v(browsurl). ckuusr.h, ckuus4.c, 8 Jun 97.Added BROWSE command for UNIX & K95. ckcdeb.h, ckuusr.h, ckuusr.c, 8 Jun 97.Changed ^W to delete back to nonalphanum rather than back to space.ckucmd.c, 8 Jun 97.Updated help text for today's changes. ckuus2.c, 8 Jun 97.Fix GETOK -- it had garbage for the default prompt. ckuus6.c, 17 Jun 97.Added STATISTICS /BRIEF for Peter Eichhorn. ckuusr.[ch], ckuus[24].c,18 Jun 97.Fixed Telnet SEND LOCATION negotiation to send WONT, rather than WILL,if we don't have a location, in response to DO LOCATION. ckcnet.c, 18 Jun 97.Fixed EDIT and BROWSE to handle %1 (OS/2 & Windows only) and %s in the optionsstring as a filename placeholder. ckuusr.c, 18 Jun 97.Added array initializers, e.g. "declare \&a[3] {value1} {value2} {value3}".Initializers are (a) optional, (b) start with element 1, (c) can only be givenup to the size of the array, (d) must be enclosed in braces if they containspaces, (e) are stored literally and not evaluated. ckuusr.c, 18 Jun 97.Added OS-9 support for incoming TCP/IP connections, from Steve Rance<stever@ozemail.com.au>. OS-9 has no select() call, so he made a dummy one.ckcnet.c, 19 Jun 97.Defined BIGBUFOK for AIX on RISC. ckcdeb.h, 20 Jun 97.---1.1.13---Installed MINIX 2.0 changes from Terry McConnel, Math Dept, Syracuse U,trmcconn@syr.edu, plus a new makefile target. cku[tf]io.c, ckuus6.c,ckucmd.c, makefile, 28 Jun 97.Added zfnqfp() (the unspellable function) for AOS/VS. Also zmkdir() andisdir(), plus the changes for the new cmdir() support. ckcdeb.h, ckuus3.c,ckuus6.c, ckdfio.c, 29 Jun 97.Removed spurious "extern int delay" from ckcfn2.c. 29 Jun 97.Filled in MKDIR and RMDIR commands for AOS/VS. But rmdir() doesn't work forsome unknown reason; "perror" always says "30 End of File". The AOS/VS Cprogramming docs do not list any way to delete a directory. So I changed itto system("delete blah"), where blah is the directory name. It works, but itdoesn't return a status code, and it also removes regular files. Meanwhile,AOS/VS stat() sometimes crashes. There's nothing I can do about it, and nopattern I can find as to what conditions make it happen. ckuusr.c, 30 Jun 97.Changed sfile() not to send filename as FILE001, etc, if an as-name is definedas a variable that has no value. This was a bug introduced in the templatecode. "send \%1 \%2" would cause this to happen (as in the BSEND macro).ckcfns.c, ckermit2.upd, 30 Jun 97.Fixed DG isdir() to not call stat(), to prevent crashing -- now it does theappropriate VS syscall directly. Also fixed DG iswild() not to return falsepositives because of ^, which is like .. in UNIX. ckdfio.c, 1 Jul 97.Fixed cmdir() for DG to not append : to directory name during completion,because chdir() does not work if you do that. ckucmd.c, 1 Jul 97.END from inside SWITCH did not work right -- SWITCH, although implementedas a macro internally, should not count as a macro level to END. This wasalready handled correctly for FOR, WHILE, and XIF. Added SWITCH to the list.ckuusr.c, 3 Jul 97.Added cmswi(), which is just like cmkey(), but for switches (optional keywordsthat begin with "/"). If the CM_ARG bit is set in the keyword table, then theswitch takes an argument, separated by ":" or "=", e.g. /PROTOCOL:KERMIT.Otherwise, it doesn't, e.g. /BINARY. ckucmd.[ch], with some testing material(under the TYPE command) in ckuusr.[ch], 4 Jul 97.Added chained parse fields. New function cmfdb(), takes the address of an FDBstruct (containing parse function code plus inputs for the function -- helpmessage text, default, etc), as an arg, which may contain a pointer to anotherone, and so on, until the "next-FDB" pointer is null. If user's input is notparsed successfully by the first, then the second is tried, and so on to theend of the chain, at which point a parse error is returned. ESC and ? work.ckucmd.[ch], 4 Jul 97. (What does FDB stand for? I don't remember; that'swhat they were called in TOPS-20... Function Descriptor Block?)Removed testing material from the TYPE command. Added experimental XSENDcommand, which is like SEND, but takes all sorts of switches: /BINARY,/AS-NAME:xxx, etc. It replaces the old SEND, plus CSEND and PSEND, as well asMOVE and the BSEND and TSEND macros. Filled in the actions for all switches.XSEND is implemented entirely in doxsend(). ckuusr.[ch], 5 Jul 97.Finished testing & debugging XSEND command. Verified that when given noswitches, it behaves exactly like the SEND command, and so repaced the SENDcommand with doxsend(), leaving the old code still there for CSEND, PSEND,etc, so they can still be used. The new arrangement allows more and morevariations on SEND to be accomplished without adding top-level commands. Italso allows combinations that were not possible before, such as /PRINT or/MAIL with a SEND-LIST, SEND /PRINT /DELETE or SEND /COMMAND /MAIL:address.Changed MOVE, CSEND, MAIL, and RESEND to use doxsend(), since they have thesame format as SEND. Left MSEND, MMOVE separate. Added description ofswitches to ckermit2.upd, section 1.5, and new section 4.7 on SEND command.Changed HELP SEND text. 6 Jul 97.Same treatment for RECEIVE / CRECEIVE; GET / REGET / CGET / RETRIEVE.ckuus[r6].c, ckermit2.upd, 7 Jul 97.Updated help text for RECEIVE and GET. ckuus2.c, 8 Jul 97.Updated section 4.2 of ckermit2.upd to show new forms. 8 Jul 97.Added switches to MSEND and MMOVE, combined code into doxsend().Made many of the stupider command names (CGET, RETRIEVE, etc) invisible;now top-level ?-help looks a lot better. ckuusr.c, 8 Jul 97.Corrections and refinements to switch code. Fix MSEND/MMOVE when used withZMODEM, when used with /MAIL, etc. Eliminate ambiguity about what happenswhen a switch that must take an arg is followed by a space. The rule is:if a switch name ends in : or =, then if the next character is a space, thatmeans an empty value has been given, and the next field is parsed. ckuusr.c,ckucmd.c, 9 Jul 97.#ifdef adjustments for HP-UX 10.x and Digital UNIX 3.2/4.0 from JonathanKamens <jik@cam.ov.com>. ckcdeb.h, ckufio.c, ckutio.c, 12 Jul 97.Fixes (or stabs in the dark at fixes) for recently reported VMS problems; seenotes in ckvtio.c for edit 091. 12 Jul 97.Added some missing #ifdefs for protocol switching and pipesend to the recentswitch-parsing code. ckuus[r6].c, 12 Jul 97.Added some missing prototypes for recently added command-parsing functions.ckuusr.h, ckucmd.h, 12 Jul 97.--Alpha.01--Added APC check to MOVE/MMOVE -- we don't want APC strings stealing filesfrom people... ckuusr.c, 13 Jul 97.Now that we have all the pipesend / receive filter stuff in place, it turnedout to be easy to rearrange the mail-receiving code to pipe the incomingmaterial directly into the mail program (in UNIX). This has the advantages of(a) not requiring a temp file, and (b) allowing a normal subject in place ofthe filename. Temp files were bad not only because they required (a) space,and (b) writeability of the current directory, but also because using themcould result in wiping out an existing file. So now: send /mail:whoever@xyz.com /as:{Hi there} oofa.txtwhen sent to C-K results in whoever@xyz.com receiving oofa.txt as emailwith subject "Hi there". ckcpro.w, ckcfns.c, 13 Jul 97.Added /SUBJECT: as a synonym for /AS-NAME:, and fixed a couple minor glitchesrelated to mail. ckuusr.c, 13 Jul 97.Changed reception of print files (from REMOTE PRINT or SEND /PRINT) to usepipes also. UNIX only. ckcpro.w, ckcfns.c, 13 Jul 97.In response to people *still* complaining about exit warning when they swearthe modem is not asserting CD... In hupok(), ttgmdm() returns an error. Thiscan happen if we used to have carrier but now we don't and the device driverwon't let us look at the device any more (e.g. Solaris 2.5). Previously, wealways set needwarn to 1 here to be safe, but really, if CARRIER-WATCH is OFF,we already decided not to warn, so CARRIER-WATCH must be ON or AUTO, which*probably* means that we had CD on this connection before, and so if ttgmdm()fails now, it means we don't have it any more. So now let's try NOT warningwhen ttgmdm() returns an error. ckuus3.c, 13 Jul 97.Speaking of modems, in response to increasing requests for an option to ignoredialtone, added SET DIAL IGNORE-DIALTONE { ON, OFF } and SET MODEM COMMANDIGNORE-DIALTONE <command>, and a new ignoredt member to struct MDMINF, etcetc. Untested, except that SET, SHOW, and HELP work OK. ckcker.h, ckuusr.h,ckuus[234].c, ckudia.c, 13 Jul 97.Back to VMS... Noticed that zxpand() would malloc() its array of filenamesevery time it was called, but nobody would ever free them. Fixed in ckvfio.c,14 Jul 97.An off-by-one error in the switch parser caused the placeholder for highest-numbered switch value (SND_LBL) to go uninitialized, thereby making VMSC-Kermit send in labeled mode (depending what was in the uninitializedmemory). Fixed in doxsend(), ckuusr.c, 14 Jul 97.Lots of changes to isdir() and cmdir() for VMS. The idea is to make directoryparsing work as in UNIX, Windows, AOS/VS, etc, but it's much harder in VMSbecause a directory can be represented in many ways: a logical or device name,or [FOO.BAR], or DEV:[FOO.BAR], or [FOO]BAR.DIR;1, etc. This was about twodays' work, with some help on isdir() from Mark Berryman. ckucmd.c, ckvfio.c,15 Jul 97.Removed gratuitous message showing new directory from docd(). ckuus5.c,15 Jul 97.Fixed UNIX "cd ~name" to work again -- I must have broken it recently.ckucmd.c, 15 Jul 97.Changed ckindex() to accept -1 as a "starting position" argument, meaning"length of string 2". ckcmai.c, 15 Jul 97. (NOTE: fix \frindex() to takeadvantage of this...)Amplifed, reorganized, and numbered ckuins.doc. 16 Jul 97.Attempted to add support for 57600, 76899, and 115200 bps for IRIX 6.2 (thefirst release of IRIX that supports these speeds). A previous attempt atdoing this by adding -DPOSIX to the make was a disaster. This time I trieddefining POSIX for IRIX62 within ckutio.c only around ttsspd() and ttgspd(),and also defined the BPS_xxx symbols for IRIX62 in ckcdeb.h. 16 Jul 97.Mike Freeman reported that login scripts didn't work in VMS. Evidently thiswas because a new check was added for ttyfd == -1, but VMS doesn't use filedescriptors, and so ttyfd is always -1 there. Fixed doinput() in ckuus4.c toskip this test for VMS. 16 Jul 97.Found a few places where the protocol module was not setting the exit statuscode; hopefully caught them all. ckcfn2.c, 16 Jul 97. Nope, that wasn't it.The real problem was that the "what" variable was set to W_NOTHING until aprotocol transfer actually had begun. So if we timed out on the first packet,ORing "what" into the exit status had no effect. Fixed in ckcpro.w byinitializing what to 1 rather than W_NOTHING. 16 Jul 97.Changed "CD" (by itself) in VMS to simply chdir("SYS$LOGIN:"). ckvfio.c,16 Jul 97.Fixed IF ALARM to make sure both time comparands are left-padded with "0"sso they compare correctly with strcmp(). ckuus6.c, 18 Jul 97.Previously MGET and GET were synonyms. But now the new GET syntax preventsthe (little-known) feature in which you could GET a list of files, like "getoofa.txt *.ps /etc/motd". So now MGET has become a separate command that doesallow this syntax (but no as-names). This also fixes a problem with "get xxxyyy" (i.e. as-name is yyy), resulting in "?Write permission denied - yyy".It also fixes a bug with "get {xxx yyy zzz}", in which the first "{" was notremoved prior to sending the R packet. ckuusr.[ch], ckuus[26].c, 19 Jul 97.Added a note to top-level help about macro names. Changed built-in predefinednames _forx, _whilex, etc, to be invisible so they don't show up in "do ?".ckuus5.c, 19 Jul 97.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -