Fixes to 2.2 - Illegal instruction found for host_lookup.c - SVR4 warnings cleaned up. - Corrected problems caused by the FUDGE_FACTOR when using old termrc files. - Corrected termtest compile problem - Fixed SVR4 bug introduced with UNIX_SV patch - Linux seems to be having real problems with unix sockets now, so I switched tupload to use a tcpip socket. - Corrected host_lookup realloc error. Pointed out by Ossi A Tulonen. 2.1 -> 2.2 - Changed conflicting file names. - Added 'killall' to termtest. - Added '-1' and '-2' options to termtest. - term_socket split into term_socket and term_udpsocket so that at least to some extent the udp support can be patched to work without term - Added Danny Gasparovski's patch for support of inetd. I think inetd is supposed to be patched as well. - Added C_SETPEERNAME, so termified clients can know where the connection comes from when tredir was used. - Separated listen() from C_BIND and created C_LISTEN. However, I created lots of errors in the process, so I left my debugging statements in... But now termified in.ftpd will work in Danny Gasparovski's inetd modifications in remotehost type mode. Unfortunately, it will get confused if you use the "localhost" or "remotehost" in the ftp open command. - Updated old/PROTOCOL.unix to reflect current do_link.c options. - Added duplicate_socket() options, so term clients may continue working after a chroot() command. Also added term_chroot() so we can make sure term has a socket before doing the chroot(). - Optimized away most C_GETSOCKNAME calls - Made C_LISTEN a no-return command - Removed a sleep(10) I accidently left in - Added "Achim Bursian" 's patch for EP/IX-OS - Made Makefile.in and configure changes to support termify-0.2 - I decided termtest sounds better than termtest. It is also most consistent with the naming convention used by other term developers. - Changed the hangup stuff just to set the baudrate to 0. - If compression fails, the next packet from the same client will not be skipped, then if it fails again, the next two will be skipped, ..., At most 16 packets will be skipped. - Changed tupload and tdownload to default with or without compression like everything else. - Fixed a problem that caused the termrc "shell" output to be lost. - Speeded up "baudrate 0" by removing the select() delay. - termtest now prints the executed command in the logfile. - A few fixes with the -1 and -2 options in termtest. - Added patches from uknf@rz.uni-karlsruhe.de for: - Check-summing in upload/download - Makefile.in and configure patches to allow static and shared library clients to be compiled without a repeat of the ./configure command - tmon cleanup. - I used his TERMDEBUG environmental variable idea, but in a completely different implimentation. - Added "mark (m.s.) lord" 's hpux txconn fix. - Tupload and tdownload will autoresume with '-f' when possable. - Added term_strerror and term_perror for outputing errors. - Added host_lookup to speed things up slightly. - Fixed it so if a socket is closed with fclose() or some other manner unknown method to termnet, termnet will close the old socket when the new one is created. - Added "Paul Kronenwetter" patches for DGUX - Restored original hangup code. - Fixed file_crc to return an unsigned short, with 0 == failure. Fixes to 2.1 - Various tdownload fixes submitted by Chris Metcalf. - Fixed "term_rcmd()" security bug... - Fix to make tdownload sound more sane. (Chris Metcalf) - Fix to HCX/UX that reduces data losses. - Fixed problems with FATAL returns in non-fatal situations 2.0 -> 2.1 - Added Chris Metcalf's tdownload - Applied Olaf's tmon "patch" - Switched to UNIXLIKE priority by default (we'll find out if this is reasonable) If things are sluggish this release, we'll have to switch back. - Gave higher priority to small packets. - Corrected client # used in term_connect() with udp sockets - More error messages, clean-up. term_herror() split to include a term_strherror() - Added hostname passing with the version #'s to help reduce client startup times. - Made term_send() call term_sendto() so udp messages are always handled correctly. - Hopefully fixed trsh not to have Broken pipe errors, and early closings. - Tupload will now copy file permissions and time stamps. While uploading a now file, it will have permissions 000 to keep others from trying to read the file. - C_OPEN, C_UPLOAD, and C_DOWNLOAD have been merged... - C_DOWNLOAD will now return C_STAT information, and then proceed to dump the file. Since in many case C_DOWNLOAD was closing early, it will no longer close at the EOF. - TERMCLIENTS is created to pass sockinfo to term children. - Added 2.0.5 and 2.0.6 fixes - Added Chris Metcalf's tupload and tdownload patches - Modified configure to work with rcs version control - Added Ami Fischman's patch for ISC support (SVR3.2 clone) - Added Chris Metcalf's patches for: -floating stopbits -new dll path -tshutdown hangup feature - Fixed term_connect() problem with udp connections - Changed static clients to the same binary to help with disk quotas - Automated my version updating procedure in Makefile.in - Added a check for ERR_BLOCK for non-blocking connect. I know this is needed for TitanOS and suspect it is needed for a few other OS's too. - Tdownload patched to use mode 0 for while downloading 2.0 -> fixes - "<= 20000" corrected to "< 20000" and printing of version # corrected - Several minor Makefile.in fixes. - reading of DISPLAY corrected in txconn - Corrected putenv to be term_putenv to avoid malloc() problems - Eliminated the compiler warning at the end of udpredir.c - jump-update doesn't seem to work, so I've commented it out. - put escape checking back in do_ignore - To avoid prototype problems, I explicitly changed the getopt stuff to term_getopt. - Explicitly changed all free(x) commands to if(x)free(x) to avoid SunOS problems with NULL pointers - Minor makefile patch to handle non-existent directories properly - Removed "strcasecmp()" commands I accidently left in. - CPU fix for trdated, and minor fix to sendto_from_buff() - Another attempt to fix the breakout_string to work with a shift value - Fixed term_connect udp problem - Limited PIPE_BUF to 30k to avoid AIX problems, thanks to Joerg Passenberg pre-2.0 -> 2.0 changes: - tmon's priority raise to 15 - baudrate checking added for bsd systems - RC_OPTIONS was too large - The sockinfo array is now always initialized first in termnet functions. - Very large "udp" messages may be truncated if necessary. This should speed things up a bit. - hpux config fix, end seteuid setegid replaced to setuid and setgid. 1.19 This is really 1.18pl07 renamed. This should be considered Gamma, and is the final release of the version 1 series. NOTE: Just to really confuse things, pre-1.19 will now become pre-2.00, and what would have been 1.18pl07 will be 1.19. As an undesired side-effect all previous alpha versions will now be broken. pre-1.19 fixes: - version # fix - C_PORT fixed - fixed QNX implementation - included MachTen config options - patch to pty.c to fix SCO and hopefully sol2 - recvfrom patch to prevent problems when multiple messages arrive at the same time. - Problems installing static libs fixed - Problems with missing initializations in recvfrom, sendto and link.c fixed - Corrected "terminate" to work with a shift value - Corrected a core dump problem in link.c from gethostbyname() failures - More pty.c fixes from Chris Metcalf - Minor patch so udp doesn't bomb when term_bind() fails, but the program continues anyways. (Or term_bind() is never called.) - Corrected most of the clients to report an error when they can't connect to a socket. - Two minor SCO fixes. - Another minor udp fix, and a rewind_buffer fix. - Fix to share/non-share support so things should work correctly without TERMMODE in most cases. - Added convex c-series supercomputer patch thanks to daveg . - Added Chris Metcalf's tupload patch - Added Danny Gasparovski's tudpredir with a small patch - Final documentation changes and upload fix, "termnet" fix. 1.18 -> pre-1.19 - UDP support added thanks to: Danny Gasparovski - Shared library support: Davor Jadrijevic wrote the original shared library support. Most of his code was replaced when we switched from a Makefile to a Makefile.in format, but he is still the one who got things started. Shared library Support for: Linux ==> Chris Metcalf, and Davor Jadrijevic SunOS ==> Chris Metcalf NetBSD ==> Sorry I lost your name & address. - New configure script and Makefile.in thanks to Chris Metcalf - New functions: term_herror ==> Chris Metcalf udp related stuff ==> Danny Gasparovski - New OS support: QNX ==> Brian Campbell - Termrc options/changes: o "quiet", "packetsize" thanks to Chris Metcalf o Added "blocksize", "increment", "shell", "stopbits" o Eliminated "retrain" and "nonblock" - Client changes: o Patches to improve the accuracy of tupload's progress report and transmission speed thanks to Chris Metcalf o More information added to "tmon" 's output. o Exit status fixes o txconn now accepts the default display as an argument o txconn now returns the full display name. - Config options/macros changes: SHAREDIR ==> Should always be defined USERSHARE ==> Eliminated PRIVILEGED_MODE ==> Eliminated PUBLIC_MODE ==> Eliminated NON_CONNBLOCK ==> Replaced with the reverse USE_CONNBLOCK - Serial changes: o Use the detected the serial baudrate on non-BSD systems instead of 2400 as the default. o Default stop_bits value changed from 2 to 1 which is really now treated as a half stop bit. o New blocksize variables to help keep term from creating serial overruns when writing too much to the modem at once. o Maximum packet size option for those who need it. o Collisions option added for those who have problems sending and receiving at the same time. - Transmission protocol fixes: o Rewind buffer added so term can recover better from errors. o More meaningful transmission error messages. o The breakout string will no longer be echo-ed or sent in a packet un-escaped until term has accepted it as a legitimate shutdown command. Also uppercase letters are not echoed as lowercase on the remote. o A breakout string instead of a breakout character is used so you can set something like 'NO CARRIER' to terminate your term server. o The maximum packet size has been increased from 253 to 256 - Command protocol fixes/changes: o Several functions corrected to return a status or not to return a status. o Commands like C_CLOSE now accept a client #. o send_command() will no longer wait for commands that previously always returned I_OK o send_command() will switch from non-blocking IO to blocking IO and back again when necessary. o Added C_PUTENV so C_EXEC clients can inherit "txconn"'s redirected display. - Internal fixes/changes: o The 1/20th of a second update time is changeable with the increments rc option. o Changed to a primary variable of max_cps instead of baudrate and changed baudrate to an unsigned long. o Eliminated some of the arbitrary sizes by introducing I_LIMITS o Switch back to using INADDR_ANY when binding to ports. o read_into_buff will now do reallocations, so BUFF_INC_SIZE was replaced with PIPE_BUF o Added a MAX_BUFF size of 32727 to help prevent allocation errors. o Round-robin priority between -20 and 20 is now used for term clients. o Default to use non-blocking connections. o General clean-up of the ring buffer code. o Thanks to neumann@watson.ibm.com (Gustaf Neumann) who found the txconn tredir bug was that cons[] elements were not being initialized. o pty.c re-organized and modified with QNX support - Termnet fixes: o termnet will test for the file "/etc/termnet" or the environment variable "TERMMODE" before trying to use full term support. o security bug fixed in term_rcmd() o several new functions added, and atexit() is used to insure term clients are closed. o New addressing: 127.0.0.254 == "remotehost" 1.18 Fixes - str_version modified to allow patch level releases like this. - replaced #include with #define for the first three lines in linecheck.c - added 'A' to the argument list for getopt in main.c - fixed term_rcmd to use "remotehost" - At Stephen J. Roznowski's prompting fixed upload.c and C_STAT to use correct variable types for file sizes and permissions. - Following fixes by Chris Metcalf: o separate ULTRIX target for INSTALL="install -c"; and ULTRIX for magic uname-based auto install. o next definition change to use putenv.o not putenv.c as an object o else true; added to Makefile o link.c --> some (char *) casts to keep next happy o lib.c --> changed %.2lu to %02lu o various manual page fixes - Hopefully fixed bind_tcp not to fail even if /etc/hosts is wrong. - cleaned up tupload's final report. - correct a bug in termnet.c that occasionally caused loss of data during connections. - Same fix for term_rcmd, and a security problem fix in term_rcmd - Added IRIX definition (I know this is new, not a fix...) - Fixed a problem with USERSHARE causing segmentation faults. again - Added Chris Metcalf's fix to fix a buffer overflow problem. - Fixed TERMSHARE and TERMDIR path parsing. - Added BOONE BARRY EDWARDS for for Dynix/ptx - Split open_pty in an attempt to make it more readable - A little more cleaning of include files. - Added 'terminate' to the termrc options, so I can specify 'NO CARRIER' to terminate my term connection instead of '00000'. 1.17 - 1.18 (bcr@physics.purdue.edu) - Fixed "aix"'s Makefile definition. - Fixed a serious problem with "trsh". - Extensively cleaned up the include files, and eliminated seteuid and references to USE_SETGID - Modified build_args() and term_rcmd() to pass terminal type. - Changed BUFF_INC_SIZE to 2048 from 1024. This seems to speedup tupload. - Changed TR: to ETA: in upload.c o Applied patches: DYNIX/PTX support BOONE BARRY EDWARD NetBSD patches Stephen J. Roznowski o Added the following termrc options: "login on/off" default "on" replaces -DLOGIN_SHELL "delay #" default 20000 reduces CPU usage "stopbits #" default 2 allows correct computation of transmission speed "nonblock on/off" default on allows users to deactivate non-blocking IO "retrain on/off" default off Tells term to try to adjust timeout and window size values. Takes about 50k-100k to reach optimal values. o Added the following files: putenv.c Only need if your system libraries doesn't have it. term_getopt.c Always used so options are parsed the same for all OS's. trdate.c Allows trdate and trdated (thanks to Kevin Lentin) to pass remote system time. o Rewrote: read_rc() It's now easier to add new options, and inline comments always work. term_getsockname() Now uses C_GETSOCKNAME term_gethostbyname() Now uses C_GETHOSTNAME o Fixed: C_GETSOCKNAME Didn't work with term117 C_GETPEERNAME Didn't work with term117 shared versions If you have _POSIX_SAVED_IDS, term will be much more secure now. o Added define options: TERM_NFS_DIR for those using term directory's on NFS mounted directories. N_PACKETS adjust if you need window sizes greater than 16. o Added features: Environmental variable passing Modified: C_EXEC and C_PTYEXEC Version # passing. Pre-term117o versions are assumed to be term108. "remotehost" Short for the other machine's name. i.e. "telnet remotehost" 1.16 - 1.17 (bcr@physics.purdue.edu) - More changes to the TERMIOS stuff - Added socket address passing with C_ACCEPT. - Added patches suggested by chengb@craft.camp.clarkson.edu (Bruce) for AIX - Added the patch by Chris Metcalf to: o support for both "universe" models under HCX/UX; this allowed me to bag the "universe ucb" I put in the Makefile, and take out the restrictive comment in config.h under hcx. Term seems to compile fine under both versions. I ifdef'ed out the initial "Remote: term" message under hcx since this makes it hang when running under "test". o Portability to NeXT 2.1, which doesn't have S_IXUSR and S_IXGRP. o reworked support for the hideous terminal_new() crock (all my fault). The whole static struct termios thing is a tremendous lose. Different disagree about field placement (e.g. c_line, and the VFOO fields of c_cc) and name of symbolic constants to use (e.g. values for c_line). The right thing to do is to pull in the oldterm as the default, then update the fields you actually know about to good values. I also finally did the right thing and added the equivalent support for the BSD model. Note that I also change ECHOCTL to be 0 if it's undefined, since some other random hex value is likely to correspond to some unwanted tty mode. (The #ifdef Next stuff disappeared, but I don't think "Next" is defined on the NeXT anyway, just "NeXT".) o I added an ultrix target in the Makefile (just like OSF/1 or SGI). I also changed SHAREDIR to be under /usr/local, along with the rest of the default directories; although people will probably change these to match their local structure anyway, it ought to be consistent. o A bunch of changes to make the -Wall compile cleanly under Linux. These include %d vs. %ld to match argument size, variable initialization where gcc doesn't realize the variable can't really be used uninitialized, adding parentheses around && and ||, removing variables and function calls that aren't used, and adding includes (either explicitly or by forcing I_IOCTL) to prototype functions. It turns out you don't want to include as well as the termios stuff on SunOS 4.x, so I explicitly checked for that. o Changes to allow term to compile with the HCX/UX C compiler. Constructs like "=-" and "=+" used to be synonymous with "-=" and "+=", and the HCX/UX compiler warns about them and then does the wrong thing. So I added whitespace around the "=" to fix it. (I also did two other minor portability mods: I changed "index" to "strchr" in termnet.c for consistency, and replaced "strdup" with "malloc/strcpy" to avoid requiring it to be in the library.) - Added Derek Atkins patch for C_GETHOSTNAME, C_GETSOCKNAME, and C_GETPEERNAME - wrote translation functions str_to_sockaddr(), str_to_hostent(), hostent_to_str(), sockaddr_to_str() and modified routines to use these. - Modified term_gethostname() to use C_GETHOSTNAME - Modified term_connect() not to expect special address #'s for remote hosts. - Added term_gethostbyaddr() - Corrected term_accept() to do C_DUMB... 1.15 - 1.16 (bcr@physics.purdue.edu) - added the NO_PTYEXEC option so trsh now works without the '-s' option when connecting to TitanOS - Modified Makefile to include TitanOS. - Modified Makefile to have the rule "installshare" and other minor changes needed for shared support. - Modified main.c and client.c to handle shared mode - Modified anyplace I saw an exec or a open to swap userid (if possible). - Modified clients for setuid and setgid security. - term_gethostbyname, term_connect, and term_rcmd added to client.c - modified client.h to reflect these changes. - fixed trshell.c to default to "rlogin localhost". - Added additional functions term_bind, term_accept, term_close, term_shutdown - Added the command C_BINDS to allow AF_INET sockets to connect to a UNIX domain socket. - Modified C_BINDN to work for non-zero port #'s. - Moved the new networking stuff into termnet.h and termnet.c - Renamed the global "debug" to "term_debug" to avoid conflicts. - Fixed? N_FTP problem. - Added BSDI support. - Raised the default MAX_CLIENTS to 64 1.14 --> 1.15 Non-blocking connections. Now only the one client hangs when doing a slow TCP connect, instead of all of them. Thanks to Steven Grimm (koreth@hyperion.com) Finally got SCO support in. Many thanks to Tom Kelly (tom@ancilla.uucp) for patches, and considerable patience. This introduces a major protocol change, that will break txconn if both ends are not upgraded. xconn will now send C_X_SERVER instead of C_SOCKET. So unless you term server understands this, it will break. added Term.HOWTO. Thanks to Bill Reynolds added tmon fixes. thanks to The Crouton Man (crunchy!croutons@dartmouth.edu) Fixed cast in pty.c for AIX and other sensitive compilers. Fixed bug in BSD pty handling. If master was available, and slave wasn't, term went into infinite loop. Removed various warnings from pty.c Removed some automatic initialization because it seems there are a lot of brain-dead of compilers out there still. Lots of nice stuff from Chris Metcalf among them: support for HCX/UX 5.1 removed various warnings. changed open_pty() to use preset default, not terms initial settings. This will cure termios problems when term was run from seyon or some such. various fixes to docs. 1.13 --> 1.14 Hopefully fixed compile errors for NeXTSTEP on intel.. Chdir fixed. Thanks to Tom May (ftom@netcom.com) Compiles mostly clean on suns again. Thanks to lot of people telling me it was broken. :) More osf1 support from Craig I Hagen. (hagen%opine@cs.umass.edu) Macro correct. This fixes problems with tredir + termftp. Thanks to Rick Sladkey (jrs@world.std.com) Fixed login_shell. thanks again to Rick Sladkey. Please send me a postcard.. (read README) :) 1.12 --> 1.13 Bug in tredir w.r.t. buffering fixed. Was causing segv's. Thanks to Glenn (glenn@physics.su.oz.au) 1.11 --> 1.12 Bug in pty handling fixed. If opening a master pty succeeded, but opening the slave failed, then term wouldn't search the rest of the bank, and would just skip to the beginning of the next bank. Only applies to BSD style ptys. Bugfix for hpux support. thanks Carlo Kid NetBSD support from "Stephen J. Roznowski" . Sol23 support improved. Thanks to Michael.Bender@Eng.Sun.COM (Duke of Canterbury). TitanOS support added. Fixed baudrate = 0 problem. added amount of data transmitted into tmon report. corrected baudrate=0 problem with tmon by introducing variable scale. Above all thanks to "Bill C. Riemers" Updated README file. Major change is: Don't send me E-mail to say you liked term! It's nice, but my mailbox is pretty full. Send me a postcard instead. That's MUCH nicer, and it will impress my girlfriend! ;-) See README for address. 1.10 --> 1.11 New linecheck!. Many many thanks to Jeff. Take a look at the beginning of linecheck.c for instructions. Some more stats added to upload. Thanks to platt@coos.dartmouth.edu fixed tredir, txconn. They were broken by the new(ish) dynamic buffers. support for AIX. thanks to Scott logan (silogan@vnet.ibm.com) 1.10 --> 1.10-sil Added USE_TIOCNOTTY to AIX defs in config.h. Added real AIX-style pty handling in pty.c. Fixed redir.c and xconn.c to pay attention to command line options like -t. Fixed test.c to run one side of the test pair with "-r". If you compile with -DLOGIN_SHELL, trsh starts a login shell by default. Bug w.r.t unixware select() fixed. Re-wrote makefile to get rid of all the system specific makefiles. 1.0.9 --> 1.10 fixed realloc() for suns. *sigh*. realloc(0, n) fails on a sun. replaced fprintf() with debug_ll(). fixed language in a few places. correction: alpha/osf1 support is by Craig I. Hagen, not marius hancu. My mistake. apologies. Bug introduced into upload fixed. Was causing all transfers to fail leaving zero length files. Delay that was inadvertently left in removed. There was a 1/10th of second delay in the main loop, resulting is awful thruput on v.high speed lines. If the baudrate is set to 0 (i.e. -s0 ) then rate limit is not done. This is useful on higher speed links. The normal window/timeout mechanism is more than good enough on links > 9600. Ps. This is not a version of term. See 109 release notes. I'm not sure quite what it IS, but is definitely isn't a version. :-) Added the delay back in, but made it smaller. It drops the CPU time used by an order of magnitude.... 1.0.8 --> 1.0.9 3 fixes by Kay Roemer. Term will now close some files that it wasn't before, read buffered data from a child that has exited, and close the right sockets for children. Alpha/osf1 support from Marius Hancu Prevent compressing more than 2K of data into a single packet. The biggy. Preventing data overruns. People using TCP connections that have very compressible data can now work in peace. Term previously used fixed size buffers. Now it uses dynamic buffers. This means that if a client is a bit slow in reading data from term, term will increase the buffer size instead of throwing away data. On the down size, term's memory usage is now theoretically unlimited. This should fix most if not all of the problems people had with X over term. I finally got bitten by this once too often. THIS is DEFINITELY the last version of term. I hope. 1.0.7 --> 1.0.8 Well, I did what I swore not to. Here's a new version of term. Fixed a bug relating to overflow on a timer variable. Caused term to stop working sometime on Oct 26th.... *blush*. Jeff and I found this at the same time (probably along with a LOT of other people.. :), and I used jeff's patch. (cleaner than mine). Merged in olaf's patches. Olaf, I've managed to delete your email. Please mail me again. See 'Blurb' for olaf's changes. I suppose I'll have to support this bloody version too! argh!!!!. :) -------------------------------------------------- At this point, you start at the end of the file and read backwards.. I started adding new information to the top, instead of the bottom. --------------------------------------------------- 0.3--> 0.4 Fixed upload to make the optional arg really optional. Fixed main.c to NOT cat the file arg to the socket name. 0.4--> 0.5 Added baudrate option + env variable. Xconn now checks the DISPLAY variable to know what display to use. Fixed bug in xconn relating to printf. Fixed main.c. Was using wrong lower bound for baudrate. Thanks to Someone who's name escapes me. mail me again please. 0.5--> 0.5.1 Silly bug in strncmp() in main.c 0.5.1.--> 0.5.2 Fixed a few out of date docs. 0.5.2.--> 0.5.3 The argument parsing got improved a lot. Thanks to M. Saggaf. 0.5.3 --> 0.6 Xconn got modified to use an INET socket instead of a UNIX socket. This means you can run term on one machine, and use x apps on another. 0.6 --> 0.6.1 I wrote a Q&D hack to see how the serial line performs. Consists of checkline.c and linerem.c (for local and remote ends). See readme for details. 0.6.1-->0.6.2 Fixed up pty.c a bit more. Hopefully it should the child proc should be able to lose the controlling term on a sun now. :( There was a damned silly bug. I had forgotten to #include config.h Fixed xconn to properly print the display it was connecting to. Fixed xconn to look at DISPLAY if it existed and use that for the display number. Fixed up sun stuff a bit (EAGAIN instead of EWOULDBLOCK). Fixed up terminal.c to set VMIN and VTIME 0.6.2 -> 0.6.3 Added a ~/.term/termrc Should be able to set everything from the termrc file, including escaped characters. See TERMRC for format. Beware, it isn't tested. :) Also, at the moment, it assumes that adding 32 to an escaped character, won't produce another escaped character. Two new features. a -f option tell term to generate control-Q's ( in case line noise generates a control-S ). In a termrc you can specify a 'shift'. This simply get XOR'ed with all character before they are sent, and after they are received. The purpose being to map a lesser used range on characters down to 0-32 (which are all escaped). I use 224 (0xE0). Haven't measured the speed up. But histogram of characters received shows a drop in the number of escapes sent. 0.6.3 --> 0.6.4 I was forgetting to close the file descriptor used to read the termrc file. 0.6.4 --> 0.6.5 A goddam silly bug. was doing if(strcmp) instead of if (!strcmp) SIGH!!!!!!!!! 0.6.5 --> 0.6.6 Another silly one. Wasn't escaping characters properly. 0.6.6 --> 0.6.7 Changes the way the input window was worked out. Hopefully it fixed some bugs reported by some ppl. 0.6.7 --> 0.7.0 Re-wrote the compression tree handling. Hopefully a lot clearer, and understandable. Hopefully less bugs too. Fixed a few of the include files to remove warnings. Fixed a a bug in upload.c Was doing i == 0, instead of i =0. Fixed a bug in test.c had arguments in wrong order. Thanks to fjh?? for pointing this out. Fixed serial.c so that five 0's will exit term regard less of what the byte_shift is set to. 0.7.0 --> 0.7.1 Added support for SGI. Thanks to 'warwick' harvey. Fixed xconn to properly look at DISPLAY, search for the first unused display. The way to run it now is... "setenv DISPLAY=`xconn`" Reduced window size to 2. Don't THINK it will adversely affect throughput but haven't extensively tested it. 0.7.1 --> 0.7.2 Added options to configure both the window size, and the packet timeout values. Changed the default window size up to 3. A size of 2 at 2400 baud introduces too much latency into keystrokes. Added an option to toggle transmit forcing. Forcing is now off by default. Not tested properly. Added the -w , -t flags. 0.7.2 --> 0.7.3 Fixed bug in xconn relating to searching for unused display. Added the -n flag. See OPTION, and TERMRC for details. See also the source. :) Cleaned up some more prototypes. Compiles are now cleaner. 0.7.3 --> 0.7.4 Added handling of escaped characters that produce another char that should be escaped. 0.7.4 --> 0.7.5 Fixed noise echoing to remove byte shifting. Tried to write some BSD terminal handling. Someone who has BSD want to test this?? The famous compression bug found!!!! The all-singing-all-dancing- wonder is gone! Many many thanks to Janne Sinkkonen (sinkkone@ cc.helsinki.fi) for this. I was clearing 300 bytes , on a 256 byte buffer. :( 0.7.5 --> 0.7.6 More prototype fixes. Removed the call to abs() in link.c (convex does have it apparently) Fixed checkline.c to send an XON after every character (so it doesn't 'freeze'), and increased rate to 16 characters per second instead of 1. There is a new client 'redir'. Usage is 'redir '. So you can do 'redir 23 4000' and then everyone who telnet's to port 4000 on your remote machine, will get connected to telnetd on your local machine. 0.7.6 --> 0.7.7 Fixed a bug in main.c. Fudge_flow was supposed to be a counter limit, not a flag. 0.7.7 --> 0.7.8 Fixed makefile. 'make test' make the wrong file. Changed the way error handling was done. Added in LL read/write debugging. Added support for ranges in termrc. i.e. 'escape 0-32' should work. Not extensively tested. Lots of structural changes internal to term. Missing break; in main.c -n was broken. fixed now. An incredibly stupid bug in serial.c fixed. I was using && instead of ||. Resulted in the retransmission being brain-dead. *SIGH!!!!!* Resulted in the packet window being as full as possible instead of the reverse. Changed the algorithm used to decide re-transmission. Now it will never timeout a packet before the 'timeout' value. Will not write out an error message for any line of the ~/.term/termrc file that it doesn't recognize. Redir can now redirect to a host. I.e. 'redir 119 my.news.server:119' on the linux box, lets you treat your linux box as an NNTP server. Thanks to Rick Sladkey. Renamed all the clients to get a 't' in front. term --> term rsh --> trshell upload --> tupload xconn --> txconn rsystem --> trcmd redir --> tredir 0.7.8 --> 0.8.0 Replaced waitpid() with wait3(). Added support for NeXT Added support for AIX Added (partial) support for BSD Thanks to crunchy!croutons@dartmouth.edu we have support for individually compressed streams. I.e. you can be uploading a file with no compression, while running a shell who's output does get compressed. Added priorities for streams. Vastly improved response time with multiple streams (I hope.. ). Achieved by checking for new clients ready more often. The old scheme was to take data from a client until it had none left before looking for a new client. Now it looks for a new client at the beginning of every packet. This is what it should have been doing anyway. Re-wrote the client option handling. Now all clients take 4 arguments -t Tries to connect to the socket ~/.term/socket Default is "". Useful only if you are running multiple terms (over multiple serial connections). -r Turns off compression for this link. -c Turns on compression for this link. the above two options affect compression both ways. The capacity is there to only compress one-way. Tell me if you want this? -p Changes the priority of the link to . Default is zero. tshell has a default of 2. tupload has a default of -2. The priority is currently absolute. i.e. if a there is a client with a high priority with data to send, then no client with a lower priority will send until the higher has finished. This probably needs improve- ing. 0.8.0 --> 0.8.1 Redid all the #include files. Simplified (hopefully), and consider- ably easier to port. Fixed a bug in link.c. Was very silly. It could end up switching channels in the middle of a control sequence. Added signal handling for kill signals and segv's. 0.8.1 --> 0.8.2 Fixed another silly bug in 'tredir' client. Was introduced in version 0.8.0 Fixed bug in makefile. Had missed a few places that were using the old names of the clients. Fixed bug in xconn.c Was using wrong filename for the X-window unix-domain socket. Added some more debugging calls. -d64 should be fairly informative for control information now. Added quick+dirty 7 bit support. run term with '-a' on both ends to use it (a == seven. maybe.). Or put "sevenbit" in your ~/.term/termrc file. WARNING!!!!!! It is very rudimentary. In particular, unless you send everything compressed, then it will strip the top bit of it. i.e. uploading file when not using compression with corrupt them. WARNING 2!!!!!. It is in no way tested. Mail me how it goes.. Makefile got extensively re-written. Thanks to croutons (again :). 0.8.2 --> 0.8.3 0.8.2 was basically pretty stuffed try again. Fixed bug in compress.c (introduced in 0.8.2). Fixed a few minor bugs in link.c relating to put_client_data being called with an uninitialized structure. Hopefully fixed the bug with things not exiting when they quit. Really fixed the above bug. Telnet through a redir will now exit properly. (was a bug related to the changed format for control sequences. Read PROTOCOL.unix for details). Brought PROTOCOL.unix up to date. 0.8.3 --> 0.8.4 Fixed prototype spelling error in link.c Tried to fix trcmd. Does anyone use this?? Fixed a few race conditions WRT control messages. Was clearing buffers at some in-appropriate points. Should fix the multiple upload bugs. Fixed get_next_client so that clients with the same priority share the line equally. 0.8.4 --> 0.8.5 Fixed the bug that was corrupting X windows streams. Fixed a (potential) bug in redir.c (Same one as xconn.c). Removed the trcmd client. Renamed the trshell client to be 'trsh'. 0.8.5 --> 0.8.6 Removed the C_SYSTEM command, and associated files. Fixed a bug in xconn.c WRT searching for an unused display. Thanks to croutons again, trsh now takes multiple arguments happily. commands like 'echo this is a multiple argument command' should work just fine. Wrote a CREDITS file. Anyone I have missed please mail me. Applied Rick Sladkey's changes so that C_SOCKET will work with a dotted decimal address. 0.8.6 --> 0.9.0 Removed 7 occurrences of dubious language. Fixed pty.c to test for more ptys. Thanks to Rick sladkey for pointing this out. It now tests pty{p,q,r,s,t,u,v,w,x,y,z} if this isn't enough, let me know, and I will fix it for more. Went and implemented return codes for all commands. This means that you shouldn't get any 'hangs' when attempting to use non-existent ports and other such oddities. This also changes the command protocol which means you have to upgrade both ends, and all your clients to use it. tupload will now do recovery. If you try to upload a file that already exists on the remote end, then term will seek to then end of the file, and to the equivalent position on the remote file, and start uploading from there. Not fully tested. 0.9.0 --> 0.9.1 Write a minimal 'tstat' client. It currently just tells the compression ratio's that the local and remote ends have achieved. Write a Q&D strerror() for sun's. It is in lib.c Fixed a small bug in lib.c. Was doing if t<0 && !t ... 0.9.1 --> 0.9.2 We finally have some genuine man pages! Thanks very much to gtaylor (see CREDITS file). Added support for HPUX. Added in a new checksum routine. This one is a genuine CRC. Started to merge checkline into term proper. Changed most things to use unsigned chars. Should fix a few problems on sun's. Eliminated a race condition in pty.c 0.9.2 --> 0.9.3 Fixed a small bug in man pages. Updated the README file. 0.9.3 --> 0.9.4 Updated the escaping mechanism. It is now dependent on the direction of the link. There are 3 new termrc commands. "escape" now simply tells term never to transmit that character. "ignore" tells term to silently strip that character from the input stream. I.e. if your modem uses software flow control use "ignore 17" and "ignore 19". "seven_in" tells term that the remote end is seven 7 bit tokens. "seven_out" tells term to transmit seven bit tokens. So in the unlikely event that you have a seven bit link TO to remote host, and an 8 bit link FROM the host. Lets say that it chews all control characters and 126. The 8 bit link is clean. No characters get chewed. Your local termrc should look like.. seven_out escape 0-31 escape 126 and the remote termrc. seven_in ignore 0-31 ignore 126 "sevenbit" now is the same as doing both "seven_in" and "seven_out". 0.9.4 --> 0.9.5 Fixed silly bug WRT seven bit mode. Was sending packet that were too long. Added (a little) more into to tstat client. 0.9.5 --> 0.9.6 Added an error check to tredir, to check for errors in binding the local socket. Fixed the sevenbit support a bit. It was still possible for term to try to generate packets longer than 127 bytes. 0.9.6 --> 0.9.7 Fixed compression for seven bit mode. 0.9.7 --> 0.9.8 Added more information to C_STATS Change client.c to include varargs.h for a sun. Mail me if this is wrong. Changed 'server' to be 'term_server' to avoid (potential) conflict when linked with other programs. Fixed a problem in client.h whereby un_char might not have been defined. Fixed the man pages WRT tredir %d %s:%d. Added tmon client. Fixed a few minor bugs in the same. Extensive internal changes. Everything now uses the Buffer struct, and all the oddball buffer routines have been cleaned up. Also, partial support for bound sockets has been added. Added support for SIGWINCH. Written by Teemu Rantanen, cleaned up slightly by me. Doesn't (yet) handle on-the-fly resizes. 0.9.8 --> 0.9.9 Fixed an include file bug in trshell.c Wasn't #include'ing signal.h Implemented a remote bind protocol. See the two new sever commands C_BIND, and C_ACCEPT. Fixed some more char/un_char conflicts. Fixed tmon.c (wasn't including sys/time.h). A new and improved version of tmon is included. This one is much more accurate. 0.9.9 --> 0.9.9a Fixed a HZ in tmon. Should compile most places now. Half fixed a bug relating tmon.c. It works, but there is still a race condition. The problem is if two clients start at opposite ends at the same time, they will get the same number. This is bad. (Hopefully) fixed SGI support. Tried to fix a condition relating to EWOULDBLOCK. (Could people please try and let me know how to reproduce a bug if they see it!?) 99b Fixed all the check_client() stuff. Should exit more cleanly now. *cross fingers*. 99c Improved the Makefile, so there is only one reference to the compiler. Fixed the select(). It now passed the number of fd's to check, not just 64. Added support for varargs.h. varargs is used instead of stdargs if the #define USE_VARARGS is defined. Fixed spelling of 'compiling' in README file. (Thanks to cfs@nir.gatech.edu [Charles Stevens]). Changed xconn.c to do a little more error checking. Improved the README to be a little clearer. 099d Documented the commands in client.h Added a C_DUMP command. usage is C_DUMP %d, meaning to go dumb for the next %d bytes. See protocol.unix. Removed the C_CLIENTNUM, and replace it with a C_STATS sub-function. Documented all the new commands in PROTOCOL.unix. Happy now Quarters? :) Added in Jeff Grills new upload. Fixed tmon to remove all references to termio{s} from it. Added calls to terminal_raw() so that any key will immediately exit it. Read the key before exiting to ensure it doesn't get read by the shell. Fixed JG's new upload so that it uses C_DUMP, instead of opening a new connection for each file. Added a C_STAT at the end to ensure that tupload doesn't exit before the entire file is there. Fixed read_into_buff to take the size. (needed for new upload). 099e Fixed a few bugs in upload. 099f various bug fixes and code clean-up. (read: I can't remember what I changed. :) Added a bit of sanity checking in link.c:get_client_data(); 099g More sanity checking in read_into_buff/write_from_buff(); Added a bit more information to tmon. Extended C_STAT to read file types and permissions. Re-wrote much of xconn.c to be more robust, and smaller. Re-wrote xconn a bit more, and redir as well. Moves the bulk of the (common) code to connect.c. 099h Updated PROTOCOL.unix Added S_IFREG, and S_IFDIR to link.c for those machines that don't have them. (i.e. F****** suns!). Changed the dependencies to NOT include the system header files. Tried to get term to compile nicely on a 386BSD. Fixed Makefile.{sun,sgi} to include connect.c Fixed xconn to print out the display number it is using. export DISPLAY=`txconn` should now work. Made tredir move itself into the background automatically. No longer need to invoke it with 'tredir ... &'. Replaced a few 'char' with 'un_char's. There was one in serial.c that was screwing compilers that used signed chars. Upgraded upload to match Jeff Grills. The new upload has lots of features that aren't yet documented. Improved pty.c and general hpux support. Thanks to H.J. Lu Re-wrote bits and pieces of upload to suit myself. Made gratuitous changes to the formatting on the way. 099i Removed the automatic escaping of characters < 32. Now escapes NO characters be default. BEWARE!!!!!! If this causes you problems, a quick fix is to add 'escape 0-31' to your ~/.term/termrc file. This improved my CPS rate by some 12% just up escape 30 instead of 32 characters. Added a signal() to ignore SIGPIPE's. This was what was killing term at in-opportune times. Fixed a bug in C_STAT relating to permissions. Made tupload use no compression by default. If you want to upload something and have it be compressed over the link, you will have to use 'upload -c ...'. Term can't handle compressing stuff that is already compressed. Txconn, and Tredir will now only run when term is running, and will exit when term exits. Tell me how you feel about this change. 099j Tried to clean up shell exiting. Fixed up the pty.c code. It was checking for the wrong ptys first. The patches hpux had broken ptys for other machines. 099k Prevented term from sending five '0' itself accidently, and killing the remote term as a result. Moved the detection Fixed S_ISREG's in link.c for machines that are missing them. Was defining the wrong thing. Ripped out the prevention of term sending five zeros. I had made a mistake. Term only interprets the five zeros if they are line noise. Instead, add a 'breakout' option to termrc. This sets the character to watch for. Fixed the sig_child handling a bit more. Shells should exit cleanly now... Improved the sigwinch handling for sun's. Sun's are broken. I am getting a VERY low opinion of suns.... 099l Fixed a minor bug in link.c that caused upload to hang. It only showed up when there was a '@' in a byte, on a 2047 byte boundary. 099m Changed the sample TERMRC to be a real sample. Fixed tmon to not core-dump is there is no compression. Changed checkline to start from 0 instead of 32 (to fit in with removing the automatic escaping of 0-31) Jeff Grills improved upload some more. Added a progress indicator. Now to write download....... Default timeout is now 3.5 seconds instead of 2.5 (i.e. timeout 70) This is to make it work by default with slower modems. Added lots of support for people with multiple term's on the same machine. Now if you run 'term home' it will try and read ~/.term/termrc and then ~/.term/termrc.home. It is ok for one or both of them not to exist. If the TERMSERVER environment variable is set, then clients will act as if they had been invoked with '-t $TERMSERVER' and try to connect to that server. i.e. if you run 'term home', then doing "export TERMSERVER=home" will cause all clients to use the 'home' server. Added the 'chdir' option to termrc. 'chdir ' will cause term to try and chdir to that directory on startup. This will cause all relative file references to be relative to that directory. Fixed PROTOCOL.unix. Removed the C_EXEC entry as it is obsolete. Had a go at improving the robustness of checkline/linerem. Made them work asymmetrically. Improved the pty handling. It now checks to make sure both the master and slave can be opened before committing itself. This lets it handle ptys that are left in a dud state. Fixed a bug in serial.c. The byte_shift was resulting in corrupted bytes in seven_bit mode if byte_shift was > 127. Implemented byte stuffing. In seven_bit mode, term now stuffs 7 eight bit bytes into 8 seven bit bytes. It doesn't check if the stuffing is needed tho. :( It should only stuff if the top bit is being used, but it stuffs all raw characters. Ppl can live with this for now. Added a CPS to the upload -vv display. Fixed a minor bug in upload.c relating to -vv display. (CPS was -ve and too high ). Added a few patches to support AIX. Minor stuff. Fixed a bug with response which resulted in results being sent to the wrong end. 099n Updated the CREDITS file. Re-wrote the introduction blurb. Added sevenbit.o to Makefile.{sun,sgi}. An oversight. Fixed a little bit of AIX support. Fixed the sevenbit byte stuffing. upload has a few bug fixes. The CPS bug is fixed. There is a '-u' flag. This will erase the file after a successful upload. source file pathnames are now truncated. use '-as' to override this. Note that you need to use a '--' before the first filename if you want to use -as. i.e. 'tupload -f -r -vv -- local.file -as remote.file'. Extensively revised the man pages. Checkline/linerem got re-written by Jeff Grills. Try them and see what they say about your line. 099o checkline/linerem replaced by linecheck. MANY thanks to Jeff Grills. Got rid of the 'Clearing Dict table' messages. Fixed a bug relating to connections getting closed before the buffers were flushed. Deleted the checkline/linerem programs and associated man pages. Fixed a few minor bits in linecheck. Stuffed up all the formatting to suit me and my editor. Placed term under Gnu Copyleft. Changed README to suit. Added a copy of the GNU copyleft. Removed some more debugging information from main.c the 'client gave this:..' and 'select: ..' warnings are now gone. Make tredir/txconn ignore SIGPIPE signals. These were causing it to exit when clients exited in a hurry without letting tredir know about it. Changed redir, and xconn to have the capability to redir multiple ports in the one redir. If anyone wants to play with writing a user interface, feel free. :). do_connect() now takes an array of ports to watch. Re-wrote the checkline/linerem section of the README to be about linecheck. Edited the information jeff sent to be more readable for novices. 099p There was a race condition that occurred when a remote client, and a local client started up at the same time. To fix, edit your ~/.term/termrc file on ONE end, and add the line 'remote' to it. This should ensure lines like 'trsh -- tupload -f -c -v o' will work. Makefile fixed to generate 'linecheck' not 'check'. More debugging information got lost. This time the perror("accept"); Installed a new(er) version of linecheck. Thanks again to Jeff. Fixed the dependencies in the Makefile for linecheck. 099q Fixed a bug in upload. It wasn't closing files after it had uploaded them. Added -l option. Does the same as redirecting stderr. Just for ppl with braindead shells. Made term use only stdin, instead of stdin/out. I.e. term will try to write to stdin to write to the modem. This should normally be ok. Added the -1 option. If used, term will use stdout as the modem, instead of stdin. Added -v option. Usage is '-v'. Set the modem device. i.e. run as 'term -v/dev/ttys1' to use /dev/ttys1 as the modem. Warning!!! For forward compatibility do NOT use more than one -v. Properly fixed upload, and added a C_CLCLOSE command for clients. Interested ppl can see link.c. Fixed a bug in send_command() that was resulting in dud command_result returns. Re-wrote the error reporting in link.c. Replace do_return with the two routines ret_ok(), and ret_fail(). term 1.0.0. YES!!!! at last! Patched in Jeff's linecheck patches. Fixed 2 bugs relating to upload. released 1.0.0 NOTE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ALL FUTURE RELEASED WILL BE NAMED "SLAP" There will not be another version of term. It has been re-named "slap" (for serial line access protocol). term 1.0.1 Re-wrote the stdin/out handling as it was causing problems on the NeXT. Fixed a small bug in upload relating to uploading a file from stdin. Note! The above implies there will be no work done on term. This is just to say that bugs will be fixed as they appear, but term will get no new features. All my efforts will now go into Slap. 1.0.2 Fixed a mistype in terminal.c Had in mypid; instead of int. Thanks to warwick for this. Added code to define STDIN_FILENO in linecheck.c if it wasn't already defined. Fixed the Makefile.sun for linecheck. Oversight. 1.0.3 Fixed the problems with term hanging on Sun's. Turns out it is a dogey sun select(), and a missing continue in my source. Thanks VERY much to one David E Wexelblat. 1.0.4 Changed the way term worked for non-vhangup cases. Merged in Hugh Secker-Walker's patches to support NeXT boxes. Merged in support for SGI machines. Added makefiles for mips, and next machines. Thanks again to Hugh. 1.0.5 Added SVR4 support. Tried to fix up a bug in xconn and tredir 1.0.5.a [ by Hugh Secker-Walker, for NeXTstep, not part of Michael's release ] At Michael's suggestion to fix a bug with high-speed links, changed link.c line 94 from 'if (p_in[.... ' to 'while (p_in[....'. Added README.NeXT, README.MIPS, select.c.mips, upload.c.mips. 1.0.5.b [ by Felix A. Lugo, E-mail: Felix_A_Lugo@ATT.COM ] Added Solaris 2.1 support. Fixed problems with do_resize (misc.c) and added support for pixel window sizing (misc.c, link.c, trshell.c). Fixed problem with restoring tty settings after abnormal exits and re-enabled SIGINT and SIGQUIT. 1.0.6 Merged in changes as per above, and released as 1.0.6 1.0.6.a [ by Hugh Secker-Walker, hugh@mit.edu ] Trsh accepts -s option for a simple connection, i.e. no pty on remote end using C_EXEC. Also, trsh restores terminal when killed. In link.c, support for C_EXEC, to run a command using /bin/sh -c, and no pty. This for the -s option of trsh. In pty.c, fixed use of pipe used to confirm that child exec'ed. Unresolved problems remain (on NeXT) with printf in child hanging. (This latter was not a problem until the pipe bug was fixed so that the parent (term) really waits.) Also, added open_socket() for support of C_EXEC. In term.1, term_clients.1, and term_setup.1, numerous editorial changes and additions. Merged in changes as per above, and released as 1.0.6 1.0.7 Fixed Makefile.sun to look for linecheck.c instead of checkline.c Fixed misc.c to NOT put out literal bell's (dunno about you but I hate the noise). (all above due to jeff grills.) See above list of change by Hugh as 1.0.6a