|
|
1.1 ! root 1: C-Kermit Version 4E(070): ! 2: Status, Bugs, and Problems ! 3: As of: 4:23pm Wednesday, 23 March 1988 ! 4: ! 5: See ckuker.upd for a list of changes since the last release. 4E(066) was a ! 6: beta test release. It was tested at Columbia on various VAXes running Ultrix ! 7: 1.2 and 2.0 (4.2 and 4.3 BSD equivalents, more or less), a Pro-380 running ! 8: 2.9BSD, and an AT&T 3B20 running Sys V R2. The Unix versions need testing, ! 9: especially in local (dialout) mode on SUNs, PC's with Xenix, etc. During the ! 10: beta test, users reported that it worked on the Macintosh, on VAX/VMS (once a ! 11: the definition of syscleanup() was supplied in CKVTIO.C), on Xenix systems ! 12: once some extra #includes of "file.h" were removed, on the Pyramid once a ! 13: minor change was made to ckutio.c, and various other systems. 4E(067) just ! 14: applies these fixes, so that it can replace 4D(061) as the standard ! 15: distributed version. 4E(068) adds the ability to suspend Kermit on systems ! 16: with job control, plus support for the ATT 7300 internal modem, and ! 17: improvements to the C-Kermit server's handling of the 'remote cwd' command. ! 18: See ckuker.upd for details. ! 19: ! 20: ! 21: -- SUPPORT FOR DIFFERENT SYSTEMS: -- ! 22: ! 23: 4.2BSD: "make bsd" works. Should work on VAX, SUN, Pyramid, Convex, & others. ! 24: ! 25: 4.3BSD: "make bsd" works. ! 26: ! 27: 4.1BSD: "make bsd" should work for this too (did not in C-Kermit v4.2). ! 28: ! 29: 2.9BSD: "make bsd29" works, at least on Pro-380. Should be the same for 2.8. ! 30: ! 31: Version 7: works ok on the systems tested so far using "make v7", but some ! 32: fiddling with the make file is necessary for proc table definitions; see ! 33: the makefile and also ckuv7.hlp for details. ! 34: ! 35: PC/IX: should work ok with "make pcix". ! 36: ! 37: ATT 3Bx systems: should work ok with "make att3bx". ! 38: ! 39: Xenix: This word no longer means anything specific. Is it an old Xenix that ! 40: looks like V6 or V7 Unix? Is it a System-V-like Xenix? Is it IBM's, or SCO's, ! 41: or somebody else's, and which Xenix version is it, and which compiler version? ! 42: Look at your system's documentation to see what's really hiding under the name ! 43: Xenix and use the appropriate make option. Usually 'make xenix' or 'make sys3' ! 44: work, so long as you're using the most up-to-date version of C-Kermit, 4D(061) ! 45: or later. ! 46: ! 47: HP Integral PC -- "make sys3", but either remove code that sets up lock files, ! 48: or have the lock files put in a directory that is guaranteed to be there, ! 49: like /tmp. Some problems reported when running under csh. ! 50: ! 51: AT&T System V R3 has redefined the type of the signal() function. Use ! 52: "make sys5r3". If that doesn't work (as reportedly it does not on certain ! 53: recent Xenix systems), "make sys3" or "make xenix". ! 54: ! 55: AT&T 7300 has its own make option, "make att7300" as of 4E(068), to allow ! 56: operation with its internal modem and system support thereof. ! 57: ! 58: Most other System V or System III based systems can build a working Kermit with ! 59: "make sys3" or "make sys3nid" or "make att3bx" or (for Sys 5 R3) "make sys5r3". ! 60: ! 61: PDP-11's running a System III or V based Unix and which have no I & D space ! 62: should use "make sys3nid". ! 63: ! 64: DEC Pro-350 or -380 with Pro/Venix V2 (not V1) -- uses the regular "make sys3" ! 65: or "make sys3nid", but the file ckcfio.c might have to be edited first to ! 66: reduce the value of MAXWLD and/or SSPACE. See below under HINTS for details. ! 67: ! 68: Valid Scaldstar CAD system -- There's a "make valid" in the makefile, but ! 69: reportedly one thing is still lacking: ckutio.c needs to #include<sys/file.h>. ! 70: ! 71: For other Unix systems, see the makefile, and for further notes, consult the ! 72: messages appended chronologically below. ! 73: ! 74: VAX/VMS: support added by Stew Rubenstein at Harvard and Martin Minow at DEC. ! 75: Has to be built with CKV*.COM, needs development to handle all the VMS/RMS ! 76: features and to improve performance. See CKV*.*. VMS-specific bugs in ! 77: CKVKER.BWR. Somebody is working on upgrading the VMS support. ! 78: ! 79: Macintosh: Support originally added at Columbia for SUMACC C cross ! 80: compiler. Has own makefile, etc. Adapted by Jim Noble of PRC to ! 81: compile under Megamax C directly on the Mac. See CKM*.*. SUMACC no longer ! 82: supported, only Megamax. In fact, the current code should not be used as ! 83: the basis of any development, because a very different new version is about ! 84: to be released, written in MPW C. ! 85: ! 86: Commodore Amiga: Support added by Davide Cervone, U of Rochester, later ! 87: replaced (with Davide's consent) by new code from Phil Julian & Jack Rouse ! 88: of SAS Institute. See CKI*.*. ! 89: ! 90: -- HINTS -- ! 91: ! 92: - If the program dies with a message like "malloc fails in splitpath()" ! 93: whenever it tries to parse a filename (as in the "send" command), then ! 94: the amount of space allocated for filename expansion in the module ! 95: ckufio.c must be reduced. This can be done by changing the #defines ! 96: for MAXWLD (the maximum number of filenames) and SSPACE (the size of ! 97: static string space) to make the numbers smaller. ! 98: ! 99: - When modifying or writing Kermit code, do NOT pass to a function ! 100: (e.g., "signal") the address of a static function. Doing so may ! 101: break VENIX code mapping. If you must pass the address of the ! 102: function, make it global and pick a "non-generic" name for it that ! 103: will hopefully be unique and yet informative. ! 104: ! 105: ! 106: -- BUG LIST -- ! 107: ! 108: First, a disclaimer must be made. C-Kermit attempts to support all post-V6 ! 109: Unix variations on all machines. This is a tall order, and requires careful ! 110: attention to certain details. As changes are made (and C-Kermit is still in ! 111: stage of fairly rapid development), there is always the chance that a change ! 112: -- made to introduce a new feature or fix a bug -- will not work as intended ! 113: on some systems, even though it was tested successfully on others. The main ! 114: area to watch out for is not system differences (which are handled fairly well ! 115: in the system-dependent ck?[ft]io modules), but in compiler differences, ! 116: especially int/char confusion. Characters should be stored in variables of ! 117: type char, not int, and char/int conversion should be avoided because of ! 118: problems introduced by sign extension. And i/o should not be used to read ! 119: characters into int variables, because the way in which the system stores the ! 120: character in an int varies from system to system (e.g. 68000s put them on the ! 121: left, the VAX on the right). ! 122: ! 123: If you have received a C-Kermit release that does not work correctly (except ! 124: for the bugs & restrictions noted below), it is not because the release was ! 125: not thoroughly tested -- it was -- but because it was not tested on your system ! 126: since the last time changes were made, because of a lack of such a system to ! 127: test it on. If this happens to you, please try to track down the problem and ! 128: report as specifically as possible back to Columbia. ! 129: ! 130: ! 131: General problems: ! 132: ! 133: - The program is too big, with too many features; source is too large to fit on ! 134: some disks. Needs to be reorganized so that a minimal Kermit can be built ! 135: for any system, and then frills can be added on if desired -- interactive ! 136: command parser, help strings, dial command, script command, etc. ! 137: ! 138: - There's not a full enough set of features available from command line ! 139: invocation. Commands like "bye" are missing. This is mainly to keep the ! 140: "kermit -h" help message small enough to fit on one screen. ! 141: ! 142: - Conditionalizations are not done clearly. In some cases it might be ! 143: better to have compile-time flags for features, rather than systems, or ! 144: generic system names, rather than specific vendor/machine names, to ! 145: avoid excessive nesting or repitition of compile-time variables. ! 146: Constructions like "#ifdef FOO | BAR" are avoided because many compilers ! 147: don't understand them; the alternative is to repeat code under different ! 148: conditionals (to accomplish an OR) or to include it within nested ! 149: conditionals (AND), sometimes applying De Morgan's law to achieve the ! 150: desired result... ! 151: ! 152: - Program's return code might be wrong in some cases (in 4.0, it was always ! 153: zero; in 4C some attempt is made to return correct codes for failure and ! 154: success). Actually, no attempt has been made to correlate return codes ! 155: with success or failure of file transfer -- a bad return code only reflects ! 156: a fatal error. ! 157: ! 158: - On some systems (e.g. TRS-80 Model 16 with Xenix V7, or HP-9000 HP-UX) ! 159: C-Kermit reportedly runs VERY SLOWLY. The program could certainly do with ! 160: some tuning -- but not at the expense of modularity and transportability! -- ! 161: but in the meantime, it can probably be sped up a lot by removing the ! 162: -DDEBUG from the makefile, eliminating hundreds of function calls, many of ! 163: them in critical code (one user reports a 1250% improvement doing this on ! 164: the TRS-80 Model 16!). Another speedup could come from allowing more ! 165: systems to take advantage of "myread()" -- the nonblocking version of ! 166: read(); see below. (4E fixes this to a great extent with rewritten ttinl(), ! 167: elimination of inlin(), etc.) ! 168: ! 169: - In reality, TANDEM flow control (XON/XOFF) is not really done on most ! 170: systems, because Kermit opens the communication line in rawmode, which ! 171: has the side effect of disabling flow control. Rawmode is used in order ! 172: to allow 8-bit data. Using cooked mode & CRMOD would be possible for ! 173: text files, but 8th-bit prefixing would be required for 8-bit binary ! 174: files. But at least this would allow in-band flow control to take place. ! 175: Allegedly, 4.3BSD and Sys 5 R3 allow XON/XOFF and rawmode to coexist, ! 176: but this hasn't been verified. It doesn't seem to happen on Ultrix 2.0. ! 177: ! 178: - Need 'set' command for server timeout. ! 179: ! 180: - The timeout interval is not automatically adjusted according to the ! 181: packet length. ! 182: ! 183: - The program could be a little bit less cavalier in its treatment of files. ! 184: For instance, when receiving a file (with "warning" turned off) it will ! 185: overwrite any existing file of the same name. That's ok, but what if the ! 186: user types ^F or ^B to interrupt the transfer? This does not save the ! 187: existing file -- it's already been destroyed by the open() of the new copy, ! 188: which in turn is discarded as a result of the interruption. Maybe Kermit ! 189: should always make a temporary, unique name for incoming files, and then ! 190: rename them to their real names only after the transfer is complete. But ! 191: that's no good on systems (like the Macintosh) that don't have disk space ! 192: to burn. ! 193: ! 194: - Local versus remote mode is not, and probably can not, be determined ! 195: automatically upon startup. For instance, if you build Kermit with ! 196: "make sys3" on a 3B20 and a 3B2, the program has no way of knowing whether ! 197: it's running on a timesharing system (the 3B20, where it should be remote ! 198: by default) or a workstation (the 3B2, where it should be local by default). ! 199: If you find that Kermit comes up on your system in the wrong mode, you can ! 200: put the appropriate "set line" command in your .kermrc file -- "set line ! 201: /dev/tty" SHOULD always put you in remote mode. (Actually, problems have ! 202: been reported for this on some systems that support incoming X.25 connections ! 203: on pseudoterminals.) ! 204: ! 205: - If the program crashes or is halted (killed) from outside while it has the ! 206: terminal in a not-normal mode during command parsing or file transfer, the ! 207: terminal mode is not restored, and lock files are not cleaned up. There can ! 208: be no fix for this within C-Kermit itself. Subsequent Kermit runs may still ! 209: fail because the device is already opened by "another process" (you have ! 210: to log out & log in again to clear this one up). ! 211: ! 212: - The shell's interrupt, delete, and kill characters may interfere or ! 213: conflict with those used by the Kermit command parser. In any case, there ! 214: is no way to change Kermit's editing characters to conform to user's taste. ! 215: ! 216: - "!" command requires a space after, contrary to the Unix user's normal ! 217: expectation. ! 218: ! 219: - Many people have asked for a system-wide startup file similar to ! 220: the user's .kermrc file, perhaps with a conditional way to escape from ! 221: it if the user has her own .kermrc file. This notion might be extended ! 222: to include the entire hierarchy system -- home -- current directory. ! 223: ! 224: - Some users report that it would be more desirable to have an error during ! 225: execution of a take file return directly to command level, rather than ! 226: pop to the invoking take file, in case the error in question is of such ! 227: severity that it would cause all subsequent commands in the stack of TAKE ! 228: files to fail. Best to have a SET command to control this behavior. ! 229: (This desired behavior does occur -- or at least should occur -- when the ! 230: program is in the background.) ! 231: ! 232: - Some users report that the program should make no internal distinction ! 233: between running in foreground or background, so that program exit codes ! 234: are consistent, making it easier to debug shell scripts that invoke Kermit. ! 235: ! 236: - Speaking of background, not all systems seem to define it the same way. ! 237: If your prompt disappears, you probably have one of those systems. See ! 238: function conint() in ckutio.c, and try to figure out what's amiss. ! 239: ! 240: - Speaking of conint(), it has been reported that there may be something ! 241: wrong with the way Unix Kermit responds to hangups. Although it traps ! 242: the SIGHUP signal and cleans up and exits when a phone connection drops, ! 243: some users report that the line is unusable after that. ! 244: ! 245: - Since Kermit opens and closes the communication line with each command line ! 246: invocation, it is not convenient to use it in scripts in which it is ! 247: repeatedly invoked (e.g. a print spooler). ! 248: ! 249: - Opening & closing a comm line selected with 'set line' involves the use ! 250: of UUCP "lock files", whose use is inconsistent from one Unix variation to ! 251: another, and from site to site and system to system. The lack of a ! 252: consistent, reliable way to get guaranteed exclusive access to a ! 253: communication is one of Unix's biggest shortcomings. ! 254: ! 255: - There very little provision in the program (as yet) for running setuid. ! 256: Nor for dealing with bidirectional terminal lines. Nor with system-provided ! 257: dialer programs. Every system does these things differently. ! 258: ! 259: - Variable names are sometimes confusing, especially the send/receive parameter ! 260: pairs (spsiz/rpsize, mystch/stchr, npad/mypadn, rtimo/timint, etc). This ! 261: is mostly history... they tend to agree with the names used in other Kermit ! 262: programs. Still, they should probably be changed. Ditto for some of the ! 263: procedure names. ! 264: ! 265: - Some C compilers do not support variable names longer than 6, nor function ! 266: names longer than 5, and some are not case sensitive (one DEC-20 C compiler ! 267: has all these restrictions, and the V6 Unix C compiler has some of them). ! 268: To ensure the widest possible portability, all identifiers should comply ! 269: with these restrictions -- currently many do not. ! 270: ! 271: - When the C-Kermit server is given a host command (or even some generic ! 272: commands like 'space'), it might have to think for a long time before ! 273: returning output. In this case, it should set a timer while waiting for ! 274: input from the fork and whenever the timer goes off, it should send a null ! 275: data packet to prevent the other Kermit from timing out. ! 276: ! 277: - When connecting back to C-Kermit after a transaction, or after finishing ! 278: the server, it may be necessary to type a ^Q to clear up an XOFF deadlock. ! 279: There's not much the Kermit program can do about this... ! 280: ! 281: - When interrupting a send with ^F or ^B, an appropriate message does not ! 282: seem to make it into the transaction log. ! 283: ! 284: - The transaction log should record file type (text or binary). ! 285: ! 286: - There should be a nonverbose transaction log, in the Unix tradition, ! 287: which can be read by another program. For instance, if Kermit is ! 288: used to 'send *', but only certain of the files make across successfully, ! 289: another program could read the list of those files and do something to ! 290: them (like (re)move them). ! 291: ! 292: ckucmd.c: ! 293: ! 294: - Interactive Kermit commands that come in from a pipe (as in ! 295: "cat foo | kermit") are echoed. Some people think they should not be. ! 296: The fix can be made (at some expense) in getwd() by adding a line to ! 297: the first if () {} block, "if (!isatty(0)) echof = 1;". ! 298: (Not sure if this is still true...) ! 299: ! 300: ckufio.c: ! 301: ! 302: - ckufio currently goes to a lot of trouble to traverse the directory in ! 303: order to expand "*" and "?" in wildcards. Maybe it should just fork the ! 304: user's customary shell and have it do the expansion. This would allow ! 305: fancier filespecs to be given, like "~/ck*.[cwh]". But it would slow down ! 306: features like filename completion and menus in the interactive command ! 307: parser. (Find out how Unix FTP does it...) ! 308: ! 309: ckutio.c: ! 310: ! 311: - Myread() should be expanded to include systems that can't do nonblocking ! 312: reads, but can find out how many characters are in the input buffer -- this ! 313: would eliminate calling read() in a loop for each character during packet ! 314: transmission (e.g. Pro/Venix V1 could use "ioctl(x,TIOCQCNT,&y)", V7 could ! 315: use its buffer-queue-peeking trick, etc). (Myread() was eliminated from ! 316: BSD, and the same technique is used as in ckucon.c -- do a single-char ! 317: blocking read, then check how many more chars are in the buffer, then read ! 318: that many -- it's faster.) ! 319: ! 320: - There should be a timed option for ttoc() for use during connect so you ! 321: can escape from XOFF'd or other stuck conditions. ! 322: ! 323: - There's no good way to select baud rates higher than 9600. Most Unix systems ! 324: don't supply symbols for them (unless you use EXTA, EXTB), and even when they ! 325: do, the program has no way of knowing whether a specific port serial ! 326: controller supports those rates. ! 327: ! 328: - Use of RAW|TANDEM in 4.1 BSD gives only unidirectional, not bidirectional, ! 329: flow control -- xoff's from the terminal are treated as data rather than ! 330: control signals. Symptom: possible loss of characters during CONNECT. ! 331: ! 332: - On some systems, there is an undesired interaction between the various ! 333: open() modes, fnctl(), and ioctl() invocations when modem-control lines ! 334: are involved. Some of this due to bugs in some Unix implementations or to ! 335: inconsistencies between them (e.g. as to the behavior of TIOCEXCL, etc). ! 336: In particular, the whole business about opening modem-controlled lines ! 337: with O_NDELAY before dialing and then switching modes after causes no end of ! 338: confusion and trouble. ! 339: ! 340: ckudia.c: ! 341: ! 342: - Some systems do not allow users to manipulate dialers directly. ! 343: - Should support a "phone book" (this would actually go in ckuus*.c). ! 344: - Pro/Venix V2 (and some other Sys V-based systems) are having DTR-dropping ! 345: problems when dialing. With Pro/Venix V2, a workaround is to get the system ! 346: to ignore the modem control signals and treat the line as a direct line by ! 347: issuing a "setline -d xxx" command, where "xxx" is the device node (e.g. ! 348: com1), rather than "setline -m xxx". ! 349: - Should do "demon dialing" (keep trying till there's a connection). ! 350: ! 351: ckuus*.c: ! 352: ! 353: - When an alternate filename is given for an incoming file name, and the ! 354: alternate name is uppercase, the name is lowercased. Alternate names ! 355: should be taken literally. ! 356: ! 357: - Baud rate selection currently requires user to type a number, which is ! 358: then verified against a system-dependent table. Better to have a baud rate ! 359: keyword (cmkey) table defined in the system-dependent module, so user ! 360: can abbreviate (e.g. '9' for '9600'). Also, it's a pain having parallel ! 361: tables in ckuus3.c, ckutio.c, etc. Should consolidate this. ! 362: ! 363: - No way to put trailing comments on commands. ! 364: ! 365: - ckuus2.c reportedly makes the C optimizer run out of space under PC/IX and ! 366: some other systems. ! 367: ! 368: Protocol (ckcpro.w, ckcfn*.c): ! 369: ! 370: - No way to interrupt a protocol transaction until after it starts ! 371: successfully. For instance, no way to interrupt the timeouts and ! 372: retransmissions of the initial packet when the other side is not ! 373: responding, except for killing the whole program. Cure: check for ! 374: keyboard "interrupts" during the send-init process, set c[xz]seen. ! 375: But doing this will make the state table a lot more complicated... ! 376: Maybe change ^C trap to get back to command mode rather than exit ! 377: the program. ! 378: ! 379: ckucon.c: ! 380: ! 381: - Doesn't do any particular kind of terminal emulation. It wasn't meant to. ! 382: Filters can be used for this. Or a replacement module can be written ! 383: (as has been done for the Macintosh). ! 384: ! 385: - When sending BREAK, should clear output buffer first (this is done in BSD, ! 386: should be added for other systems to ttsndb() in ckutio.c). ! 387: ! 388: - Performance is poor on systems that can't check the input buffer or ! 389: do nonblocking read() calls. See the horrendous code that was added for V7 ! 390: to get around this (peeking into tty buffers in kernel memory). ! 391: ! 392: - As structured, connect mode can't include commands to toggle logging on ! 393: and off or to change settings, because the fork that reads keyboard input ! 394: doesn't share variables with the fork that does port i/o. ! 395: ! 396: - Reportedly, a control-S typed at the keyboard doesn't always seem to "take" ! 397: when doing terminal emulation under Pro/Venix V2 (DEC micros, terminals, ! 398: devices, systems are notorious for their insistence on doing XON/XOFF and ! 399: attendant problems. Remember the VT180?) ! 400: ! 401: - Should have a shell escape ("push"). ! 402: ! 403: ------------------------------ ! 404: ! 405: Undigested: ! 406: ! 407: Date: Sun, 24 Nov 85 04:16:02 CST ! 408: From: Stan Barber <[email protected]> ! 409: Subject: more notes on C-kermit 4C(057) ! 410: Organization: Neurophysiology, Baylor College of Medicine, Houston, Tx ! 411: ! 412: One more suggestion: ! 413: ! 414: I would provide some mechanism to allow SYSIII compatible sites to ! 415: configure what signal that might like to use to allow the child and ! 416: parent to notify each other of problems. At my site, SIGUSR1 can not ! 417: be used by kermit, so I modify ckucon.c by replacing SIGUSR1 with ! 418: SIGUSR2. That fixes everything just fine. ! 419: ! 420: At least a warning should be noted somewhere (in the .bwr file, I guess) ! 421: so that people will know to change it. ! 422: ! 423: Alternatively, I would suggest a unique name (SIGKERMIT) that the ! 424: installer can define in the makefile (e.g. -DSIGKERMIT=SIGUSR2) to ! 425: keep people from mucking in the source file. ! 426: ! 427: ------------------------------ ! 428: ! 429: Date: 9 Apr 1986 1105-EST (Wednesday) ! 430: From: Vic Abell <[email protected]> ! 431: Subject: Kermit and 4.xBSD rlogin ! 432: ! 433: There is an undocumented option on the 4.xBSD rlogin call that must be used ! 434: when C Kermit is at the end of a TCP/IP rlogin connection. The option is "-8" ! 435: and should be used in the following fashion: ! 436: ! 437: % rlogin hostname -8 ! 438: % kermit ! 439: ! 440: Vic Abell, Purdue University Computing Center ! 441: [email protected], ...!pur-ee!pucc-j!abe ! 442: ! 443: ------------------------------ ! 444: ! 445: Date: Fri 5 Sep 86 13:59:44-EDT ! 446: From: Fred Wang <[email protected]> ! 447: Subject: problem compiling kermit on the 3b2/310 ! 448: ! 449: If Mr. Ray's 3b2/310 is running the new C compiler (CFP+) he ! 450: will run into problems when he issues the 'make att3bx' command. CFP+ ! 451: uses the 'fpcc' rather than the conventional 'cc' to compile C ! 452: programs. ! 453: ! 454: My suggestion to Mr. Ray's problem (if indeed he has CFP+) is ! 455: to substitute fpcc for cc in the variables CC and CC2 in the makefile ! 456: text. This worked fine for my 3b2/310 running Unix System V 2.0.4 with ! 457: CFP+ C compiler. ! 458: ! 459: ------------------------------ ! 460: ! 461: Date: Fri, 12-SEP-1986 18:54 EDT ! 462: From: Kuryan Thomas <THOMASK@VTVAX5> ! 463: Subject: C-Kermit ! 464: To: fdccu@cuvmb ! 465: ! 466: This is Kuryan Thomas at Virginia Tech again. I talked to you about the ! 467: modem problem I was having with my 6300plus. I think I found the problem -- ! 468: tthang() does an ioctl() call to clear the CBAUD field, which ought to ! 469: cause a hangup. On my system, ioctl() doesn't like to be called with a ! 470: zero baud, and returns -1, which causes tthang() to return an error. ! 471: I think this may be why I always get a "Warning, problem hanging up the ! 472: phone" whenever I exit Kermit (regardless of the "set modem" setting). ! 473: ! 474: I don't know how to cure this, but I'm not going to try. I think I prefer ! 475: the "aberrant" behavior. This way, I can start a session on a remote ! 476: Kermit, start its server, come back down to my shell, and start a long ! 477: file-transfer in the background. This wouldn't work if Kermit could ! 478: hang up the phone, because I'd have to use Kermit interactively. I often ! 479: transfer quite large files, and it's actually an advantage instead of a bug ! 480: that C-Kermit can't hang up my phone! ! 481: ! 482: Amazing how problems can be turned to your advantage, isn't it? ! 483: ! 484: Thanks for replying to my earlier message. ! 485: ! 486: ------------------------------ ! 487: ! 488: Date: Mon, 15 Sep 86 21:35:48 CST ! 489: From: [email protected] (Stan Barber) ! 490: To: [email protected] ! 491: Subject: NEWUUCP conditional in C-KERMIT ! 492: ! 493: You do need to define the NEWUUCP conditional to get the 4.3 acucntrl support. ! 494: Also, lock files are now kept in a seperate globally writable LCK directory ! 495: so unpriviledged programs can LCK lines without have write permission on ! 496: /usr/spool/uucp. This will keep uucp from stomping on kermit. ! 497: ! 498: Stan ! 499: ! 500: (NEWUUCP is currently not defined anywhere, so this code never gets used) ! 501: ! 502: ------------------------------ ! 503: ! 504: Date: Fri, 17 Oct 86 15:17:14 EDT ! 505: From: Chris Maio <[email protected]> ! 506: To: [email protected] ! 507: Subject: telnetd "fix" ! 508: ! 509: [Ed. - The following fix allows C-Kermit to work with 4.3BSD systems which are ! 510: accessed via TCP/IP-based terminal servers. The fix is to TELNET, not Kermit. ! 511: Thanks to Chris Maio of the Columbia University Computer Science Department for ! 512: tracking down the problem and providing a workaround.] ! 513: ! 514: This fix for /etc/telnetd in 4.3 BSD is really only a workaround, designed ! 515: to allow kermit, uucp, emacs, and other programs to receive carriage-return ! 516: chararacters over a "netascii mode" telnet connection where the client is ! 517: mapping carriage return to CRLFs (what I suspect to be the most common ! 518: case for terminal servers and non-UNIX telnet implementations). The real ! 519: solution is to use telnet binary mode connections, but not all telnet clients ! 520: allow the user to negotiate this. ! 521: ! 522: In /usr/src/etc/telnetd.c, routine telrcv(), line 640, replace ! 523: ! 524: c = '\n'; ! 525: with ! 526: c = '\r'; ! 527: ! 528: This fix is inappropriate if you have telnet clients which map CR into CR NUL, ! 529: and LF into CR LF, since those clients will then be unable to generate send the ! 530: linefeed character through to the application when CRMOD is turned off. See ! 531: RFC 854 for more details. ! 532: ! 533: The basic problem is that any program that manipulates the terminal will ! 534: generally only work right if the telnet connection is "binary mode" (remember ! 535: those odd commands you have to give to a TAC?). Many telnet user interfaces, ! 536: including the terminal concentrators we use, don't provide a way for the user ! 537: to specify binary mode instead of netascii mode. TOPS-20 is a lot smarter ! 538: about this kind of thing, e.g. it negotiates telnet binary mode when a program ! 539: running on a TVT specifies binary input from its controlling terminal, but ! 540: I'm sure there are still bugs in TOPS-20's implementation. ! 541: ! 542: Chris ! 543: ! 544: ------------------------------ ! 545: ! 546: Date: Wed, 7 Jan 87 00:55:42 EST ! 547: From: [email protected] (Gary Nelson) ! 548: Subject: Xenix on IBM-PC/AT & SCO Xenix V ! 549: Keywords: Xenix, C-Kermit, SCO Xenix ! 550: ! 551: In response to request for users of C-Kermit 4D(061) on SCO Xenix: ! 552: ! 553: My configuration: IBM-PC/AT ! 554: SCO Xenix Release 2.1.3 (Update E & F) ! 555: ! 556: The dial command did not work after updating to the release of SCO ! 557: Xenix V. The following diff file corrects problem in ckutio.c that broke ! 558: the dial command. Note, if you are on SCO Release 2.1.0 - DO NOT include ! 559: this fix, leave the 4D061 version as released alone - it works fine. The ! 560: nap() mod is not neccessary - just saw it and changed it to use an available ! 561: facility. ! 562: ! 563: ********** start of diff file ********** ! 564: ! 565: 14a15,27 ! 566: > /* Modification history: ! 567: > ! 568: > 23-NOV-86 Gary B. Nelson, Nelson Associates, Manassas, VA ! 569: > As a consequence of my new release of SCO Xenix V2.1.3 ! 570: > breaking kermit: ! 571: > Mods to msleep to use nap(), note -> add "-lx" to ! 572: > LNKFLAGS in the makefile. ! 573: > Mods to tthang to make it work again, with this new release ! 574: > of XENIX (symptom was that the dial command ! 575: > stopped working, a problem that was incorrectly ! 576: > diagnosed by ?? as seen on the usenet a few days ago). ! 577: > */ ! 578: > ! 579: 527d539 ! 580: < #ifndef XENIX /* xenix cannot do close/open when carrier drops */ ! 581: 532d543 ! 582: < #endif ! 583: 1416,1418c1427 ! 584: < #ifdef XENIX ! 585: < #define CLOCK_TICK 50 /* millisecs per clock tick */ ! 586: < #else ! 587: > #ifndef XENIX ! 588: 1420d1428 ! 589: < #endif ! 590: 1431a1440,1446 ! 591: > #endif ! 592: > #endif ! 593: > ! 594: > #ifdef UXIII ! 595: > #ifdef XENIX ! 596: > nap( (long) m ); ! 597: > #endif ! 598: ! 599: ********** end of diff file ********** ! 600: ! 601: ------------------------------ ! 602: ! 603: Date: Sat, 29 Aug 87 15:37 EST ! 604: From: <[email protected]> (Rick Pim) ! 605: Subject: C-Kermit 4E Amiga .BOO File ! 606: Keywords: C-Kermit, Amiga ! 607: ! 608: The Aug 7 info-kermit digest mentioned a new release of C-Kermit ! 609: for, amongst other things, the Amiga. According to the directory I looked ! 610: at of cki* *, the BOO file is new. The digest requested comments/etc, so I ! 611: ordered the BOO file and decoded it today. According to the header once ! 612: it's running, the version is 4D. It has at least one of the same bugs as 4D ! 613: (parity does not work). ! 614: ! 615: [Ed. - Right, we don't have an Amiga .BOO file based on the new version yet. ! 616: We were hoping somebody would make one. See next message.] ! 617: ! 618: ------------------------------ ! 619: ! 620: Date: Wed, 12 Aug 87 10:25:42 pdt ! 621: From: [email protected] (Steve Walton) ! 622: Subject: C-Kermit 4E(066) on Amiga ! 623: Keywords: C-Kermit, Amiga ! 624: ! 625: Well, I grabbed C-Kermit 4E(066) from CU20B, and have been able to compile and ! 626: link a running version on my Amiga using Manx Aztec C V3.40b. In the process, ! 627: I added the appropriate include files and the DOSFH and FILENO macros for Manx ! 628: C to ckiutl.c and ckitio.c; diffs will follow shortly. (One thing which was ! 629: easy: parity can be ignored in ttinl(), since the Amiga's serial.device ! 630: handles it itself, and passes characters to Kermit with the parity bit already ! 631: stripped.) ! 632: ! 633: Stephen Walton, [email protected] ! 634: Ametek Computer Research Div. ! 635: 610 N. Santa Anita Ave. ! 636: Arcadia, CA 91006 USA ! 637: 818-445-6811 ! 638: ! 639: ------------------------------ ! 640: ! 641: Date: Thu, 3 Sep 87 08:26:14 EDT ! 642: From: [email protected] ! 643: Subject: C-Kermit 4E Problems on Tandy 16A/6000 and Arete 1200 ! 644: Keywords: C-Kermit, Tandy 16A/6000, Arete 1200 ! 645: ! 646: I've tried out the new 4E(066) release on a Tandy 16A/6000 and Arete 1200 under ! 647: System V.2. One problem I've noticed is that if you try to get the status ! 648: of the transfer, as soon as you type Cntrl A, the transmission begins to ! 649: send %T's, and eventually times out. This was during file transmissions ! 650: between the Arete and MTS Kermit. It was also reproducible between the ! 651: Arete and Tandy machines. ! 652: ! 653: [Ed. - This sounds like something pretty specific to your machine; Ctrl-A ! 654: status reports work ok on the machines we've tested. I hope you can track it ! 655: down.] ! 656: ! 657: The program compiled cleanly on both machines, except that on the Tandy end ! 658: (running under Xenix 3.1.2), I had to include <sys/types.h> for one of the ! 659: files in which void is used. ! 660: ! 661: ------------------------------ ! 662: ! 663: From: [email protected] (Stan Barber) ! 664: Subject: C-Kermit Lock Files ! 665: Date: 20 Aug 87 21:26:17 GMT ! 666: Keywords: C-Kermit, Unix Lock Files ! 667: ! 668: I should point out that C-Kermit(041) does handle lock files correctly under ! 669: BSD4.3 with the 4.3UUCP locking structure. This creates a lock directory ! 670: (/usr/spool/uucp/LCK) that is publically writable and each program (except ! 671: kermit) using the locking protocol is smart enough to test for dead locks ! 672: (coming from programs that aborted and did not remove its lock). ! 673: ! 674: Stan ! 675: ! 676: [Ed. - Presumably, this is also true for 4E?] ! 677: ! 678: ------------------------------ ! 679: ! 680: Date: 13 Sep 87 17:22:26 GMT ! 681: From: [email protected] (Warren Burstein) ! 682: Subject: patches to ckermit ! 683: Organization: Industrial Automation Systems - New York, NY ! 684: ! 685: These patches add to ckermit a "set phone" command. Aliases ! 686: are recognized in the "dial" command. My .kermrc is now full of ! 687: set phone commands. ! 688: ! 689: The new command looks like ! 690: set phone pacx 280-8050 ! 691: After this command, I can say ! 692: dial pacx ! 693: ! 694: I don't know how to make a "patch" file so here is a shar ! 695: of all the diffs. ! 696: ! 697: I am leaving the net in two days, I hope to be back on in ! 698: a while and pick up my mail from this machine. ! 699: ! 700: I didn't use any fancy methods to store phone numbers, it didn't ! 701: seem worth the effort. ! 702: ! 703: --------------- ! 704: # This is a shell archive. Remove anything before this line, then ! 705: # unpack it by saving it in a file and typing "sh file". (Files ! 706: # unpacked will be owned by you and have default permissions.) ! 707: # ! 708: # This archive contains: ! 709: # ckudia.diff ckuus3.diff ckuusr.diff ckuusrh.diff ! 710: ! 711: echo x - ckudia.diff ! 712: cat > "ckudia.diff" << '//E*O*F ckudia.diff//' ! 713: 73,75d72 ! 714: < * ! 715: < * 6-May-87 Support for phone aliases ! 716: < * -- Warren Burstein ! 717: 126d122 ! 718: < char *malloc(), *strcpy(); ! 719: 422,431d417 ! 720: < ! 721: < /* ! 722: < * Array of phone aliases, unsorted ! 723: < */ ! 724: < ! 725: < #define MAXPHONES 100 ! 726: < struct phones { ! 727: < char *name, *number; ! 728: < } phones[MAXPHONES]; ! 729: < ! 730: 528d513 ! 731: < struct phones *lookup_phone(), *p; ! 732: 530,537d514 ! 733: < if ( !isdigit(*telnbr)) ! 734: < if (p = lookup_phone(telnbr)) ! 735: < telnbr = p->number; ! 736: < else { ! 737: < printf("I don't recognize that system\n"); ! 738: < return -2; ! 739: < } ! 740: < ! 741: 866,927d842 ! 742: < } ! 743: < ! 744: < /* ! 745: < * Following code added by WB for phone aliases. ! 746: < */ ! 747: < ! 748: < /* ! 749: < * Add a phone alias. ! 750: < */ ! 751: < ! 752: < add_phone(name, number) ! 753: < char *name, *number; ! 754: < { ! 755: < struct phones *p; ! 756: < ! 757: < /* ! 758: < * If name is in use, redefine its number. ! 759: < */ ! 760: < if (p = lookup_phone(name)) { ! 761: < free(p->number); ! 762: < p->number = malloc(strlen(number) + 1); ! 763: < (void) strcpy(p->number, number); ! 764: < return; ! 765: < } ! 766: < ! 767: < /* ! 768: < * Find a vacancy in the table. ! 769: < */ ! 770: < for (p = phones; p < &phones[MAXPHONES]; p++) ! 771: < if ( !p->name) { ! 772: < p->name = malloc(strlen(name) + 1); ! 773: < (void) strcpy(p->name, name); ! 774: < p->number = malloc(strlen(number) + 1); ! 775: < (void) strcpy(p->number, number); ! 776: < return; ! 777: < } ! 778: < ! 779: < printf("There are too many phone aliases.\n"); ! 780: < } ! 781: < ! 782: < /* ! 783: < * Returns phone number to use, or NULL if phone number could not be found. ! 784: < */ ! 785: < ! 786: < struct phones *lookup_phone(name) ! 787: < char *name; ! 788: < { ! 789: < struct phones *p; ! 790: < ! 791: < for (p = phones; p < &phones[MAXPHONES]; p++) ! 792: < if (p->name && !strcmp(p->name, name)) ! 793: < return p; ! 794: < ! 795: < return (struct phones *) 0; ! 796: < } ! 797: < ! 798: < shphones() { ! 799: < struct phones *p; ! 800: < ! 801: < for (p = phones; p < &phones[MAXPHONES]; p++) ! 802: < if (p->name) ! 803: < printf("%s %s\n", p->name, p->number); ! 804: //E*O*F ckudia.diff// ! 805: ! 806: echo x - ckuus3.diff ! 807: cat > "ckuus3.diff" << '//E*O*F ckuus3.diff//' ! 808: 268,280d267 ! 809: < case XYPHONE: ! 810: < { ! 811: < char name[30], number[30]; ! 812: < ! 813: < if ( (x = cmfld("name of phone alias", "", &s)) < 0) return x; ! 814: < (void) strcpy(name, s); ! 815: < if ( (x = cmfld("phone number", "", &s)) < 0) return x; ! 816: < (void) strcpy(number, s); ! 817: < ! 818: < add_phone(name, number); ! 819: < } ! 820: < break; ! 821: < ! 822: //E*O*F ckuus3.diff// ! 823: ! 824: echo x - ckuusr.diff ! 825: cat > "ckuusr.diff" << '//E*O*F ckuusr.diff//' ! 826: 436d435 ! 827: < "phone-number", XYPHONE, 0, ! 828: 473,474c472 ! 829: < #define SHPHONE 2 /* phone numbers */ ! 830: < ! 831: --- ! 832: > ! 833: 477d474 ! 834: < "phone-aliases", SHPHONE, 0, ! 835: 1085,1089c1082 ! 836: < ! 837: < case SHPHONE: ! 838: < shphones(); ! 839: < break; ! 840: < ! 841: --- ! 842: > ! 843: //E*O*F ckuusr.diff// ! 844: ! 845: echo x - ckuusrh.diff ! 846: cat > "ckuusrh.diff" << '//E*O*F ckuusrh.diff//' ! 847: 104c104 ! 848: < #define XYPHONE 33 /* set phone alias - WB */ ! 849: --- ! 850: > ! 851: //E*O*F ckuusrh.diff// ! 852: ! 853: exit 0 ! 854: -- ! 855: /|/~\~~\ The entire world Warren Burstein ! 856: |__/__/_/ is a very strange carrot. ! 857: | But the farmer philabs!tg!pluto!warren ! 858: / is not afraid at all. Why doesn't life come with subtitles? ! 859: ! 860: ------------------------------ ! 861: ! 862: Date: Mon, 21 Sep 87 09:54:28 PDT ! 863: From: [email protected] (Kevin 0'Gorman) ! 864: Subject: C-kermit 067 / UNIX PC ! 865: ! 866: The comments in the makefile about AT&T 3bx machines DO NOT APPLY ! 867: to the 3b1. This machine uses the standard lock files. However, when using ! 868: the "shared libraries" (highly recommended) available on the UNIX PC, there ! 869: is a name conflict which makes it useful to add something like ! 870: -Dopeni=UPCOI -Ddial=UPCDIAL ! 871: to the cc command line. I accordingly create a new version, like the sys3 ! 872: entry except for this addition. I call it unixpc, though upc would also be ! 873: familiar to UNIX PC hackers. ! 874: ! 875: ------------------------------ ! 876: ! 877: Date: Wed, 23 Sep 87 08:43:02 EDT ! 878: From: [email protected] ! 879: Subject: C-Kermit on Tandy 6000 ! 880: ! 881: Regarding your question about the Tandy 6000: ! 882: I am currently running 4D(061) kermit on such a machine with no ! 883: problems. My machine has 512K memory and a 15 Meg hard drive. It ! 884: runs at 6Mhz. I have not experienced any problems with "slowness", ! 885: as other's have often described. As a matter of fact, my machine is ! 886: in reality on old Model II that was upgraded to essentially a Model 16a, ! 887: which is my case is equivalent to a Model 6000 now. Anyway, the Xenix ! 888: that Tandy current supports is Xenix 3.1.2, which is pretty much like ! 889: system III. Note that all the versions of kermit I have compiled on my ! 890: machine have been done under Xenix 3.xx. The earlier version of Xenix that ! 891: Tandy put out for the first Model 16's was done from a version 7 Unix base. ! 892: I have had no expericence with the older Xenix. However, if you are using that ! 893: version, you really should pay the $99.00 to Tandy and upgrade to version ! 894: 3.xx. (At least it was $99.00 about a year and a half ago). ! 895: Anyhow, to compile c-kermit on a 6000 under Xenix 3.xx, you need to do ! 896: two things: ! 897: 1). Look in the source files for the use of identifier "void". If you ! 898: find that identifier in a file, make sure you put the include ! 899: line "#include <sys/types.h>" at the top of that file with the ! 900: other include statements. ! 901: 2). Say make sys3, and wait awhile. If your system is fully loaded, ! 902: ie, about 90% full on the hard drive, and little memory, you may ! 903: not be able to compile the program. Make space on your hard drive ! 904: (down to around 75% free), and try again. It may take as long as ! 905: a half hour to compile. ! 906: ! 907: Note that I recently compiled the experimental c-kermit (the "new release") ! 908: on a 6000 under Xenix 3.1.2 with no problems, save for the "void" identifier. ! 909: Also note that I am the only user of my machine, ie, I don't have other ! 910: users running out of tty ports. I can't tell you what running kermit ! 911: is like on a 6000 with 2-3 other users. ! 912: ! 913: I hope this information is of help to Tandy 6000 owners trying to get kermit ! 914: up and running. ! 915: ! 916: ------------------------------ ! 917: ! 918: To: [email protected] ! 919: Subject: minor bug in c-kermit ! 920: Date: Thu, 01 Oct 87 23:52:57 EDT ! 921: From: [email protected] ! 922: ! 923: In C-Kermit 4E(067) 14 Sep 87, 4.2 BSD: ! 924: When compiling under Ultrix 2.0, using the vcc C compiler (which is slightly ! 925: better than pcc), C-Kermit doesn't compile cleanly, due the the existence ! 926: of several #ifdef vax11c lines in some of the .h files. These have been used ! 927: to denote VAX/VMS specific code. The vcc compiler pre-defines the symbol ! 928: vax11c on Ultrix just as it does on VMS. C-Kermit can be made to compile ! 929: cleanly on both Ultrix and VMS if these lines are changed to #ifdef vms. ! 930: ! 931: Keith Moore ! 932: UT Computer Science Dept. Internet: [email protected] ! 933: 107 Ayres Hall, UT Campus CSnet: moore@tennessee ! 934: Knoxville Tennessee BITNET: moore@utkcs1 ! 935: ! 936: ------------------------------ ! 937: ! 938: Date: Wed, 21 Oct 87 22:20:18 EDT ! 939: From: [email protected] (Paul Sutcliffe Jr.) ! 940: Subject: Diffs for C-Kermit 4D(061) and Tandy 6000 ! 941: Keywords: C-Kermit 4D(061), Tandy Kermit ! 942: ! 943: In Info-Kermit Digest V6 #23, I said I'd send the diffs along to compile ! 944: C-Kermit on a Tandy 6000. Here they are. Note that they assume that one is ! 945: running Tandy Xenix 3.0 or greater. ! 946: ! 947: Install these diffs in the "stock" 4D(061) C-Kermit distribution, and then ! 948: type "make trs16" to compile. In reality, you only need to make the ! 949: modification to the makefile (ckuker.mak); the other diffs just make the ! 950: startup banner agree with the operating system version -- I didn't like ! 951: kermit saying "Xenix/286" on my 68000! ! 952: ! 953: - paul ! 954: ! 955: =========== CUT HERE =========== ! 956: ! 957: *** .orig/ckuker.mak Fri Nov 21 16:04:08 1986 ! 958: --- ckuker.mak Sun Jan 18 13:29:07 1987 ! 959: *************** ! 960: *** 226,231 ! 961: "LNKFLAGS = -F 3000 -i" ! 962: ! 963: ! 964: #PC/IX, Interactive Corp System III for IBM PC/XT ! 965: pcix: ! 966: make wermit \ ! 967: ! 968: --- 226,237 ----- ! 969: "LNKFLAGS = -F 3000 -i" ! 970: ! 971: ! 972: + #Tandy 16/6000 with Xenix 3.0 ! 973: + trs16: ! 974: + make wermit "CFLAGS= -DTRS16 -DXENIX -DUXIII -DDEBUG -DTLOG -DM_VOID -Dvoid=int -F 3000 -n" \ ! 975: + "LNKFLAGS = -F 3000 -n" ! 976: + ! 977: + ! 978: #PC/IX, Interactive Corp System III for IBM PC/XT ! 979: pcix: ! 980: make wermit \ ! 981: ! 982: *** .orig/ckufio.c Fri Nov 21 16:04:08 1986 ! 983: --- ckufio.c Sat Jan 17 20:43:16 1987 ! 984: *************** ! 985: *** 63,68 ! 986: /* Sys III/V, Xenix, PC/IX,... support by Herm Fischer, Litton Data Systems */ ! 987: #ifdef UXIII ! 988: #ifdef XENIX ! 989: char *ckzsys = " Xenix/286"; ! 990: #else ! 991: #ifdef PCIX ! 992: ! 993: --- 63,71 ----- ! 994: /* Sys III/V, Xenix, PC/IX,... support by Herm Fischer, Litton Data Systems */ ! 995: #ifdef UXIII ! 996: #ifdef XENIX ! 997: + #ifdef TRS16 ! 998: + char *ckzsys = " Xenix/68000"; ! 999: + #else ! 1000: char *ckzsys = " Xenix/286"; ! 1001: #else ! 1002: #ifdef PCIX ! 1003: *************** ! 1004: *** 71,76 ! 1005: #ifdef ISIII ! 1006: char *ckzsys = " Interactive Systems Corp, System III"; ! 1007: #else ! 1008: char *ckzsys = " AT&T System III/System V"; ! 1009: #endif ! 1010: #endif ! 1011: ! 1012: --- 74,80 ----- ! 1013: #ifdef ISIII ! 1014: char *ckzsys = " Interactive Systems Corp, System III"; ! 1015: #else ! 1016: + #ifndef TRS16 ! 1017: char *ckzsys = " AT&T System III/System V"; ! 1018: #endif ! 1019: #endif ! 1020: *************** ! 1021: *** 72,77 ! 1022: char *ckzsys = " Interactive Systems Corp, System III"; ! 1023: #else ! 1024: char *ckzsys = " AT&T System III/System V"; ! 1025: #endif ! 1026: #endif ! 1027: #endif ! 1028: ! 1029: --- 76,83 ----- ! 1030: #else ! 1031: #ifndef TRS16 ! 1032: char *ckzsys = " AT&T System III/System V"; ! 1033: + #endif ! 1034: + #endif ! 1035: #endif ! 1036: #endif ! 1037: #endif ! 1038: ! 1039: *** .orig/ckutio.c Fri Nov 21 16:04:09 1986 ! 1040: --- ckutio.c Sat Jan 17 20:44:47 1987 ! 1041: *************** ! 1042: *** 96,101 ! 1043: /* Sys III/V, Xenix, PC/IX support by Herm Fischer, Encino, CA */ ! 1044: #ifdef UXIII ! 1045: #ifdef XENIX ! 1046: char *ckxsys = " Xenix/286"; ! 1047: #else ! 1048: #ifdef PCIX ! 1049: ! 1050: --- 96,104 ----- ! 1051: /* Sys III/V, Xenix, PC/IX support by Herm Fischer, Encino, CA */ ! 1052: #ifdef UXIII ! 1053: #ifdef XENIX ! 1054: + #ifdef TRS16 ! 1055: + char *ckxsys = " Xenix/68000"; ! 1056: + #else ! 1057: char *ckxsys = " Xenix/286"; ! 1058: #else ! 1059: #ifdef PCIX ! 1060: *************** ! 1061: *** 104,109 ! 1062: #ifdef ISIII ! 1063: char *ckxsys = " Interactive Systems Corp System III"; ! 1064: #else ! 1065: char *ckxsys = " AT&T System III/System V"; ! 1066: #endif ! 1067: #endif ! 1068: ! 1069: --- 107,113 ----- ! 1070: #ifdef ISIII ! 1071: char *ckxsys = " Interactive Systems Corp System III"; ! 1072: #else ! 1073: + #ifndef TRS16 ! 1074: char *ckxsys = " AT&T System III/System V"; ! 1075: #endif ! 1076: #endif ! 1077: *************** ! 1078: *** 105,110 ! 1079: char *ckxsys = " Interactive Systems Corp System III"; ! 1080: #else ! 1081: char *ckxsys = " AT&T System III/System V"; ! 1082: #endif ! 1083: #endif ! 1084: #endif ! 1085: ! 1086: --- 109,116 ----- ! 1087: #else ! 1088: #ifndef TRS16 ! 1089: char *ckxsys = " AT&T System III/System V"; ! 1090: + #endif ! 1091: + #endif ! 1092: #endif ! 1093: #endif ! 1094: #endif ! 1095: ! 1096: =========== CUT HERE =========== ! 1097: ! 1098: Paul Sutcliffe, Jr. ! 1099: ! 1100: UUCP (smart): [email protected] ! 1101: UUCP (dumb): ...{rutgers,ihnp4,cbosgd}!bpa!vu-vlsi!devon!paul ! 1102: ! 1103: ------------------------------ ! 1104: ! 1105: Date: Tue, 3 Nov 87 08:20:38 CST ! 1106: From: [email protected] ! 1107: (Richard Sharpe--Apprentice Sorcerer) ! 1108: Subject: CKermit under Unix ... ! 1109: ! 1110: We are having problems with ckermit on an Ultrix system (approx 4.3BSD). ! 1111: ! 1112: We have kermit installed setuid and setgid to uucp to allow access to the UUCP ! 1113: spool directory (to write the lock files). However, whenever kermit tries to ! 1114: write files in the user's directories (perhaps because the user is running ! 1115: kermit on the VAX in server mode and doing a send from a pc--mskermit), it ! 1116: fails saying that it cannot open the file. If the user sets their directory to ! 1117: world write, then ckermit onm the VAX is happy. ! 1118: ! 1119: Now, this seems to be an interaction between the way we have kermit installed ! 1120: and what it is trying to do, but I cannot see any other way to set up kermit ! 1121: so that it can reliably access the UUCP spool directory. ! 1122: ! 1123: So, I checked out the code, and found that zopeno in ckufio.c just does an ! 1124: open of the file that it is opening for output and then does a chown to the ! 1125: real user and real group. I added the following code, and all seems to work: ! 1126: ! 1127: 1. First pick up the real and effective UIDs. ! 1128: ! 1129: 2. Then, just before the file open, set effective UID to back to our real ! 1130: UID. ! 1131: ! 1132: 3. Then, just after the file open, set our effective UID back to what it ! 1133: was just before we changed it. ! 1134: ! 1135: Here is the code fragment that does it (lines with a * in col 1 are mine): ! 1136: ! 1137: zopeno(n,name) int n; char *name; { ! 1138: * int uid, euid; ! 1139: debug(F111," zopeno",name,n); ! 1140: if (chkfn(n) != 0) return(0); ! 1141: if ((n == ZCTERM) || (n == ZSTDIO)) { /* Terminal or standard output */ ! 1142: fp[ZOFILE] = stdout; ! 1143: debug(F101," fp[]=stdout", "", (int) fp[n]); ! 1144: return(1); ! 1145: } ! 1146: * uid = getuid(); euid = geteuid(); ! 1147: * seteuid(uid); /* Set us back to who is running kermit */ ! 1148: fp[n] = fopen(name,"w"); /* A real file, try to open */ ! 1149: * seteuid(euid); /* And set things back to our SUID value */ ! 1150: if (fp[n] == NULL) { ! 1151: perror("zopeno can't open"); ! 1152: } else { ! 1153: chown(name, getuid(), getgid()); /* In case set[gu]id */ ! 1154: if (n == ZDFILE) setbuf(fp[n],NULL); /* Debugging file unbuffered */ ! 1155: } ! 1156: debug(F101, " fp[n]", "", (int) fp[n]); ! 1157: return((fp[n] != NULL) ? 1 : 0); ! 1158: } ! 1159: ------------------------------------ ! 1160: ! 1161: Now, as I say, this works, but I wonder if there is not a simpler way to get ! 1162: this done, like only have kermit setgid to uucp. Would that be sufficient? ! 1163: ! 1164: BTW, this fragment came from version 4c(029) of ckufio.c. I also have ! 1165: another version (ckcmai 4d(061) 8-Sep-86 and ckufio 4c(033) 8-Sep-86) but ! 1166: there seems to be no changes in routine zopeno. ! 1167: ! 1168: Hope you can help me here. ! 1169: ! 1170: Regards ! 1171: Richard Sharpe ! 1172: rsharpe%[email protected] ! 1173: ! 1174: ------------------------------ ! 1175: ! 1176: Date: Wed, 4 Nov 87 09:54:09 CST ! 1177: From: [email protected] ! 1178: (Richard Sharpe--Apprentice Sorcerer) ! 1179: Subject: CKermit under Unix ... ! 1180: ! 1181: I have found problems with my solution that are to do with the differences ! 1182: between sysV and 4.2 (I read about this setuid stuff in Bach's book), so I am ! 1183: going to fix it up properly for SysV and 4.2/Ultrix. I also have access to a ! 1184: MicroPort 2.2 system, so I will try to get it working on that system as well. ! 1185: Finally, across the road is an NCR Tower, so I will try to get it running on ! 1186: that. ! 1187: ! 1188: When I do, I will ship you a copy of the changes. I may also try to fix the ! 1189: problem where you wipe out the existing file if a send is aborted. However, ! 1190: let me know if someone has already fixed this. ! 1191: ! 1192: Regards ! 1193: Richard ! 1194: ! 1195: ------------------------------ ! 1196: ! 1197: Date: Wed 4 Nov 87 09:40:00-EST ! 1198: From: Frank da Cruz <[email protected]> ! 1199: Subject: Re: CKermit under Unix ... ! 1200: To: [email protected] ! 1201: ! 1202: Sounds good. And no, nobody has sent in a fix for wiping out an existing ! 1203: file when the transfer is aborted, and "warning" is off. Of course, if ! 1204: people care about this, they should set warning on. But to be super nice ! 1205: to them, I suppose Kermit could behave as though warning was on all the time, ! 1206: i.e. give a new, unique name to an incoming file if another file by the ! 1207: desired name already exists. Then, if the transfer finishes successfully, ! 1208: delete the old file and rename the new one to the desired name. Otherwise, ! 1209: delete the new file and keep the old one. - Frank ! 1210: ! 1211: ------------------------------ ! 1212: ! 1213: Date: Sun, 6 Dec 87 16:02 MST ! 1214: From: <JRD%[email protected]> (Joe Doupnik) ! 1215: Subject: CKermit bug in MAXL field w/Long pkts. ! 1216: ! 1217: A small problem in CKermit 4E(067) 14 Sept 1987: when using Long ! 1218: Packets the MAXL field in the initialization packet is incorrect. For example, ! 1219: when the received packet size is set to 1000 bytes (Set Rec Pack 1000) then ! 1220: MAXL is transmitted as a Control-H (8) and when the size is set to 997 bytes ! 1221: then MAXL is Control-E (5). This indicates that somewhere the parameter rpsiz ! 1222: is referring to the Long packet length rather than the desired size of regular ! 1223: packets and tochar(rpsiz) is, of course, extracting the 8 bit remainder of ! 1224: rpsiz + 32d. Curiously, manually overriding the startup length yields a correct ! 1225: field for the initial S packet interchange with the server but an incorrect ! 1226: value for the S packet interchange for a particular file. ! 1227: In practice this has little effect because Long packet lengths are ! 1228: used from their separate information and when they are not used the MAXL ! 1229: field is correct. ! 1230: Regards, ! 1231: Joe D. ! 1232: ! 1233: ------------------------------ ! 1234: ! 1235: A user at NBS complained that the makefile does not work for building ! 1236: C-Kermit from source on a PC/AT under Microsoft Xenix version 3.4B. ! 1237: It compiled all the source files into object files, but did not link them ! 1238: together into "wermit". After much experimentation, he found that he ! 1239: could link the program manually: ! 1240: ! 1241: cc -F3000 -i -o wermit <list of object files> ! 1242: ! 1243: ------------------------------ ! 1244: ! 1245: Date: 27 Jan 88 10:59 EST ! 1246: From: [email protected] (John Junod) ! 1247: Subject: C-Kermit Timeout Problem Fix ! 1248: Keywords: C-Kermit 4E(068) ! 1249: ! 1250: The following code was developed about a year and a half ago by Mark A. ! 1251: Thomas here at David Taylor Research Center to solve the time-out problem as ! 1252: mentioned in the Info-Kermit Digest, V7 #3. ! 1253: ! 1254: Hope this helps.... ! 1255: ! 1256: L. John Junod ! 1257: junod@dtrc ! 1258: ! 1259: /* The following fix was made in kermit to prevent the local machine from ! 1260: timing out the terminal line. The local machine uses the last access time ! 1261: of /dev/ttyXX to check for an inactive terminal. Fancy kermit i/o doesn't ! 1262: update /dev/ttyXX while packets are sent/received. Since a packet doesn't ! 1263: update the access time of the tty line, The local machine thinks the line is ! 1264: inactive and times it out after 5-10 minutes. A call to the routine ! 1265: check_time() is made in spack() and rpack(), and after 50 packets the tty ! 1266: time is updated. 60 packets at 300 baud take about 5 minutes to send, so 50 ! 1267: packets is safe. */ ! 1268: ! 1269: /* included to fix local timeout problem */ ! 1270: ! 1271: #include "signal.h" ! 1272: #include "sys/types.h" ! 1273: #include "sys/timeb.h" ! 1274: #define NULL 0x0 ! 1275: ! 1276: /* C H E C K _ T I M E -- Fix timeout during packet sending and ! 1277: receiving. Since packets don't update the ! 1278: tty access and modify times, we do it. */ ! 1279: ! 1280: check_time() ! 1281: { ! 1282: static char *tty_name = (char *) NULL; ! 1283: static int i = 0; ! 1284: char *ttyname(),*calloc(); ! 1285: struct timeb tbp; ! 1286: time_t t[2]; ! 1287: if (tty_name == NULL) ! 1288: { ! 1289: tty_name = calloc(32,sizeof(char)); ! 1290: strcpy(tty_name,ttyname(0)); /* allocate and get tty name of stdin */ ! 1291: } ! 1292: i++; ! 1293: if (i > 50) ! 1294: { ! 1295: i = 0; ! 1296: ftime(&tbp); /* get system time */ ! 1297: t[0] = tbp.time; ! 1298: t[1] = tbp.time; ! 1299: utime(tty_name,t); /* update tty time */ ! 1300: } ! 1301: } ! 1302: ! 1303: [Ed. - This would probably do the trick for BSD, but all the time stuff is ! 1304: system dependent. BSD, Sys V, Xenix, Venix, V7, etc, have different ways of ! 1305: getting the time. Meanwhile, this message has been added to the C-Kermit ! 1306: "beware file".] ! 1307: ! 1308: ------------------------------ ! 1309: ! 1310: Date: Mon, 1 Feb 88 15:23:59 EST ! 1311: From: Gary P Standorf <[email protected]> ! 1312: Subject: Ifdef problem with ckuus3.c.2 ! 1313: ! 1314: When I tried compiling C-Kermit 4E(070) on an Intel-310 running ! 1315: SCO Xenix 3.4 it blew up in the ckuus3.c module. It doesn't like the ! 1316: #include <termio.h> line which follows the #ifdef UXIII in ckuus3.c. ! 1317: I added an #ifndef XENIX before the include for termio.h and then it ! 1318: compiled ok. I am including a context diff for your convenience. ! 1319: ! 1320: PS. I hope that doing an #ifndef was the proper thing to do, since I'm not ! 1321: sure what other versions of XENIX need. ! 1322: ! 1323: Thanks, ! 1324: ! 1325: Gary Standorf ! 1326: <[email protected]> ! 1327: ! 1328: --------------------------------------------------------------------------- ! 1329: *** ckuus3.c Mon Feb 1 14:58:01 1988 ! 1330: --- ckuus3.c.new Mon Feb 1 14:55:46 1988 ! 1331: *************** ! 1332: *** 20,25 ! 1333: #include "ckucmd.h" ! 1334: #include "ckuusr.h" ! 1335: #ifdef UXIII ! 1336: #include <termio.h> ! 1337: #endif ! 1338: ! 1339: ! 1340: --- 20,26 ----- ! 1341: #include "ckucmd.h" ! 1342: #include "ckuusr.h" ! 1343: #ifdef UXIII ! 1344: + #ifndef XENIX ! 1345: #include <termio.h> ! 1346: #endif ! 1347: #endif ! 1348: *************** ! 1349: *** 21,26 ! 1350: #include "ckuusr.h" ! 1351: #ifdef UXIII ! 1352: #include <termio.h> ! 1353: #endif ! 1354: ! 1355: #ifdef datageneral ! 1356: ! 1357: --- 22,28 ----- ! 1358: #ifdef UXIII ! 1359: #ifndef XENIX ! 1360: #include <termio.h> ! 1361: + #endif ! 1362: #endif ! 1363: ! 1364: #ifdef datageneral ! 1365: ! 1366: ------- ! 1367: ! 1368: Date: Tue, 2 Feb 88 02:39:45 CST ! 1369: From: Donn Baumgartner <[email protected]> ! 1370: Subject: bug/problem ! 1371: ! 1372: version: 4e(70) [I think] ! 1373: system: pc/ix ! 1374: problem ! 1375: description: compilation fails during link phase with unresolved reference ! 1376: to _getcwd (and _end, but that doesn't count) ! 1377: ! 1378: The problem is in ckufio.c, in routine zgtdir(); the #ifdef's there are ! 1379: not correct for pc/ix (there, grouped with UXIII). ! 1380: ! 1381: I have two fixes: ! 1382: (1) just have the call return the (un-ifdef'ed) default, a pseudo ! 1383: error message (it's something like "(undefined..."); not a ! 1384: very elegant solution, but functional. ! 1385: (2) I have programmed the berkeley-like call 'getwd' along with ! 1386: supporting directory routines opendir, closedir, etc.; I did ! 1387: these some time ago - they're well tested. You're welcome to ! 1388: this source, if you like. ! 1389: ! 1390: I have integrated the (2) solution into my copy; it's not clear whether ! 1391: either solution is 'better', as I didn't notice how important that routine ! 1392: was in the whole scheme of things... ! 1393: cheers, ! 1394: Donn Baumgartner ! 1395: [email protected] ! 1396: ------- ! 1397: ! 1398: Date: Wed, 10 Feb 88 22:29:13 EST ! 1399: From: rochester!ames!ucbcad!ucbvax.Berkeley.EDU!- ! 1400: [email protected] (Rahul Dhesi) ! 1401: Subject: Re: Unix Kermit Idle Line Problem ! 1402: ! 1403: This is an answer to a query from [email protected] (Michael Galassi) ! 1404: dated 28 Dec 87 00:42:59 GMT, in which he said that users using ! 1405: "C-Kermit, 4C(057) 31 Jul 85, 4.2 BSD" are timed out for being idle ! 1406: even though they are doing Kermit file transfers. Here is my ! 1407: work-around as it was posted in a local newsgroup. ! 1408: ! 1409: "By popular demand, here again is the technique for avoiding inactivity ! 1410: timeouts when doing a long file transfer via Kermit. ! 1411: ! 1412: Step 1. At the system prompt, give the command "tty". This command ! 1413: will print your terminal name. It will be of the form /dev/tty15 ! 1414: where instead of 15 you will see the number of your terminal. ! 1415: Remember it. ! 1416: ! 1417: Step 2. Invoke Kermit interactively with the command "kermit" given ! 1418: without parameters. (Actually you can give parameters too, so long ! 1419: as they don't cause Kermit to begin data transfer immediately.) ! 1420: When Kermit starts up and prints the prompt "C-Kermit", you go to: ! 1421: ! 1422: Step 3. To Kermit, give the command "set line /dev/tty15". In place ! 1423: of the 15, use whatever terminal number you obtained in Step 1. ! 1424: ! 1425: Step 4. Now give Kermit the commands necessary to begin your file ! 1426: transfer. You will not get an inactivity timeout. ! 1427: ! 1428: Users who want to win fame on this system and the gratitude of others ! 1429: can change Kermit so that the above sequence will not be necessary. ! 1430: Currently Kermit uses the standard device /dev/tty which is synonymous ! 1431: with your actual terminal. However, the operating system treats it ! 1432: like a distinct device from your actual terminal. So, even though a ! 1433: file transfer is going on using /dev/tty, the actual terminal, say ! 1434: /dev/tty15, seems to be idle to the system, so you can get logged out. ! 1435: This can be fixed by (a) finding the place where Kermit opens /dev/tty ! 1436: and (b) replacing that with an open of the actual terminal name, which ! 1437: can be obtained from the system call ttyname()." ! 1438: ! 1439: Rahul Dhesi UUCP: {ihnp4,seismo}!{iuvax,pur-ee}!bsu-cs!dhesi ! 1440: ! 1441: [Ed. - We'll consider this for the next release. Meanwhile, this message ! 1442: has been added to the C-Kermit "beware file", CKUKER.BWR.] ! 1443: ! 1444: ------------------------------ ! 1445: ! 1446: Date: 10 Feb 88 23:09:57 EST (Wed) ! 1447: From: [email protected] (Len Rose) ! 1448: Subject: C-Kermit 4E(070) ! 1449: Keywords: C-Kermit 4E(070) ! 1450: ! 1451: One little note to people setting up this on an ATT 3B2 running under ! 1452: SYSVR3... They have two options in the makefile that sort of clash when you ! 1453: are bringing up this software.. You either have to choose: ! 1454: ! 1455: make att3bx or make sys5r3 ! 1456: ! 1457: If you don't choose att3bx,the code does not look for the LCK..ttyxx in ! 1458: /usr/spool/locks ... However if you choose att3bx,it does not handle signals ! 1459: correctly... All I did to defeat this was just put a #define in ckutio.c for ! 1460: att3bx... ! 1461: ! 1462: Just thought I'd pass this on, no big deal with it... ! 1463: ! 1464: Len ! 1465: ! 1466: [Ed. - Sigh, lock files again. There must be some better approach. Are ! 1467: there any Unix experts out there who can suggest a better way to deal with ! 1468: this problem, than requiring Kermit itself know the directory name, the ! 1469: filename, the permissions, and the contents of the lock file on every version ! 1470: of every Unix variant? Perhaps a separate program that runs Kermit in a ! 1471: lower fork, or a program that Kermit runs in a lower fork. Of course, ! 1472: separate programs have a way of getting lost...] ! 1473: ! 1474: ------------------------------ ! 1475: ! 1476: Date: Fri, 12 Feb 88 12:34:08 EST ! 1477: From: David Herron E-Mail Hack <[email protected]> ! 1478: To: [email protected] ! 1479: Subject: Bug Report for C-Kermit 4E(070) on Unix PC (3b1) ! 1480: ! 1481: I've gotten a copy of C-Kermit and am trying it out on various machines. ! 1482: Mainly my Unix-PC since it's advertised to support the UnixPC. ! 1483: ! 1484: First off, it wouldn't even compile right. In ckudai.c there is a "static ! 1485: MDMINF ATT7300" which simply CANNOT be right. The problem is that you're also ! 1486: using "ATT7300" as the pre-processor symbol to select UnixPC features, and it ! 1487: has a null value, and the statement ends up looking like: ! 1488: "struct mdminf = { ... };" which is a syntax error. ! 1489: ! 1490: My workaround for the moment is to make all references to that symbol to be ! 1491: "att7300" and make sure it's "static". The preprocessor on UnixPC's is of the ! 1492: style that doesn't allow: ! 1493: ! 1494: #define ATT7300 ATT7300 ! 1495: ! 1496: because it complains about macro recursion. (Oh, BTW, I'm running SYSV r3.51, ! 1497: the latest version for Unix PC's). ! 1498: ! 1499: Next, the makefile stuff for supporting the shared libraries is wrong. When ! 1500: doing an ld to use the shared libraries, at least on Unix PC's, you pretty ! 1501: much have to use ld directly like: ! 1502: ! 1503: ld {some options} /lib/shlib.ifile {object files} ! 1504: {more options} /lib/shlib ! 1505: ! 1506: I may be off in a detail or two, but the point is that the way it was written ! 1507: in the makefile was very wrong, as evidenced by all the multiply defined ! 1508: symbols. Further, if I undo the stuff for the shared libraries I get ! 1509: "tgetent" and a couple of other termcap functions as being undefined. And I ! 1510: can't find those functions in any of the libraries on the system. What I ! 1511: ended up doing was using a "cc" front end which handles loading the shared ! 1512: libraries properly and has support for programs which use curses. It was ! 1513: posted recently in unix-pc.sources and I could forward it to y'all if you ! 1514: want. (It's the one named "ccc", there's at least one other of these ! 1515: scripts). ! 1516: ! 1517: Using "ccc" I got it pretty close, but there's a routine in /lib/shlib named ! 1518: "openi" and there was a conflict between it and the one y'all had in ckcfns.c ! 1519: -- the workaround here is to declare YOUR openi() to be static (which works ! 1520: because it's not used in any other of your files), and don't forget to put a ! 1521: "static openi();" at the beginning of the file as well. There's even a ! 1522: section reserved up there for local variables. ! 1523: ! 1524: Now I've got a program that compiles and loads without errors. In testing ! 1525: some functionality: ! 1526: ! 1527: I started with the remote kermit in server mode and transferred /bin/cat to ! 1528: the remote (a 4.3bsd vax running kermit 4C(057)) and then got it back ("get ! 1529: cat"). The result is a cat that is one byte shorter, but is otherwise exactly ! 1530: the same. Now, this is a real neat trick too, 'cause it starts and ends with ! 1531: the EXACT same bytes (I looked using od)! This shouldn't work out like this. ! 1532: The new copy should be missing a byte at the end, but we've got the same byte ! 1533: at the end. There isn't a byte missing in the middle 'cause "cmp" doesn't ! 1534: find it, and if I "diff" the "od -c" output from each file, the ONLY ! 1535: difference is the byte count at the very end. ! 1536: ! 1537: I'm more than a little confused about that one ... ! 1538: ! 1539: While the remote is in server, the local kermit acts rather strangely. ! 1540: Possibly when doing ANY command, but definitely when doing send, get, and "!" ! 1541: commands, to get back to command level from the command I have to type ^R ... ! 1542: the only other character I've tried is <CR> which didn't get me back to ! 1543: command level. Further, I once hit an empty line then started to do a shell ! 1544: escape and it dumped me OUT of kermit and said something about an invalid ! 1545: shell command. (an asice: There's times when I hate command processors which ! 1546: read what I'm typing and complain before I get a chance to fix typing errors ! 1547: ...) ! 1548: ! 1549: FINALLY: ! 1550: ! 1551: In order to successfully connect to the modem and make a phone call I have to ! 1552: enter this non-intuitive sequence of commands: ! 1553: ! 1554: ! rm /usr/spool/uucp/LCK..ph0 ! 1555: set line /dev/ph0 ! 1556: set modem att7300 ! 1557: set speed 1200 ! 1558: dial <phone number> ! 1559: ! phtoggle ! 1560: dial <phone number> ! 1561: ! 1562: If I don't remove the lock file first, the set line command of course will ! 1563: complain about the lock file being there. But if I go ahead and phtoggle then ! 1564: set line, the open in set line never returns and I hang. Then, there's some ! 1565: other state where if I phtoggle the getty process that get started starts ! 1566: looping -- that is, getty exits immediately causing init to start a new one ! 1567: which exits immediately, and so on. Anyway -- I haven't tried it without a ! 1568: dial command before the phtoggle yet. ! 1569: ! 1570: I've got a kermit around here which'll let you do: ! 1571: ! 1572: ! phtoggle ! 1573: set line /dev/ph0 ! 1574: set modem att7300 ! 1575: set speed 1200 ! 1576: dial <phone number> ! 1577: ! 1578: just like you'd expect ... but it's an old copy that someone here made work ! 1579: and then never told you guys about the changes. (ARGH!) Anyway, between the ! 1580: two versions I should be able to get something working. ! 1581: ! 1582: Oh, another problem when I exitted kermit ... I said "quit" and it waited a ! 1583: little while and said "Problem with hanging up modem". ! 1584: ! 1585: [Ed. - Unfortunately, we don't have any Unix PCs, or for that matter any ! 1586: System III or V systems to test C-Kermit on, so we rely on people like ! 1587: you to tell us what to do, or what we should have done. You're apparently ! 1588: the first person who tried the new ATT7300 stuff, so thanks for the feedback ! 1589: on that. But I haven't heard complaints from others about multiply defined ! 1590: symbols, shared libraries, etc, and a lot of people are running this version ! 1591: on System V, so I can only assume the problem there must be UnixPC-specific. ! 1592: ! 1593: If you can send me a makefile entry that you have actually used with the ! 1594: UnixPC, I'll be glad to replace the current one with yours, and add a hint ! 1595: that if people have trouble w/other ATT Sys III/V based systems, they might ! 1596: look at the ATT7300 entry for a model. If this is new stuff, then we have ! 1597: a slight problem, because up till now (or at least up to Sys V R3), all ! 1598: Sys III and Sys V C-Kermits could be compiled the same way. ! 1599: ! 1600: Termcap??? There's nothing in Kermit that uses termcap or curses... ! 1601: The other stuff will have to be looked in to. Thanks for the report. For ! 1602: now, it's been added to the "beware file", CKUKER.BWR.] ! 1603: ! 1604: ------------------------------ ! 1605: ! 1606: Date: Wed, 2 Mar 88 17:23:47 EST ! 1607: From: [email protected] (Arthur David Olson) ! 1608: Subject: MORE/bsd 4.3 (10/5/87) kermit does CR strips, not CR-LF->NL maps--w/fix ! 1609: ! 1610: (This may be fixed in versions of C-Kermit later than version 4C(057), which ! 1611: we're running.) ! 1612: ! 1613: Description: ! 1614: The kermit command strips all carriage returns, rather than ! 1615: mapping CR-LF sequences to NL. This causes problems when transferring ! 1616: (to the VAX) the output of programs that do underlining by outputing ! 1617: a line of characters, doing a return, then outputing underlines in ! 1618: the desired places. ! 1619: ! 1620: Fix: ! 1621: Note that even with this fix in place, if a file has a CR as its very ! 1622: last character the CR will be (inappropriately) stripped. Then again, ! 1623: we're not kermit gurus around here. ! 1624: ! 1625: *** 1.1/ckcfns.c Wed Mar 2 17:17:32 1988 ! 1626: --- 1.3/ckcfns.c Wed Mar 2 17:17:43 1988 ! 1627: *************** ! 1628: *** 131,136 **** ! 1629: --- 131,140 ---- ! 1630: /* Call with string to be decoded and an output function. */ ! 1631: /* Returns 0 on success, -1 on failure (e.g. disk full). */ ! 1632: ! 1633: + #ifdef NLCHAR ! 1634: + static int sawcr; ! 1635: + #endif /* defined NLCHAR */ ! 1636: + ! 1637: decode(buf,fn) char *buf; int (*fn)(); { ! 1638: unsigned int a, a7, b8; /* Low order 7 bits, and the 8th bit */ ! 1639: ! 1640: *************** ! 1641: *** 158,172 **** ! 1642: } ! 1643: a |= b8; /* OR in the 8th bit */ ! 1644: if (rpt == 0) rpt = 1; /* If no repeats, then one */ ! 1645: - #ifdef NLCHAR ! 1646: - if (!binary) { /* If in text mode, */ ! 1647: - if (a == CR) continue; /* discard carriage returns, */ ! 1648: - if (a == LF) a = NLCHAR; /* convert LF to system's newline. */ ! 1649: - } ! 1650: - #endif ! 1651: for (; rpt > 0; rpt--) { /* Output the char RPT times */ ! 1652: ! ffc++, tfc++; /* Count the character */ ! 1653: if ((*fn)(a) < 0) return(-1); /* Send it to the output function. */ ! 1654: } ! 1655: } ! 1656: return(0); ! 1657: --- 162,189 ---- ! 1658: } ! 1659: a |= b8; /* OR in the 8th bit */ ! 1660: if (rpt == 0) rpt = 1; /* If no repeats, then one */ ! 1661: for (; rpt > 0; rpt--) { /* Output the char RPT times */ ! 1662: ! ffc++; /* Count the character */ ! 1663: ! #ifdef NLCHAR ! 1664: ! if (!binary) { ! 1665: ! if (a == CR) { ! 1666: ! if (sawcr == 0) { ! 1667: ! sawcr = 1; ! 1668: ! continue; ! 1669: ! } ! 1670: ! } else { ! 1671: ! if (sawcr) ! 1672: ! if (a == LF) ! 1673: ! a = NLCHAR; ! 1674: ! else if ((*fn)(CR) < 0) ! 1675: ! return -1; ! 1676: ! else ++tfc; ! 1677: ! sawcr = 0; ! 1678: ! } ! 1679: ! } ! 1680: ! #endif /* defined NLCHAR */ ! 1681: if ((*fn)(a) < 0) return(-1); /* Send it to the output function. */ ! 1682: + ++tfc; ! 1683: } ! 1684: } ! 1685: return(0); ! 1686: *************** ! 1687: *** 424,429 **** ! 1688: --- 441,449 ---- ! 1689: rcvfil() { ! 1690: int x; ! 1691: ffc = flci = flco = 0; /* Init per-file counters */ ! 1692: + #ifdef NLCHAR ! 1693: + sawcr = 0; ! 1694: + #endif /* defined NLCHAR */ ! 1695: srvptr = srvcmd; /* Decode file name from packet. */ ! 1696: decode(data,putsrv); ! 1697: if (*srvcmd == '\0') /* Watch out for null F packet. */ ! 1698: -- ! 1699: [email protected] ADO, VAX, and NIH are Ampex and DEC trademarks ! 1700: ! 1701: ------------------------------ ! 1702: ! 1703: Date: Sun, 28 Feb 88 02:47:21 EST ! 1704: From: [email protected] (Charles Hedrick) ! 1705: Subject: Results of Porting C-Kermit 4E and Fixes ! 1706: Keywords: C-Kermit 4E ! 1707: ! 1708: I just finished porting Kermit 4E to my Microport System V/AT. As usual, ! 1709: simply typing "make sys3nid" (which is the setting for vanilla System V, ! 1710: oddly enough) works correctly. It works correctly in the sense of building ! 1711: a kermit that works the same as it works on other systems. Unfortunately, ! 1712: the major new feature in 4E turns out not to work on any of the systems I ! 1713: have access to. This is the long packet size feature. The two kermits ! 1714: exchange information about what options they support. Unfortunately, the ! 1715: code used for generating the byte that contains the capabilities appears to ! 1716: be wrong. It results in having the systems say that they don't support long ! 1717: packets. The expression is a long one involving several ? : constructs. My ! 1718: C documentation does not make clear what the relative precedence of ? and | ! 1719: should be. However both the Sun 3 and System V 286 compilers take the ! 1720: opposite view from the authors of C Kermit. By adding a few ()'s, we avoid ! 1721: the ambiguity. There was also a problem that the packet size sent for the ! 1722: benefit of old systems that don't support long packets was miscalculated. ! 1723: THey simply took the low-order byte of the full packet size. What they ! 1724: wanted was MIN (packetsize, 94), 94 being the maximum size allowed by old ! 1725: implementations. ! 1726: ! 1727: The fixes are shown below. ! 1728: ! 1729: This message is being sent to be info-kermit and the Microport newsgroup. ! 1730: For the benefit of Microport users, let me note that Microport supplies a ! 1731: fairly recent version of kermit with the system, version 4D. The version ! 1732: being discussed here adds only the long packet support. (You might still ! 1733: find it useful to get the files, since Microport doesn't seem to supply ! 1734: documentation.) Kermit is available via anonymous FTP from ! 1735: CU20B.COLUMBIA.EDU. The files you need are roughly ker:ckc*.*, ker:cku*, ! 1736: and ker:ckw*, but ker:ckaaaa.hlp will give me information. Kermit is also ! 1737: available at Simtel20. The index I have claims it is pd2:<unix.kermit>, ! 1738: although today I was unable to get to those files to check them. ! 1739: ! 1740: *** ckcfns.c.ORIG Sat Feb 27 19:25:03 1988 ! 1741: --- ckcfns.c Sun Feb 28 02:05:44 1988 ! 1742: *************** ! 1743: *** 607,613 ! 1744: ! 1745: CHAR * ! 1746: rpar() { ! 1747: ! data[1] = tochar(rpsiz); /* Biggest packet I can receive */ ! 1748: data[2] = tochar(rtimo); /* When I want to be timed out */ ! 1749: data[3] = tochar(mypadn); /* How much padding I need (none) */ ! 1750: data[4] = ctl(mypadc); /* Padding character I want */ ! 1751: ! 1752: --- 607,616 ----- ! 1753: ! 1754: CHAR * ! 1755: rpar() { ! 1756: ! if (rpsiz > 94) ! 1757: ! data[1] = tochar(94); ! 1758: ! else ! 1759: ! data[1] = tochar(rpsiz); /* Biggest packet I can receive */ ! 1760: data[2] = tochar(rtimo); /* When I want to be timed out */ ! 1761: data[3] = tochar(mypadn); /* How much padding I need (none) */ ! 1762: data[4] = ctl(mypadc); /* Padding character I want */ ! 1763: *************** ! 1764: *** 626,632 ! 1765: else ! 1766: data[9] = '~'; ! 1767: ! 1768: ! data[10] = tochar(atcapr?atcapb:0 | lpcapr?lpcapb:0 | swcapr?swcapb:0); ! 1769: data[capas+1] = tochar(swcapr ? wsize : 0); /* Window size */ ! 1770: ! 1771: rpsiz = urpsiz; /* Long packets ... */ ! 1772: ! 1773: --- 629,635 ----- ! 1774: else ! 1775: data[9] = '~'; ! 1776: ! 1777: ! data[10] = tochar((atcapr?atcapb:0) | (lpcapr?lpcapb:0) | (swcapr?swcapb:0)); ! 1778: data[capas+1] = tochar(swcapr ? wsize : 0); /* Window size */ ! 1779: ! 1780: rpsiz = urpsiz; /* Long packets ... */ ! 1781: ! 1782: ------------------------------ ! 1783:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.