77K Valid Lines.txt
DOWNLOAD - https://byltly.com/2tl2LI
Version:1.00 DownloadReleased: 25 December 1999Also see:Kermit 95 for Windows, C-Kermit for Unix and VMS, Embedded KermitThis page last updated:Sat Jul 31 19:22:36 2021(Changed all FTP links to HTTP and added the warning just below)Please visitthe G-Kermitpage at the new OpenSource Kermit Project to get G-Kermit 2.0, which has beenadapted to the newer C compilers and libraries. Version 1.0 buildsincreasingly fail with each year that passes as the C language andprogramming environment change out from underneath it.ContentsOVERVIEWINVOKING G-KERMITCOMMAND-LINE OPTIONSTHE MECHANICS OF FILE TRANSFERINTERRUPTING FILE TRANSFERTEXT AND BINARY TRANSFER MODEPATHNAMESFILENAME CONVERSIONFILENAME COLLISIONSKERMIT PROTOCOL DETAILSPROBLEMS, BUGS, ERRORSBUILDING G-KERMITINSTALLING G-KERMITDESIGN AND IMPLEMENTATION NOTESFURTHER INFORMATIONDOWNLOADBOOTSTRAPPING1. OVERVIEW[Deutsch]G-Kermit is a Unix program for transferring files with the Kermit protocol. G-Kermit is a product of the Kermit Project atColumbia University in New Yorkcity. It is free software under the GNU General Public License.See the COPYING filefor details. Although G-Kermit was written for Unix, we are beginningto see ports of it to non-Unix platforms, so far including OS/2 andCP/M-68K.This software is OSI Certified Open Source Software.OSI Certified is a certification mark of theOpen Source Initiative.G-Kermit is:FastSmallPortableEasy to useInteroperableLow-maintenanceStable and reliableFeatures include:Text and binary file transfer on both 7-bit and 8-bit connectionsFiles can be transferred singly or in groupsAutomatic startup configuration via GKERMIT environment variableConfigurability as an external protocolKermit protocol features include:Automatic peer recognitionStreaming on reliable connectionsSelectable packet length, 40 to 9000 bytes (4000 default)Single shifts for 8-bit data on 7-bit connectionsControl-character prefixing for control-character transparencyControl-character unprefixing for increased speed (incoming only)Compression of repeated bytesPer-file and batch cancellationFeatures selectable on command line:Text or binary mode transferFilename conversion on/offFilename collision backup versus overwriteKeep or discard incompletely received filesPacket lengthPacket timeoutFlow controlParityStreamingMessagesDebuggingFeatures not included (see Section 14):Making connectionsCharacter-set translationInteractive commands and scriptingFile date-time stamps2. INVOKING G-KERMITG-Kermit is always on the \"far end\" of a connection, on a Unix system thatyou have made a connection to from a terminal emulator by dialup, network,or direct serial. If you have a direct or dialup serial connection intoUnix, use the \"stty -a\" or \"stty all\"command to see if your Unix terminaldriver is conditioned for the appropriate kind of flow control; if it isn't,very few applications (including gkermit) will work well, or at all. Thecommand for setting terminal flow control varies from platform to platform,but it is usually something like this:$ stty crtscts(where \"$ \" is the shell prompt) for RTS/CTS hardware flow control,or:$ stty ixon ixofffor Xon/Xoff \"software\" flow control. When you have a network connection,flow control is usually nothing to worry about, since the network protocol(TCP or X.25) takes care of it automatically, but on certain platforms (suchas HP-UX) the TCP/IP Telnet or Rlogin server uses this for flow controlbetween itself and the underlying pseudoterminal in which your session runs,so Xon/Xoff might be required for these sessions too.The G-Kermit binary is called \"gkermit\". It should be stored someplace inyour Unix PATH, such as /usr/local/bin/gkermit or somewhere in the/opt treeon System V R4. To run G-Kermit, just type \"gkermit\" followed by command-lineoptions that tell it what to do. If no options are given, G-Kermitprints a usage message listing the available options:G-Kermit CU-1.00, Columbia University, 1999-12-25: POSIX.Usage: gkermit [ options ]Options: -r Receive files -s fn Send files -g fn Get files from server -a fn As-name for single file -i Image (binary) mode transfer -T Text mode transfer -P Path/filename conversion disabled -w Write over existing files with same name -K Keep incompletely received files -p x Parity: x = o[dd],e[ven],m[ark],s[pace],n[one] -e n Receive packet-length (40-9000) -b n Timeout (sec, 0 = none) -x Force Xon/Xoff (--x = Don't force Xon/Xoff) -S Disable streaming -X External protocol -q Quiet (suppress messages) -d [fn] Debug to ./debug.log [or specified file] -h Help (this message)More info: If an option takes an argument, the argument is required; if an option doesnot take an argument, no argument may be given (exceptions: -d may ormay not take an argument; -s can take one or more arguments).The action options are -r, -s, and -g. Only oneaction option may be given.If no action options are given, G-Kermit does nothing (except possiblyprinting its usage message or creating a debug.log file). Here are someexamples (in which \"$ \" is the shell prompt):$ gkermit -s hello.c Sends the hello.c file.$ gkermit -s hello.* Sends all hello.* files.$ gkermit -r Waits for you to send a file to it.$ gkermit -g hello.c Gets the hello.c file from your computer.$ gkermit -g \\*.c Gets all *.c files from your computer.Options that do not take arguments can be \"bundled\" with other options.An option that takes an argument must always be followed by a space andthen its argument(s). Examples:$ gkermit -is hello.o Sends hello.o in binary mode.$ gkermit -dSr Receives with debugging and no streaming.G-Kermit's exit status is 0 if all operations succeeded and 1 if there wereany failures. If a group of files was transferred, the exit status is 1if one or more files were not successfully transferred and 0 if all of themwere transferred successfully.3. COMMAND-LINE OPTIONSfn = filename;n = number.-rRECEIVE: This option tells G-Kermit to receive a file or files;that is, to passively wait for you to send files from yourterminal emulator.-s fnSEND: This tells G-Kermit to send the file or files specified byfn, which can be a filename, a regular expression, or a list offilenames and/or regular expressions (wildcards). Regularexpressions are interpreted and expanded by your shell into thelist of names of files that is given to G-Kermit. For example\"*.c\" expands to a list of all files in the current directorywhose names end with \".c\".-g fnGET: This option tells G-Kermit to get a file (or files) from aKermit server. It is useful only when your terminal emulatorsupports the Kermit autodownload feature AND it includes a Kermitserver mode. It is equivalent to \"gkermit -r\", escapingback, telling your terminal emulator to send the given files, and thenreconnecting to Unix.-a fnAS-NAME: When used with -s, this option tells G-Kermit to sendthe file whose name is given as the first -s argument under thename fn. For example, \"gkermit -s game -a work\" sends the filecalled \"game\" under the name \"work\", so the receiver will thinkits name is \"work\". When given with the -r or -g command,the incoming file (or the first incoming file if there is more thanone) is stored under the name fn. In all cases, the given nameis used as-is; it is not converted.-iIMAGE (binary) mode transfer. When used with -s, tells G-Kermitto send in binary mode. When used with -r, tells G-Kermit toreceive in binary mode if the file sender does not specify thetransfer mode (text or binary). When used with -g, tellsG-Kermit to ask your terminal emulator's Kermit to send the givenfile in binary mode. See Section 6 for details.-TTEXT mode transfer (note uppercase T). When used with -s, tellsG-Kermit to send in text mode. When used with -r, tells G-Kermitto receive in text mode if the file sender does not specify thetransfer mode (text or binary). When used with -g, tells G-Kermitto ask your emulator's Kermit to send the given file in text mode.See Section 6 for details.-PPATH (filename) conversion disabled (note uppercase P).Normally when sending files, G-Kermit converts filenames to aform that should be acceptable to non-Unix platforms, primarilychanging lowercase letters to uppercase, ensuring there is nomore than one period, and replacing any \"funny\" characters by Xor underscore (explained in Section 8).-wWRITEOVER. When receiving, and an incoming file has the samename as an existing file, write over the existing file. Bydefault G-Kermit backs up the existing file by adding a suffixto its name (see Section 9).-KKEEP incompletely received files. Normally when receiving files,and a file transfer is interrupted, G-Kermit discards thepartially received file so you won't think you have the wholefile. Include -K on the command line to tell G-Kermit to keeppartially received files, e.g. \"gkermit -Kr\".-p xPARITY: Use the given kind of parity, where x can be 'n'for None (which is the default, for use on 8-bit-clean connections);'s' for Space, 'e' for Even, 'o' for Odd, and'm' for Mark. 's' might be needed on certain Telnetconnections; 'e', 'o', and 'm' are only for serialconnections; don't try them on TCP/IP connections.-e nPACKET LENGTH: Receive packet-length, where n can be any numberbetween 40 and 9000. The default length on most platforms is 4000. Use thisoption to specify a different length; usually this would be necessary only iftransfers fail using the default length due to some kind of buffering problemin the host or along the communication path. Example: \"gkermit-e 240 -r\".-b nTIMEOUT (sec, 0 = none). Specify the number of seconds to waitfor a packet before timing out and retransmitting. By default,G-Kermit uses whatever timeout interval your terminal emulator'sKermit asks it to use. No need to change this unless the timeoutaction causes problems.-xXON/XOFF. Force Xon/Xoff flow control in the Unix terminaldriver. Try this if uploads fail without it. But don't use itif you don't need to; on some platforms or connections it hurtsrather than helps.--xDon't force Xon/Xoff; for use when G-Kermit was built with theSETXONXOFF compile-time option (Section 12), to overridethe automatic setting of Xon/Xoff in case it interferes with filetransfers.-SSTREAMING disabled. Streaming is a high-performance option tobe used on reliable connections, such as in Telnet or Rloginsessions. It is used if your terminal emulator's Kermit requestsit. Use the -S option (note: uppercase S) to suppress thisfeature in case it causes trouble. Details in Section 10.-XEXTERNAL PROTOCOL. Include this option when invoking G-Kermitfrom another program that redirects G-Kermit's standard i/o,e.g. over a connection to another computer. If you omit thisswitch when using G-Kermit as an external protocol to anothercommunications program, G-Kermit is likely to perform illegaloperations and exit prematurely. If you include this switchwhen G-Kermit is NOT an external protocol to another program,file transfers will fail. G-Kermit has no way of determiningautomatically whether it is being used as an external protocol.-qQUIET. Suppresses messages.-dDEBUG. Use this for troubleshooting. It creates a file calleddebug.log in your current directory, to be used in conjunctionwith the source code, or sent to the Kermit support address foranalysis. More about this in Section 11.-d fnDEBUG to specified file (rather than default ./debug.log).-hHELP: Displays the usage message shown above.You may supply options to G-Kermit on the command line or through theGKERMIT environment variable, which can contain any valid gkermitcommand-line options. These are processed before the actual command-lineoptions and so can be overridden by them. Example for bash or ksh, whichyou can put in your profile if you want to always keep incomplete files,suppress streaming, suppress messages, and use Space parity: export GKERMIT=\"-K -S -q -p s\"G-Kermit's options are compatible with C-Kermit's, with the followingexceptions: -P (available only in C-Kermit 7.0 and later) -K (currently not used in C-Kermit) -b (used in C-Kermit for serial device speed) -S (used in C-Kermit to force an interactive command prompt) -x (used in C-Kermit to start server mode) --x (currently not used in C-Kermit) -X (currently not used in C-Kermit)4. THE MECHANICS OF FILE TRANSFERTo transfer files with G-Kermit you must be connected through a terminalemulator to the Unix system where G-Kermit is installed, meaning you areonline to Unix and have access to the shell prompt (or to some menu that hasan option to invoke G-Kermit), and your terminal emulator must support theKermit file transfer protocol. The connection can be serial (direct ordialed) or network (Telnet, Rlogin, X.25, etc).Sending FilesWhen you tell G-Kermit to SEND a file (or files), e.g. with: $ gkermit -Ts oofa.txtit pauses for a second and then sends its first packet. What happens nextdepends on the capabilities of your terminal emulator:If your emulator supports Kermitautodownloadsthen it receives thefile automatically and puts you back in the terminal screen when done.Otherwise, you'll need to take whatever action is required by youremulator to get its attention: a mouse action, a keystroke likeAlt-x,or a character sequence like Ctrl-\\or Ctrl-]followed by the letter\"c\" (this is called \"escaping back\") and then tell it to receive thefile. When the transfer is complete, you might have to instruct youremulator to go back to its terminal screen.During file transfer, most terminal emulators put up some kind of runningdisplay of the file transfer progress.Receiving FilesWhen you tell G-Kermit to RECEIVE, this requires you to escape back to yourterminal emulator and instruct it to send the desired file(s). Autodownloadis not effective in this case. When the transfer is complete, you'll needto instruct your emulator to return to its terminal screen.Getting FilesIf your terminal emulator supports Kermit autodownloads AND server mode, youcan use GET (\"gkermit -g files...\") rather thanRECEIVE (\"gkermit -r\"), andthe rest happens automatically, as when G-Kermit is sending.5. INTERRUPTING FILE TRANSFERG-Kermit supports file and group interruption. The method for interruptinga transfer depends on your terminal emulator. For example, while thefile-transfer display is active, you might type the letter 'x' to cancel thecurrent file and go on to the next one (if any), and the letter 'z' tocancel the group. Or there might be buttons you can click with your mouse.When G-Kermit is in packet mode and your terminal emulator is in itsterminal screen, you can also type three (3) Ctrl-C characters in a row tomake G-Kermit exit and restore the normal terminal modes.6. TEXT AND BINARY TRANSFER MODEWhen sending files in binary mode, G-Kermit sends every byte exactly as itappears in the file. This mode is appropriate for program binaries,graphics files, tar archives, compressed files, etc, and is G-Kermit'sdefault file-transfer mode when sending. When receiving files in binarymode, G-Kermit simply copies each byte to disk. (Obviously the bytes areencoded for transmission, but the encoding and decoding procedures give areplica of the original file after transfer.)When sending files in text mode, G-Kermit converts the record format to thecommon one that is defined for the Kermit protocol, namely lines terminatedby carriage return and linefeed (CRLF); the receiver converts the CRLFs towhatever line-end or record-format convention is used on its platform. Whenreceiving files in text mode, G-Kermit simply strips carriage returns,leaving only a linefeed at the end of each line, which is the Unixconvention.When receiving files, the sender's transfer mode (text or binary)predominates if the sender gives this information to G-Kermit in a KermitFile Attribute packet, which of course depends on whether your terminalemulator's Kermit protocol has this feature. Otherwise, if you gave a -i or-T option on the gkermit command line, the corresponding mode is used;otherwise the default mode (binary) is used.Furthermore, when either sending or receiving, G-Kermit and your terminalemulator's Kermit can inform each other of their OS type (Unix in G-Kermit'scase). If your emulator supports this capability, which is called\"automatic peer recognition\", and it tells G-Kermit that its platform isalso Unix, G-Kermit and the emulator's Kermit automatically switch intobinary mode, since no record-format conversion is necessary in this case.Automatic peer recognition is disabled automatically if you include the -i(image) or -T (text) option.When sending, G-Kermit sends all files in the same mode, text or binary.There is no automatic per-file mode switching. When receiving, however,per-file switching occurs automatically based on the incoming Attributepackets, if any (explained below), that accompany each file, so if thefile sender switches types between files, G-Kermit follows along.7. PATHNAMESWhen SENDING a file, G-Kermit obtains the filenames from the command line.It depends on the shell to expand metacharacters (wildcards and tilde).G-Kermit uses the full pathname given to find and open the file, but thenstrips the pathname before sending the name to the receiver. For example: $ gkermit -s /etc/hostsresults in an arriving file called \"HOSTS\" or \"hosts\" (the directory part,\"/etc/\", is stripped; see next section aboutcapitalization).However, if a pathname is included in the -a option, the directory partis not stripped: $ gkermit -s /etc/hosts -a /tmp/hostsThis example sends the /etc/hosts file but tells the receiver thatits name is \"/tmp/hosts\". What the receiver does with the pathnameis, of course, up to the receiver, which might have various options fordealing with incoming pathnames.When RECEIVING a file, G-Kermit does NOT strip the pathname, since incomingfiles normally do not include a pathname unless you told your terminal toinclude them or gave an \"as-name\" including a path when sending to G-Kermit.If the incoming filename includes a path, G-Kermit tries to store the filein the specified place. If the path does not exist, the transfer fails.The incoming filename can, of course, be superseded with the -a option.8. FILENAME CONVERSIONWhen sending a file, G-Kermit normally converts outbound filenames tocommon form: uppercase, no more than one period, and no funny characters.So, for example, gkermit.tar.gz would be sent asGKERMIT_TAR.GZ.When receiving a file, if the name is all uppercase, G-Kermit converts itto all lowercase. If the name contains any lowercase letters, G-Kermitleaves the name alone. Otherwise G-Kermit accepts filename characters asthey are, since Unix allows filenames to contain practically any characters.If the automatic peer recognition feature is available in the terminalemulator, and G-Kermit recognizes the emulator's platform as Unix, G-Kermitautomatically disables filename conversion and sends and accepts filenamesliterally.You can force literal filenames by including the -P option on the commandline.9. FILENAME COLLISIONSWhen G-Kermit receives a file whose name is the same as that of an existingfile, G-Kermit backs up the existing file by adding a unique suffix to itsname. The suffix is \".n\", where n is a number between1 and 999. This the same kind of backup suffix used by GNU EMACS and C-Kermit(both of which can be used to prune excess backup files). But since G-Kermitdoes not read directories (see Implementation Notes), itcan not guarantee that the number chosen will be higher than any other backupprefix number for the same file. In fact, the first free number, startingfrom 1, is chosen. If an incoming file already has a backup suffix, G-Kermitstrips it before adding a new one, rather than creating a file that has twobackup suffixes.To defeat the backup feature and have incoming files overwrite existingfiles of the same name, include the -w (writeover) option on the commandline.If G-Kermit has not been given the -w option and it fails to create abackup file, the transfer fails.10. KERMIT PROTOCOL DETAILSBlock checkG-Kermit uses the 3-byte, 16-bit CRC by default. If the other Kermitdoes not agree, both Kermits automatically drop down to the single-byte6-bit checksum that is required of all Kermit implementations.AttributesWhen sending files, G-Kermit conveys the file transfer mode and filesize in bytes to the receiver in an Attribute (A) packet if the use ofA-packets was negotiated. This allows the receiver to switch to theappropriate mode automatically, and to display the percent done, estimatedtime left, and/or a thermometer bar if it has that capability. Whenreceiving, G-Kermit looks in the incoming A-packet, if any, for thetransfer mode (text or binary) and switches itself accordingly on aper-file basis.Handling of the Eighth BitG-Kermit normally treats the 8th bit of each byte as a normal data bit.But if you have a 7-bit connection, transfers of 8-bit files fail unlessyou tell one or both Kermits to use the appropriate kind of parity, inwhich case Kermit uses single-shift escaping for 8-bit bytes. Generally,telling either Kermit is sufficient; it tells the other. Use the -poption to tell G-Kermit which parity to use. Locking shifts are notincluded in G-Kermit.Control-Character EncodingG-Kermit escapes all control characters when sending (for example,Ctrl-A becomes #A). When receiving, it accepts both escaped and barecontrol characters, including NUL (0). However, unescaped controlcharacters always present a danger, so if uploads to G-Kermit fail, tellyour terminal emulator's Kermit to escape most or all control characters(in C-Kermit and Kermit 95 the command is SET PREFIXING CAUTIOUS or SETPREFIXING ALL).Packet LengthAll legal packet lengths, 40-9000, are supported although a lowermaximum might be imposed on platforms where it is known that bigger onesdon't work. When receiving, G-Kermit sends its receive packet length tothe sender, and the sender must not send packets any longer than thislength. The default length for most platforms is 4000 and it may beoverridden with the -e command-line option.Sliding WindowsG-Kermit does not support sliding windows. Streaming is used instead.If the other Kermit bids to use sliding windows, G-Kermit declines.StreamingIf the terminal emulator's Kermit informs G-Kermit that it has areliable connection (such as TCP/IP or X.25), and the emulator's Kermitsupports streaming, then a special form of the Kermit protocol is usedin which data packets are not acknowledged; this allows the sender totransmit a steady stream of (framed and checksummed) data to thereceiver without waiting for acknowledgements, allowing the fastestpossible transfers. Streaming overcomes such obstacles as long roundtrip delays, unnecessary retransmissions on slow network connections,and most especially the TCP/IP Nagle and Delayed ACK heuristics whichare deadly to a higher-level ACK/NAK protocol. When streaming is in useon a particular connection, Kermit speeds are comparable to FTP. Thedrawback of streaming is that transmission errors are fatal; that's whystreaming is only used on reliable connections, which, by definition,guarantee there will be no transmission errors. However, watch out forthe relatively rare circumstance in which the emulator thinks it has areliable connection when it doesn't -- for example a Telnet connectionto a terminal server, and a dialout from the terminal server to thehost. Use the -S option on the command line to defeat streaming in suchsituations.Using all defaults on a TCP/IP connection on 10BaseT (10Mbps) Ethernet froma modern Kermit program like C-Kermit 7.0 or Kermit 95, typical transferrates are 150-1000Kcps, depending on the speed of the two computers and thenetwork load.11. PROBLEMS, BUGS, ERRORSIf file transfers fail:Make sure your terminal emulator is not unprefixing control characters;various control characters might cause trouble along the communicationpath. When in doubt, instruct the file sender to prefix all controlcharacters (e.g. SET PREFIXING ALL).Make sure your Unix terminal is conditioned for the appropriate kindof flow control.Use command-line options to back off on performance and transparency;use -S to disable streaming, -e to select a shorter packet length, -pto select space or other parity, -b to increase or disable the timeout,and/or establish the corresponding settings on your emulator.When receiving files in text mode, G-Kermit strips all carriage returns,even if they aren't part of a CRLF pair.If you have a TCP/IP connection (e.g. Telnet or Rlogin) to Unix from aterminal emulator whose Kermit protocol does not support streaming,downloads from G-Kermit are likely to be as much as 10 or even 100 timesslower than uploads if the TCP/IP stack engages in Nagle or Delayed ACKheuristics; typically, when your terminal emulator's Kermit protocol sendsan acknowledgment, the TCP stack holds on to it for (say) 1/5 second beforesending it, because it is \"too small\" to send right away.As noted in Section 9, the backup prefix is not guaranteedto be the highest number. For example, if you have files oofa.txt,oofa.txt.1, and oofa.txt.3 in your directory, and a newoofa.txt file arrives, the old oofa.txt is backed up tooofa.txt.2, rather than oofa.txt.4 as you might expect.This is because gkermit lacks directory reading capabilities, for reasonsnoted in Section 14, and without this, finding the highestexisting backup number for a file is impractical.If you send a file to G-Kermit with streaming active when the connection isnot truly reliable, all bets are off. A fatal error should occur promptly,but if huge amounts of data are lost, G-Kermit might never recognize a singledata packet and therefore not diagnose a single error; yet your terminalemulator keeps sending packets since no acknowledgments are expected; thetransfer eventually hangs at the end of file. Use -S on G-Kermit's commandline to disable streaming in situations where the terminal emulator requestsit in error.You can use G-Kermit's debug log for troubleshooting; this is useful mainlyin conjunction with the source code. But even if you aren't a C programmer,it should reveal any problem in enough detail to help pinpoint the cause ofthe failure. \"gkermit -d\" (with no action options) writes a short debug.logfile that shows the build options and settings.The debug log is also a packet log; to extract the packets from it, use: grep ^PKT debug.logPackets in the log are truncated to avoid wrap-around on your screen, andthey have the Ctrl-A packet-start converted to ^ and A to avoid triggeringa spurious autodownload when displaying the log on your screen.In certain circumstances it is not desirable or possible to use -d to createa log file called debug.log in the current directory; for example, if youdon't have write access to the current directory, or you already have adebug.log file that you want to keep (or transfer). In this case, you caninclude a filename argument after -d: gkermit -d /tmp/testing.log -s *.c(This is an exception to the rule that option arguments are not optional.)If all else fails, you can contact the Kermit Project for technical support;see: instructions.12. BUILDING G-KERMITG-Kermit is written to require the absolute bare minimum in system servicesand C-language features and libraries, and therefore should be portable topractically any Unix platform at all with any C compiler.When I wrote G-Kermit in 1999, I wanted it to serve as an example of aprogram that would last forever, and not need constant \"updates\" and\"upgrades\" and \"patches\" which are the hallmark of modern software culture,where stability is a forgotten concept in programming language designjust as backwards compatibility is in operating system and libraryreleases. But the world keeps changing out from under G-Kermit and everyother software program on every modern platform (unlike, for example, theIBM OS/MVS operating system for which I wrote software in 1970-somethingthat has never needed upgrades or updates or patches to keep working decadeafter decade). Anyway, in Unix the biggest change affecting G-Kermit ismigration of the errno variable from a simple int to some kind ofobject or macro defined in a header file. Thus the most common complaintfrom those trying to build G-Kermit on Linux or wherever is fatalcompilation or link-time errors involving errno. The solution is toinclude:-DERRNO_Hamong the compilation flags (this has always been documented towards theend of this web page, but most people don't read that far). Other errorsare increasingly reported that are solved by including ever more headerfiles in gkermit.h or elsewhere, e.g.:#include #include #include I'm not inclined to make a new release just because of bureaucraticreshuffling of header files or requirement of prototypes where they weren'trequired before, because disregard for stability should not berewarded. A program, once written, should stay written, so theprogrammer can go on to something new, rather than writing the same programover and over and over simply to \"comply\" with whatever new thing somebodydreamed up. Anyway, G-Kermit is GPL so anybody can change it however theywant. (Yes, the whole thing could just be engineered for autoconf,but autoconf is not available on all the platforms where G-Kermit is built.)The source files are: makefile The build procedure gwart.c Source code for a mini-lex substitute gproto.w G-Kermit protocol state machine to be preprocessed by gwart gkermit.h G-Kermit header file gkermit.c G-Kermit main module and routines gcmdline.c G-Kermit command-line parser gunixio.c Unix-specific i/o routinesA simple makefile isprovided, which can be used with make or gmake. There are three main targetsin the makefile:posixBuild for any POSIX.1 compliant platform (termios). This is thedefault target, used if you type \"make\" (or \"gmake\") alone. Thistarget works for most modern Unixes, including GNU/Linux, FreeBSD,OpenBSD, NetBSD, BSDI, HP-UX, Solaris, SunOS, Unixware, AIX, etc.sysvBuild for almost any AT&T System V platform (termio). Examplesinclude AT&T Unix releases, e.g. for the AT&T 7300, HP-UX versionsprior to 7.00.bsdBuild for any BSD (pre-4.4) or Unix V7 platform (sgtty). Examplesinclude NeXTSTEP 3.x, OSF/1, Ultrix-11, and 4.3BSD or earlier.Note that the target names are all lowercase; \"posix\" is the default target(the one used if you just type \"make\"). If the build fails with a messagelike:gunixio.c: 65: Can't find include file termios.h*** Error code 1then try \"make sysv\" or \"make bsd\". See the build list below for examples.Some special build targets are also provided:sysvxLike sysv but uses getchar()/putchar() for packet i/orather than buffered nonblocking read()/write(); this isnecessary for certain very old System V platforms (see description ofUSE_GETCHAR below).sttyWhen none of the other targets compiles successfully, try this one,which runs the external stty program rather than trying to useAPI calls to get/set terminal modes (system(\"stty raw -echo\") andsystem(\"stty -raw echo\")).Several maintenance/management targets are also included:cleanRemove object and intermediate files.installInstall gkermit (read the makefile before using this).uninstallUninstall gkermit from wherever \"make install\" installed it.The default compiler is cc. To override (e.g. to force the use of gcc oncomputers that have both cc and gcc installed, or that don't have cc), use:[g]make CC=gcc [target]No other tools beyond make, the C compiler and linker, a short list ofinvariant header files, and the standard C library are needed or used. Theresulting binary should be 100K or less on all hardware platforms (and 64Kor less on most; see list below).You may also specify certain build options by including a KFLAGS clause onthe make command line, e.g.:make \"KFLAGS=-DSETXONXOFF -DEXTRADEBUG\" sysvBy default, nonblocking buffered read() is used for packets; thistechnique works on most platforms but other options -- USE_GETCHAR and DUMBIO-- are provided when it doesn't work or when nonblocking i/o is not available.The build options include:__STDC__Include this when the compiler requires ANSI prototyping but doesdoes not define __STDC__ itself. Conversely, you might need toinclude -U__STDC__ if the compiler defines __STDC__ but does notsupport minimum ANSI features.ULONG=longInclude this if compilation fails with \"unknown type: unsigned long\".CHAR=charInclude this if compilation fails with \"unknown type: unsigned char\".SMALLDefine this when building on or for a \"small\" platform, for examplea 16-bit architecture.USE_GETCHARSpecifies that packet i/o should be done with (buffered) getchar()and putchar() rather than the default method of nonblocking,internally buffered read() and write(). Use this only whenG-Kermit does not build or run otherwise, since if the default i/o code isnot used, G-Kermit won't be able to do streaming.DUMBIOSpecifies that packet i/o should be done with blocking single-byteread() and write(). Use this only when G-Kermit doesn'tbuild or run, even with USE_GETCHAR.MAXRP=nnnChange the maximum receive-packet length to something other than thedefault, which is about 9000. You should change this only to make it smaller;making it bigger is not supported by the Kermit protocol.DEFRP=nnnChange the default receive packet length to something other than thedefault, which is 4000. Making it any bigger than this is not advised.TINBUFSIZ=nnnOn builds that use nonblocking buffered read(), override thedefault input buffer size of 4080.SETXONXOFFOn some platforms, mainly those based on System V R4 and earlier, it wasfound that receiving files was impossible on TCP/IP connections unlessthe terminal driver was told to use Xon/Xoff flow control. If downloadswork but uploads consistently fail (or fail consistently wheneverstreaming is used or the packet length is greater than a certain numberlike 100, or 775), try adding this option. When gkermit is built withthis option, it is equivalent to the user always giving the -x option onthe command line. (Most versions of HP-UX need this; it is definedautomatically at compile time if __hpux is defined.)ERRNO_H#include (rather than \"extern int errno;\").Include this if you get Unresolved Extern complaints about errno at link time.SIG_VThe data type of signal handlers is void. This is set automaticallyfor System V and POSIX builds.SIG_IThe data type of signal handlers is int. This is set automaticallyfor BSD builds.NOGETENVAdd this to disable the feature in which G-Kermit gets options fromthe GKERMIT environment variable.NOSTREAMINGAdd this to disable streaming.EXTRADEBUGThis adds a lot (a LOT) of extra information to the debug logregarding packet and character-level i/o.FULLPACKETSShow full packets in the debug log rather than truncating them.Any compiler warnings should be harmless. Examples include:\"Passing arg 2 of `signal' from incompatible pointer\"(or \"Argument incompatible with prototype\"):Because no two Unix platforms agree about signal handlers. Harmlessbecause the signal handler does not return a value that is used. Wedon't want to open the door to platform-specific #ifdefs just tosilence this warning. However, you can include -DSIG_I or -DSIG_Von the CC command line to override the default definitions.\"blah declared but never used\":Some function parameters are not used because they are just placeholdersor compatibility items, or even required by prototypes in system headers.Others might be declared in system header files (like mknod, lstat, etc,which are not used by G-Kermit).\"Do you mean equality\":No, in \"while ((c = *s++))\" the assignment really is intentional.\"Condition is always true\":Yes, \"while (1)\" is always true.\"Flow between cases\":Intentional.\"No flow into statement\":In gproto.c, because it is a case statement generated by machine,not written by a human.The coding conventions are aimed at maximum portability. For example:Only relatively short identifiers.No long character-string constants.Only #ifdef, #else, #endif, #define,and #undef preprocessor directives.Any code that uses ANSI features is enclosedin #ifdef __STDC__ ... #endif.No gmake-specific constructs in the makefile.Here are some sample builds: Platform Size Target Notes Apple Mac OS X 1.0 gcc: 48K posix (AKA Rhapsody 5.5) AT&T 3B2/300 SVR2 cc: 52K sysv (4) AT&T 6300 PLUS cc: 61K sysv (6) AT&T 7300 UNIX PC cc: 43K sysv AT&T 7300 UNIX PC gcc: 58K sysv (25K with shared lib) BSDI 4.0.1 gcc: 34K posix DEC 5000 MIPS Ultrix 4.3 cc: 104K posix DEC Alpha Digital UNIX 3.2 cc: 98K bsd (AKA OSF/1) (1) DEC Alpha Tru64 UNIX 4.0e cc: 82K bsd (1) DEC PDP-11 2.11BSD cc: 40K bsd211 (7) DEC PDP-11 Ultrix 3.0 cc: 40K bsd211 (9) DEC VAX 4.3BSD cc: 46K bsd DEC VAX Ultrix 3.0 cc: 43K bsd DG/UX 5.4R4.11 gcc: 51K posix DYNIX/ptx 4.4.2 cc: 43K posix FreeBSD 3.3 gcc: 34K posix GNU/Linux RH 5.2 gcc: 35K posix (RH = Red Hat) GNU/Linux SW 3.5 gcc: 34K posix (SW = Slackware) HP-UX 5.21 cc: 55K sysv (2) HP-UX 6.5 cc: 40K sysv (5) HP-UX 7.05 cc: 50K posix HP-UX 8.00 gcc: 33K posix HP-UX 9.05 cc: 57K posix HP-UX 10.01 cc: 57K posix HP-UX 10.20 cc: 61K posix IBM AIX 2.2.1 RT PC IBM cc: 62K sysv IBM AIX 3.2 IBM cc: 62K posix IBM AIX 4.1.3 IBM cc: 67K posix Intergraph Clipper acc: 80K sysv (8) Motorola 68K SV/68 R3.6 cc: 58K sysv (4) Motorola 88K SV/88 R4.3 cc: 45K posix NetBSD 1.4.1 gcc: 41K posix NeXTSTEP m68k 3.1 gcc: 77K bsd (3) OPENSTEP m68k 4.2 gcc: 77K bsd (3) OpenBSD 2.5 gcc: 47K posix QNX 4.25 cc: 33K posix Red Hat 9 i386 gcc: 47K posix KFLAGS=-DERRNO_H SCO XENIX 2.3.4 cc: 41K sysv (4) SCO UNIX 3.2v4.2 cc: 73K posix SCO UNIX 3.2v4.2 gcc: 61K posix SCO ODT 3.0 cc: 97K posix SCO OSR5.0.5 gcc: 42K posix SCO Unixware 2.1.3 cc: 38K posix SGI IRIX 5.3 cc: 86K posix SGI IRIX 6.5.4 cc: 91K posix SINIX 5.42 MIPS cc: 57K posix Solaris 2.4 cc: 50K posix Solaris 7 cc: 52K posix SunOS 4.1.3 cc: 57K posix SunOS 4.1.3 gcc: 64K posix Notes:\"make posix\" builds without complaint on OSF/1 (DigitalUNIX (Tru64)) but it doesn't work -- i/o hangs or program dumps core. \"makebsd\" works fine.POSIX APIs not available in this antique OS (circa 1983). Also dueto limited terminal input buffering capacity, streaming must bedisabled and relatively short packets must be used when receiving:\"gkermit -Se 250 -r\". However, it can use streaming when sending.POSIX APIs not available. Include KFLAGS=-DSIG_V if you get a lotof warnings about signal().On System V R3 and earlier, EWOULDBLOCK is not defined, so we useEGAIN instead. No special build procedures needed.Built with 'make -i \"KFLAGS=-DDEFRP=512-DUSE_GETCHAR\" sysv'. It can be built without-DUSE_GETCHAR but doesn't work.Use 'make \"CC=cc -Ml \"KFLAGS=-DUSE_GETCHAR\"sysv'. It builds but doesn't work, reason unknown, but probablybecause it was never designed to be accessed remotely in the first place.This is a 16-bit architecture. A special makefile target is neededbecause its make program does not expand the $(CC) value when invokingsecond-level makes. Packet and buffer sizes are reduced to keepstatic data within limits. Overlays are not needed.Use 'make \"CC=acc\" sysv'.Identifiers must be unique within the first 7 characters. Unfortunately,there is a conflict in gproto.w between streamon() andstreamok. Build with 'make bsd211 \"KFLAGS=-Dstreamon=strmon -DULONG=long -DSMALL\"'.This was on a PDP-11/23+ without I&D space. -DSMALL might not benecessary with I&D space. When using, disable streaming and useshorter-than-usual packets.13. INSTALLING G-KERMITThe makefile creates a binary called \"gkermit\". Simply move this binary tothe desired directory, such as /usr/local/bin. It needs no specialpermissions other than read, write, and execute for the desired users andgroups: no setuid, no setgid, or any other form of privilege.DO NOT give SETUID or SETGID privilege to G-Kermit. G-Kermit is not adialout program. It does not access serial devices or UUCP lockfiles, and itdoes not do real/effective ID switching. If you give it SETUID or SETGIDprivilege, this will open restricted files and directories to users whootherwise do not have access, and incoming files will be created with thewrong owner and/or group.The executable should becalled \"gkermit\" and not \"kermit\", since \"kermit\" is the binary name forC-Kermit, and the two are likely to be installed side by side on the samecomputer; even when they are not, consistent naming is better for supportand sanity purposes. There is also a short man page:gkermit.nrYou can view it with:nroff -man gkermit.nr moreRename and store it appropriately so users can access it with 'man gkermit'.In addition, the README should be made available in a public documentationdirectory as:gkermit.txtThe makefile includes a sample 'install' target that does all this.Please read it before use to be sure the appropriate directories andpermissions are indicated. There is also an 'uninstall' target to undo aninstallation. Obviously you need write access to the relevant directoriesbefore you can install or uninstall G-Kermit.14. DESIGN AND IMPLEMENTATION NOTESA primary objective in developing G-Kermit is that it can be released andused forever without constant updates to account for platform idiosyncraciesand changes. For this reason, certain features have been deliberatelyomitted:File timestamps. The methods for dealing with internal time formatsare notoriously unportable and also a moving target, especially nowwith the 32-bit internal time format rollover looming in 2038 and thetime_t data type changing out from under us. Furthermore, byexcluding any date-handling code, G-Kermit is automatically Y2K, 2038, and Y10K\"compliant\".Internal wildcard expansion, recursive directory traversal, etc. Evenafter more than 30 years (no, make that 40),there is still no standard and portable service in Unix for this.Server mode, because it would require internal wildcard expansion.Hardware flow control, millisecond sleeps, nondestructive input bufferpeeking, threads, select(), file permissions, etc etc.Other features are omitted to keep the program small and simple, and toavoid creeping featurism:Sliding windows. This technique is more complicated than streaming butnot as fast, and furthermore would increase the program size by afactor of 5 or 10 due to buffering requirements.An interactive command parser and scripting language (because usersalways want more and more commands and features).Character set conversion (because users always want more and morecharacter sets). Adding character set support would increase theprogram size by a factor of 2 to 4, depending on the selection of sets.Making connections (because this requires huge amounts of tricky andunstable high-maintenance platform- and device-specific code for serialports, modems, modem signals, network stacks and protocols, etc).Security. Not needed since G-Kermit does not make connections. WhenG-Kermit is on the far end of a secure connection (Telnet, SSH, Rlogin),the security is handled by the connecting client and the Telnet, SSH, orRlogin server.All of the above can be found in C-Kermit, which istherefore bigger and more complicated, with more platform-specific code and#ifdef spaghetti. C-Kermit requires constant updates and patches tokeep pace with changes in the underlying platforms, networking and securitymethods, and demands from its users for more features.The goal for G-Kermit, on the other hand, is simplicity and stability, so wedon't need thousands of #ifdefs like we have in C-Kermit, and wedon't need to tweak the code every time a new release of each Unix varietycomes out. G-Kermit is meant to be PORTABLE and LONG-LASTING so the stress ison a MINIMUM of platform dependencies.If you make changes, please try to avoid adding anything platform-dependent orin any other way destabilizing. Bear in mind that the result of your changesshould still build and run successfully on at least all the platforms whereG-Kermit was built originally. In any case, you are encouraged to send anychanges back to the Kermit Project to be considered for addition to the masterG-Kermit distribution.15. FURTHER INFORMATIONThe Kermit protocol is specified in Kermit, A File TransferProtocol by Frank da Cruz, Digital Press (1987). A correctness proofof the Kermit protocol appears in Specification and ValidationMethods, edited by Egon Börger, Oxford University Press (1995).Using C-Kermit by Frank da Cruz andChristine M. Gianone, Digital Press (1997, or later edition) explains many ofthe terms and techniques referenced in this document in case you are notfamiliar with them, and also includes tutorials on data communications,extensive troubleshooting and performance tips, etc. Various other books onKermit are available from Digital Press.Online resources include: The Kermit Project website The GNU Project websitecomp.protocols.kermit.misc The unmoderated Kermit newsgroupThe ANNOUNCE file G-Kermit announcementskermit-support@columbia.edu Kermit technical supportPlease read before sending e-mail to the tech support address.16. DOWNLOADInstall packages are available for the following platforms:gkermit-1.0-1.i386.rpm Red Hat Linux 6.0 and later, Intel (PC) CPUgkermit-1.0-1.5.2.alpha.rpm Red Hat Linux 5.2 and later, Alpha CPUgkermit-1.0-1.alpha.rpm Red Hat Linux 6.0 and later, Alpha CPUgkermit-1.0-1.sparc.rpm Red Hat Linux 6.0 and later, Sparc CPUgkermit-1.0-1.src.rpm Red Hat Linux 6.0 and later, source codeThe NetBSD packages collection (about 25 different G-Kermit configurations available)gkermit_aix432-1_0_0_0.exe IBM / Bull AIX 4.3.2, Power CPUThe AIX version is a self-extracting ZIP archive that produces a bff file thatcan be installed with smit.Source-code archives are listed just below.If you have a C compiler, you should download the source archive, uncompressif it was compressed or gunzip if it was gzipped, unpack the tar archive with\"tar xf gku100.tar\", and then build from source code as explainedin Section 12. If you don't have a C compiler, downloadthe appropriate prebuilt binary, rename it to \"gkermit\", and give it executepermission (\"chmod +x gkermit\"). See Section 13for installation instructions. Filename Description gku100.tar.gz G-Kermit source tar archive, gzipped (62K) gku100.tar.Z G-Kermit source tar archive, compressed (90K) gku100.tar G-Kermit source tar archive, not compressed (212K) gku100.zip G-Kermit source ZIP archive (81K) gkermit68k.tar.gz G-Kermit sources, binaries, docs for CP/M-68K (117K) kermit/g/ Individual source and doc files (text)Individual binaries are also available for thosewho need them (contact us ifyou can make any that are not listed): Filename Description gku100.alpha-osf1-1.3 DEC Alpha with OSF/1 1.3 gku100.alpha-du-3.2 DEC Alpha with Digital UNIX 3.2 gku100.alpha-du-3.2c DEC Alpha with Digital UNIX 3.2C gku100.alpha-du-3.2d DEC Alpha with Digital UNIX 3.2D gku100.alpha-du-3.2g DEC Alpha with Digital UNIX 3.2G gku100.alpha-du-4.0b DEC Alpha with Digital UNIX 4.0B gku100.alpha-du-4.0c DEC Alpha with Digital UNIX 4.0C gku100.alpha-du-4.0d DEC Alpha with Digital UNIX 4.0D gku100.alpha-tru64-4.0e DEC Alpha with Tru64 UNIX 4.0E gku100.alpha-tru64-4.0f DEC Alpha with Tru64 UNIX 4.0F gku100.alpha-tru64-5.0a DEC Alpha with Tru64 UNIX 5.0A gku100.alpha-tru64-5.1 DEC Alpha with Tru64 UNIX 5.1 gku100.alpha-tru64-5.1a DEC Alpha with Tru64 UNIX 5.1A gku100.alpha-freebsd-3.4 DEC Alpha with FreeBSD 3.4 gku100.alpha-freebsd-4.4 DEC Alpha with FreeBSD 4.4 gku100.alpha-freebsd-4.5 DEC Alpha with FreeBSD 4.5 gku100.alpha-freebsd-4.6 DEC Alpha with FreeBSD 4.6 gku100.alpha-freebsd-4.7 DEC Alpha with FreeBSD 4.7 gku100.alpha-freebsd-6.0 DEC (HP) Alpha with FreeBSD 6.0 gku100.alpha-linux-db2.2 DEC Alpha with Linux Debian 2.2 gku100.alpha-linux-db3.0 DEC Alpha with Linux Debian 3.0 gku100.alpha-linux-rh5.2 DEC Alpha with Linux Red Hat 5.2 gku100.alpha-linux-rh6.1 DEC Alpha with Linux Red Hat 6.1 gku100.alpha-linux-rh6.2 DEC Alpha with Linux Red Hat 6.2 gku100.alpha-linux-rh7.1 DEC Alpha with Linux Red Hat 7.1 gku100.alpha-linux-su6.1 DEC Alpha with Linux SuSE 6.1 gku100.alpha-linux-su6.3 DEC Alpha with Linux SuSE 6.3 gku100.alpha-linux-su6.4 DEC Alpha with Linux SuSE 6.4 gku100.alpha-linux-su7.1 DEC Alpha with Linux SuSE 7.1 gku100.alpha-netbsd-1.4 DEC Alpha with NetBSD 1.4 gku100.alpha-netbsd-1.5.1 DEC Alpha with NetBSD 1.5.1 gku100.alpha-netbsd-1.5.2 DEC Alpha with NetBSD 1.5.2 gku100.alpha-netbsd-1.6 DEC Alpha with NetBSD 1.6 gku100.amd64-freebsd-6.1 AMD_64 with FreeBSD 6.1 gku100.armle-qnx-6.21 ARM platforms (Little Endian) QNX 6.21B gku100.armv41-linux-ipaq-db2.1 Compaq iPAQ H3650 Debian 2.1 gku100.armv41-linux-shark-db2.1 Compaq SA-110 Shark Palmtop gku100.armv41-linux-zaurus-sl550 Sharp Zaurus SL5500 Palmtop gku100.att3b2-sysv-3.1 AT&T 3B2/200 with System V R3.1 gku100.att7300-sysv-3.51 AT&T 7300 UNIX PC (3B1) with System V R3.51 gku100.clipper-clix-3.1 Intergraph InterPro 2020 with CLIX 3.1V7.6.27 gku100.cray_ymp-unicos-9.0 Cray Y-MP EL with UNICOS 9.0.2.2 gku100.hp9000s300-netbsd-1.3.1 HP 9000 Model 300 with NetBSD 1.3.1 gku100.hp9000s500-hpux-5.21 HP 9000 Model 550 with HP-UX 5.21 gku100.hp9000s300-hpux-6.5 HP 9000 Model 3xx with HP-UX 6.5 gku100.hp9000s300-hpux-7.05 HP 9000 Model 3xx with HP-UX 7.05 gku100.hp9000s300-hpux-8.00 HP 9000 Model 3xx with HP-UX 8.00 gku100.hp9000s400-hpux-8.00 HP 9000 Model 4xx with HP-UX 8.00 gku100.hp9000s300-hpux-9.03 HP 9000 Model 3xx with HP-UX 9.03 gku100.hp9000s700-hpux-9.05 HP 9000 Model 7xx with HP-UX 9.05 gku100.hp9000s700-hpux-9.07 HP 9000 Model 7xx with HP-UX 9.07 gku100.hp9000s300-hpux-9.10 HP 9000 Model 3xx with HP-UX 9.10 gku100.hp9000s700-hpux-10.01 HP 9000 Model 7xx with HP-UX 10.01 gku100.hp9000s700-hpux-10.20 HP 9000 Model 7xx with HP-UX 10.20 gku100.hp9000s800-hpux-10.20 HP 9000 Model 8xx with HP-UX 10.20 gku100.hp9000s700-hpux-11.00 HP 9000 Model 7xx with HP-UX 11.00 gku100.hp9000s800-hpux-11.00 HP 9000 Model 8xx with HP-UX 11.00 gku100.hp9000s700-hpux-11.11 HP 9000 Model 7xx with HP-UX 11.11 gku100.hp9000s800-hpux-11.11 HP 9000 Model 8xx with HP-UX 11.11 gku100.hp9000s800-hpux-11i-v2 HP 9000 Model 8xx with HP-UX 11i v2 gku100.i386-aix-1.2.1 PC (PS/2) with AIX 1.2.1 gku100.i386-beos-4.5 PC with BeOS 4.5 gku100.i386-bsdi-4.0.1 PC with BSDI/OS 4.0.1 gku100.i386-bsdi-4.1 PC with BSDI/OS 4.1 gku100.i386-bsdi-4.2 PC with BSDI/OS 4.2 gku100.i386-bsdi-4.3 PC with BSDI/OS 4.3 gku100.i386-coherent-4.2 PC with Mark Williams Coherent 4.2 gku100.i386-dgux54420 PC with DG/UX 5.4R4.20 gku100.i386-dynixptx-4.4.2 PC with Sequent DYNIX/ptx 4.4.2 gku100.i386-freebsd-1.0 PC with FreeBSD 1.0 gku100.i386-freebsd-2.2.7 PC with FreeBSD 2.2.7 gku100.i386-freebsd-2.2.8 PC with FreeBSD 2.2.8 gku100.i386-freebsd-3.1 PC with FreeBSD 3.1 gku100.i386-freebsd-3.3 PC with FreeBSD 3.3 gku100.i386-freebsd-3.4 PC with FreeBSD 3.4 gku100.i386-freebsd-4.0 PC with FreeBSD 4.0 gku100.i386-freebsd-4.2 PC with FreeBSD 4.2 gku100.i386-freebsd-4.3 PC with FreeBSD 4.3 gku100.i386-freebsd-4.4 PC with FreeBSD 4.4 gku100.i386-freebsd-4.5 PC with FreeBSD 4.5 gku100.i386-freebsd-4.6 PC with FreeBSD 4.6 gku100.i386-freebsd-4.7 PC with FreeBSD 4.7 gku100.i386-freebsd-4.8 PC with FreeBSD 4.8 gku100.i386-freebsd-5.0 PC with FreeBSD 5.0 gku100.i386-is5r3-4.1.1 PC with Interactive UNIX System V/386 R3.2 R4.1.1 gku100.i386-linux-ca3.1 PC with Caldera GNU/Linux 3.1 gku100.i386-linux-db2.1 PC with Debian GNU/Linux 2.1 gku100.i386-linux-db2.2 PC with Debian GNU/Linux 2.2 gku100.i386-linux-db3.0 PC with Debian GNU/Linux 3.0 gku100.i386-linux-md9.0 PC with Mandrake GNU/Linux 9.0 gku100.i386-linux-rh5.1 PC with Red Hat GNU/Linux 5.1 gku100.i386-linux-rh5.2 PC with Red Hat GNU/Linux 5.2 gku100.i386-linux-rh6.1 PC with Red Hat GNU/Linux 6.1 gku100.i386-linux-rh6.2 PC with Red Hat GNU/Linux 6.2 gku100.i386-linux-rh7.0 PC with Red Hat GNU/Linux 7.0 gku100.i386-linux-rh7.1 PC with Red Hat GNU/Linux 7.1 gku100.i386-linux-rh7.2 PC with Red Hat GNU/Linux 7.2 gku100.i386-linux-rh8.0 PC with Red Hat GNU/Linux 8.0 gku100.i386-linux-rh9 PC with Red Hat GNU/Linux 9 gku100.i386-linux-ra2.1 PC with Red Hat Advanced Server 2.1 gku100.i386-linux-su5.3 PC with SuSE GNU/Linux 5.3 gku100.i386-linux-su6.1 PC with SuSE GNU/Linux 6.1 gku100.i386-linux-su6.2 PC with SuSE GNU/Linux 6.2 gku100.i386-linux-su6.3 PC with SuSE GNU/Linux 6.3 gku100.i386-linux-su6.4 PC with SuSE GNU/Linux 6.4 gku100.i386-linux-su7.0 PC with SuSE GNU/Linux 7.0 gku100.i386-linux-su7.3 PC with SuSE GNU/Linux 7.3 gku100.i386-linux-sw3.4 PC with Slackware GNU/Linux 3.4 gku100.i386-linux-sw3.5 PC with Slackware GNU/Linux 3.5 gku100.i386-linux-sw4.0 PC with Slackware GNU/Linux 4.0 gku100.i386-linux-sw7.0 PC with Slackware GNU/Linux 7.0 gku100.i386-linux-sw7.1 PC with Slackware GNU/Linux 7.1 gku100.i386-linux-sw8.0 PC with Slackware GNU/Linux 8.0 gku100.i386-linux-sw9.0 PC with Slackware GNU/Linux 9.0 gku100.i386-linux-tu6.5 PC with TurboLinux 6.5 gku100.i386-linux-tu7.0 PC with TurboLinux 7.0 gku100.i386-minix-2.0.2 PC with Minix 2.0.2 (32-bit) gku100.i386-mpras-2.03 PC with NCR MP-RAS 2.03 gku100.i386-mpras-3.02 PC with NCR MP-RAS 3.02 gku100.i386-netbsd-1.4p PC with NetBSD 1.4P (ELF) gku100.i386-netbsd-1.4.1 PC with NetBSD 1.4.1 gku100.i386-netbsd-1.5.2 PC with NetBSD 1.5.2 gku100.i386-netbsd-1.5.4 PC with NetBSD 1.5.4 gku100.i386-netbsd-1.6 PC with NetBSD 1.6 gku100.i386-openbsd-2.5 PC with OpenBSD 2.5 gku100.i386-openbsd-2.9 PC with OpenBSD 2.9 gku100.i386-openbsd-3.0 PC with OpenBSD 3.0 gku100.i386-openbsd-3.1 PC with OpenBSD 3.1 gku100.i386-openbsd-3.2 PC with OpenBSD 3.2 gku100.i386-os2-3.0 PC with IBM OS/2 3.0 and EMX 0.9c gku100.i386-plan9 PC with Plan 9 from Bell Labs gku100.i286-qnx-4.25 PC with QNX 4.x (16 bit) gku100.i386-qnx-4.25 PC with QNX 4.25 (32 bit) gku100.i386-qnxnto-2 PC with QNX Neutrino 2+ gku100.i386-qnx-6.1 PC with QNX 6.1 gku100.i386-qnx-6.21 PC with QNX 6.21B gku100.i386-scoxenix-2.3.4 PC with SCO XENIX 2.3.4 gku100.i386-scounix-3.2v4.2 PC with SCO UNIX 3.2v4.2 gku100.i386-scoodt-3.0 PC with SCO ODT 3.0 gku100.i386-scoosr5-5.0.2 PC with SCO OSR5.0.2 gku100.i386-scoosr5-5.0.4 PC with SCO OSR5.0.4 gku100.i386-scoosr5-5.0.5 PC with SCO OSR5.0.5 gku100.i386-scoosr5-5.0.6 PC with SCO OSR5.0.6 gku100.i386-scoosr5-5.0.7 PC with SCO OSR5.0.7 gku100.i386-scoosr6-6.0.0 PC with SCO OSR6.0.0 gku100.i386-scoou8-8.0.0 PC with SCO Open Unix 8.0.0 gku100.i386-scoou8-8.0.1 PC with SCO Open Unix 8.0.1 gku100.i386-sinix-5.41 PC with Siemens Nixdorf SINIX-L 5.41 gku100.i386-solaris-2.5.1 PC with Solaris 2.5.1 gku100.i386-solaris-2.6 PC with Solaris 2.6 gku100.i386-solaris-8 PC with Solaris 8 gku100.i386-solaris-9 PC with Solaris 9 gku100.i386-solaris-10 PC with Solaris 10 gku100.i386-unixware-2.1.0 PC with UnixWare 2.1.0 gku100.i386-unixware-2.1.3 PC with UnixWare 2.1.3 gku100.i386-unixware-7.0.1 PC with UnixWare 7.0.1 gku100.i386-unixware-7.1.0 PC with UnixWare 7.1.0 gku100.i386-unixware-7.1.1 PC with UnixWare 7.1.1 gku100.i386-unixware-7.1.3 PC with UnixWare 7.1.3 gku100.ia64-hpux-11.22 IA64 (Itanium) with HP-UX 11.22i v2 gku100.ia64-hpux-11.23 IA64 (Itanium) with HP-UX 11.23i v2 gku100.ia64-linux-db3.0 IA64 (Itanium) with Debian Linux 3.0 gku100.ia64-linux-rh7.1 IA64 (Itanium) with Red Hat Linux 7.1 gku100.ia64-linux-rh7.2 IA64 (Itanium) with Red Hat Linux 7.2 gku100.ia64-linux-su7.2 IA64 (Itanium) with SuSE Linux 7.2 gku100.m68k-linux-db2.1 Motorola 680x0 with Linux Debian 2.1 gku100.m68k-linux-db2.2 Motorola 680x0 with Linux Debian 2.2 gku100.m68k-netbsd-1.4.2a Motorola 680x0 with NetBSD 1.4.2-Alpha gku100.m68k-cpm68k-1.2 Motorola 68020 with CP/M-68K 1.2 (rename to gkermit.rel) gku100.m68k-sv68-r3.6 Motorola MVME 147 68K, System V/68 R3V6 gku100.mvme68k-netbsd-1.5.2 Motorola MVME 147 or 167 m68k, NetBSD 1.5.2 gku100.m68k-nextstep-3.1 NeXTstation with NeXTSTEP 3.1 gku100.m68k-nextstep-3.3 NeXTstation with NeXTSTEP 3.3 gku100.m68k-openstep-4.2 NeXTstation with OPENSTEP 4.2 gku100.m68k-tandy6000-xenix-3.0 Tandy 16/6000 Microsoft XENIX 3.02.00 gku100.m88k-dgux-5.4r3.10 Data General AViiON 88110 with DG/UX 5.4R3.10 gku100.m88k-dgux-5.4r4.11 Data General AViiON 88110 with DG/UX 5.4R4.11 gku100.m88k-sv88-r4.3 Motorola MVME 187 88K, System V R4 V4.3 gku100.m88k-sv88-r4.4 Motorola MVME 187 88K, System V R4 V4.4 gku100.mips-irix-5.3 SGI with IRIX 5.3 (MIPS-1) gku100.mips-irix-6.2 SGI with IRIX 6.2 (MIPS-2) gku100.mips-irix-6.3 SGI with IRIX 6.3 (MIPS-2) gku100.mips-irix-6.2-n32 SGI with IRIX 6.2 (MIPS-3) gku100.mips-irix-6.2-64 SGI with IRIX 6.2 (64-bit) gku100.mips-irix-6.5.2 SGI with IRIX 6.5.2 gku100.mips-irix-6.5.4 SGI with IRIX 6.5.4 gku100.mips-irix-6.5.6 SGI with IRIX 6.5.6 gku100.mips-irix-6.5.10 SGI with IRIX 6.5.10 gku100.mips-be-qnx-6.21 MIPS platforms (Big Endian) QNX 6.21B gku100.mips-le-qnx-6.21 MIPS platforms (Little Endian) QNX 6.21B gku100.mips-sinix-5.42 Siemens Nixdorf RM200 with SINIX 5.42 gku100.mips-reliant-5.43 Siemens Nixdorf RM600 with Reliant UNIX 5.43 gku100.mips-reliant-5.44 Siemens Nixdorf RM600 with Reliant UNIX 5.44 gku100.mips-linux-db3.0 DECstation 5000 with Debian Linux 3.0 gku100.mips-linux-gentoo-1.4.16 SGI Indy-200 with Gentoo Linux 1.4.16 gku100.mips-netbsd-1.4.1 DECstation 5000 with NetBSD 1.4.1 gku100.mips-ultrix-4.3 DECstation 5000 with Ultrix 4.3 gku100.mips-ultrix-4.3a DECstation 5000 with Ultrix 4.3A gku100.pdp11-bsd-2.11 DEC PDP-11/44() with 2.11BSD gku100.pdp11-ultrix11-3.0 DEC PDP-11/23+ with Ultrix-11 3.0 (no I&D) gku100.vax-bsd-4.2 DEC VAX with 4.2BSD gku100.vax-bsd-4.3 DEC VAX with 4.3BSD gku100.vax-ultrix-3.0 DEC VAX with Ultrix 3.0 gku100.vax-ultrix-4.5 DEC VAX with Ultrix 4.5 gku100.parisc-ftx-3.4 Stratus Continuum (PA-RISC), FTX 3.4 gku100.ppc-linux-db2.2 Apple Power Mac with Linux Debian 2.2 gku100.ppc-linux-yd2.3 Apple Power Mac with Linux Yellow Dog 2.3 gku100.ppc-linuxppc-1999q2 Apple Power Mac with LinuxPPC 1999 Q2 gku100.ppc-linuxppc-2000q4 Apple Power Mac with LinuxPPC 2000 Q4 gku100.ppc-linux-su6.3 Apple Power Mac with Linux SuSE 6.3 gku100.ppc-linux-su6.4 Apple Power Mac with Linux SuSE 6.4 gku100.ppc-macosx-1.0 Apple Power Mac with Mac OS X 1.0 (Rhapsody 5.5) gku100.ppc-macosx-10.1.1 Apple Power Mac with Mac OS X 10.1.1 gku100.ppc-darwin-1.3.3 Apple Power Mac with Apple Darwin 1.3.3 gku100.ppc-darwin-5.3 Apple Power Mac with Apple Darwin 5.3 gku100.ppc-macosx-10.2 Apple Power Mac with Mac OS X 10.2 gku100.ppc-beos-4.5 BeBox, BeOS 4.5 gku100.ppc-powermax-5.1 Concurrent PowerMAX OS 5.1 gku100.ppc-qnx-6.21 PowerPC (Big Endian) QNX 6.21B gku100.rtpc-aix-2.2.1 IBM RT PC, AIX 2.2.1 gku100.rtpc-aos-4.3 IBM RT PC, AOS 4.3BSD gku100.rs6000-aix-3.2.0 IBM Power Series with AIX 3.2.0 gku100.rs6000-aix-3.2.5 IBM Power Series with AIX 3.2.5 gku100.ppc-aix-4.1.3 IBM Power Series with AIX 4.1.3 gku100.ppc-aix-4.1.5 IBM Power Series with AIX 4.1.5 gku100.ppc-aix-4.2.1 IBM Power Series with AIX 4.2.1 gku100.ppc-aix-4.3.2 IBM Power Series with AIX 4.3.2 gku100.ppc-aix-4.3.3 IBM Power Series with AIX 4.3.3 gku100.ppc-aix-5.1 IBM Power Series with AIX 5.1 gku100.pyramid-dcosx-1.1 Pyramid MIS-ES6/1024 SMP DC-OSx1.1-95c087.4 gku100.s390-linux390 IBM System/390 with Linux/390 gku100.s390-linux-su7.0 IBM System/390 with SuSE Linux 7.0 gku100.sh4-qnx-6.21 SH4 platforms (Little Endian) QNX 6.21B gku100.sun3-sunos-4.1.1 Sun/3 with SunOS 4.1.1 gku100.sparc-linux-db2.2 Sun Sparc with Linux Debian 2.2 gku100.sparc-linux-rh6.1 Sun Sparc with Linux Red Hat 6.1 gku100.sparc-linux-rh6.2 Sun Sparc with Linux Red Hat 6.2 gku100.sparc-linux-su7.1 Sun Sparc with Linux SuSE Linux 7.1 gku100.sparc-netbsd-1.4.1 Sun Sparc with NetBSD 1.4.1 gku100.sparc-openbsd-2.3 Sun Sparc with OpenBSD 2.3 gku100.sparc-sunos-4.1.1 Sun Sparc with SunOS 4.1.1 gku100.sparc-sunos-4.1.3 Sun Sparc with SunOS 4.1.3 gku100.sparc-solaris-1.0.1 Sun (Tadpole) SparcBook2 with Solaris 1.0.1 gku100.sparc-solaris-2.4 Sun Sparc with Solaris 2.4 gku100.sparc-solaris-2.5.1 Sun Sparc with Solaris 2.5.1 gku100.sparc-solaris-2.6 Sun Sparc with Solaris 2.6 gku100.sparc-solaris-7 Sun Sparc with Solaris 7 gku100.sparc-solaris-8 Sun Sparc with Solaris 8 gku100.sparc-solaris-9 Sun Sparc with Solaris 9 gku100.sparc-solaris-10 Sun Sparc with Solaris 10 gku100.x86_64-linux-rh3.0as AMD Opteron x86 64-bit Red Hat Linux 3AS17. BOOTSTRAPPINGTHIS PROCEDURE ASSUMES THE TARGET COMPUTER HAS A UUDECODE PROGRAMAND AN UNCOMPRESS PROGRAM.G-Kermit is especially handy when your UNIX computer has no other filetransfer method that you can use. In this case, it is often possible to\"bootstrap\" G-Kermit onto your computer because of its small size. SupposeComputer A is a UNIX computer on the Internet, and Computer B is theunconnected computer where you want to install G-Kermit. Download the binaryfor Computer B to Computer A from the Kermit website, then compress it oncomputer A, and then uuencode it, for example(the parts you type are underlined):$ mv gku100.att7300-sysv-3.51 gkermit$ compress gkermit$ uuencode gkermit.Z gkermit.Z > gkermit.Z.uueThis gives a 35K text file having 573 lines. Now use a terminal emulator suchas C-Kermit, Kermit 95, or MS-DOS Kermit to make a connection to Computer B,for example by modem or direct serial connection, log in, and give a \"cat\"command to copy incoming characters to a file; for exampleC-Kermit> set line /dev/ttyS0C-Kermit> set speed 57600C-Kermit> set set flow-control noneC-Kermit> set carrier-watch offC-Kermit> connectlogin: youruseridPassword: $$ cat > gkermit.Z.uueNow \"escape back\" from the connection by typing Ctrl-Backslash(hold down the Ctrl key and press the Backslash (\\) key); now you shouldhave the \"C-Kermit>\" prompt again. At the C-Kermit prompt give a TRANSMITcommand for the uuencoded file, e.g.:C-Kermit> transmit gkermit.Z.uueIf you are using a non-Kermit terminal program, it probably won't have aTRANSMIT command, but it is likely have an \"upload with ASCII protocol\"choice in its protocols menu, so use that.When the upload is finished, connect back to Computer B andtype Ctrl-D (hold down the Ctrl key and press the D key)to close the new file and return to the shell prompt, and then:$ uudecode gkermit.Z.uue$ uncompress gkermit.Z$ chmod +x gkermitNow you have a file transfer program on computer B. Of course thisbootstrapping method is error prone since \"ASCII\" is not an error-correctingprotocol, so you might have to try several times, perhaps reducing your serialspeed. But once gkermit is successfully installed on Computer B, you can useit to transfer files into and out of Computer B to/from any computer that has aKermit program and that can make a connection to Computer B. You can also usegkermit to receive the larger C-Kermit, which thengives Computer B dialout and scripting capabilities.For those who need to bootstrap G-Kermit from a non-UNIX platform, eachG-Kermit binary has been compressed and uuencoded for you. In fact, thereis a dot-Z version (compressed with UNIX 'compress') and a dot-gz version(compressed with GNU gzip), for example: gku100.i386-scoxenix-2.3.4.Z.uue (compress: 34K, 550 lines) gku100.i386-scoxenix-2.3.4.gz.uue (gzip: 25K, 408 lines)The names correspond to those in the binaries list, but with \".Z.uue\"added for compressed versions and \".gz.uue\" added for gzip'dversions.CLICK HERE for FTP access.Top Kermit Home 59ce067264