Begin File: xc-src.tgz Description:telecommunications program Keywords:xc terminal dial modem Version: Entered-date: Author: Ported-by: Original-site: Copying-policy: Supplemental: B A C K G R O U N D Once upon a time (in 1985 or so), a fellow named Eric Coe wrote a Unix dialout telecommunications program with xmodem called XCOMM. This program was substantially upgraded and improved by another fellow named Larry Gensch, who brought XCOMM up to Version 2.2. Version 2.2 included a simple script language, 128-byte Xmodem and Compuserve Quick-B file-transfer protocols, and some other stuff. Fred Buck then changed the program name to XCMALT, which it maintained until June 1991, when Jean-Pierre Radley renamed it XC. XC is a massive expansion and modification of XCOMM 2.2. Many bugs in XCOMM 2.2 have been fixed, and many advertised features that didn't work in XCOMM 2.2 do work in XC. Also, XC includes a fullscreen dialing directory; a totally rewritten and much more powerful script language allowing, among other things, remote execution of shell commands and unattended protocol-controlled file transfer (provided that your system also has Chuck Forsberg's "rz/sz" Xmodem/Ymodem/Zmodem program, available as shareware from many sources), a flexible variable mechanism, including access to shell environment variables, and more; BREAK-signal capability; the capability to upload a file in ASCII from within a script; and miscellaneous cosmetic changes. But while XC incorporates much of Larry Gensch's work, it's not supported by Larry Gensch (although he contributed the key-binding features starting with XC3.2a). The changes from XCOMM 2.2 are the product of Steve Manes, who installed uucp LCKfile support and special compile-time tuning for SCO Xenix, and who wrote the fullscreen dialing directory; Fred Buck, who rewrote the script language, performed various bugfixes and alterations, and installed special compile-time tuning for the Tandy 6000; and Jean-Pierre Radley, who installed the B+ Protocol, used more termcap features, and is now the "caretaker" of XC. I N S T A L L A T I O N Run Configure. There are various definitions that have to be set according to your flavor of Unix, your preference for default directories, and other user-definable items. Typing just "make" will compile XC. On most systems, XC should be run "suid uucp", and in order to do this, you should have chosen "uucp" as the user to own the program, and 4755 as its permissions. If so, typing "make install.suid" willl strip out its symbol table, place the program in INSDIR, and change its modes and permissions accordingly. If you did not elect this when running Configure, you can type "make install", but XC's permissions will probably not allow it to properly cope with dial-in/dial-out ports. The "xc.nro" file is 'nroff' source for a manual page which describes the command-line options, the various commands once you're running XC, script language, file transfers, and the price of milk in Soviet Georgia in 1986. This file MUST pass through 'tbl' and 'col', e.g., "tbl xc.nro | nroff -man | col > /usr/man/cat.L/xc.L". Some distribution files that you might adapt to your own purposes: .exrc sets tabstops and shiftwidth to 4, which is necessary to properly view almost every file in the XC distribution. It also contains, commented out, macros to help read CompuServe message downloads, and to prepare replies. .xc sample startup script, demonstrates keyboard bindings .phonelist sample dialing directory data file .callhq sample script to call a Unix/Xenix system .uni sample script to call CompuServe and enter UnixForum .aus sample script to call CompuServe and enter, in turn, SCOForum and UnixForum, uploading any prepared messages, capturing all new messages into separate files, and hanging up. .autocis sample script to call CompuServe, get any waiting Mail into a capture file, then visit the PRACTICE and the Unix Fora in turn, uploading any prepared messages, capturing all new messages into separate files, then hanging up. .cisdial meant to be called as a sub-script for dialing CompuServe. .temp_opt meant to be called as a sub-script for temporary setting of Options in a CompuServe Forum to make efficient use of .autocis, .aus, or .uni. .pass a subscript containing passwords for various sites. This should have very restrictive permissions. .rz sample script to receive files using the public domain "rz/sz" package. .sz sample script to send files using the public domain "rz/sz" package. call a Bourne shell script to use a spare modem to dial voice calls for you. callback a Bourne shell script to call a site and have it return the call and present a 'login:' prompt. cisdownload a Bourne shell script to fetch a file from a Library in a CompuServe Forum. X C R E V I S I O N H I S T O R Y Version 4.1 Gensch & Radley 4 Apr 93 Added Configure script Took out T6000 conditional Changed 7e|7o|8n to 7e2|7o2|8n1, with CSTOPB as needed Version 3.4 Radley 13 Feb 1993 Took out bitmask and 7bit stuff, now have 7E, 7O, or 8N capability Sleep(1) after PREFIX to allow modem to react (clue from Doug Scothorne) Fixed newbmask signalling to prevent leak into B+ (clue from Jim Asman) Deleted for-loops in s_dial and s_term (clue Brian Ferguson) Tested for CO if no CN (clue Roy Johnson) Version 4.0 Radley 11 Jun 1992 Used ANSI Prototype function declarations (this road will not be travelled further...) Version 3.3 Radley 25 May 1992 Provided call (clue from John Esak) and cisdownload shell scripts Do not fork to terminal mode if stderr is not a tty Added mini-menu Merged Larry Gensch's 3.2a additions into xcscript.c Used Larry Gensch's NIL-pointer macro throughout Make a local copy of scriptname within S_Call() Renamed isig() to mode() Rearranged sections of the manual Restored newbmask (clue from Doug Scothorne) Set ptr = word early in k_waitfor (clue from Peter Smithem) B+ Packet_Size requests 2k if bps > 2400 (CIS may eventually do this) Use BS=c_cc[VERASE] == user's ERASE key (clue from Peter Gutmann) Used oldmode before printing help or dialdir (clue from Bill Greene) SYSVR4 mods for xcport.c (Larry Rosenman) Version 3.2a Larry Gensch 22 Sep 1991 Made hard-coded terminal mode escape character a SETable value Added dynamic keyboard binding module Added bind_function, bind_script, and bind_function to script language Added fullword synonyms for command line keywords (eg, quit, term) Incorporated show_bindings() into help display Modified help display into more readable (to me, anyway) format Added show_bindings() as a terminal mode function (esc - ?) Fixed command line input routine Version 3.2 Radley 24 Aug 1991 Set terminal's c_oflag to 0 (clue from Ronald Khoo) Openfile fix (Peter Smithem) Undefined toupper/tolower macros Removed toggle() and introduced capt_on() and capt_off() Changed diversion pacing back to using waitfor() Changed send_slowly to send_string; left out inter-character delay Removed newbmask Purge() before doing a %take (clue from Bob Stockler) Reinstalled xmodem crcheck as it was in 2.5 (clue from Volker Beyer) Rearranged some modules to make gcc happier Renamed intdel() to isig() Unscrambled the SUCCESS/FAILURE nonsense in xcscrpt.c Dropped trminp() in favor of fgetc() Reworked signal handling Version 3.1 Radley 14 Jul 1991 Purge() before starting B+ (Al Bolduc) Eliminated purge as a set option. Send \r, not \n, after the Byeptr (Al Bolduc) When diverting from a script, pace by reading modem one line at a time Combined capture/captflag, and cf/cfp Version 3.0b Radley 08 Jul 1991 Eliminated mklow/mkhigh in favor of tolower/toupper Shortened inter-line delay in script transmittal Version 3.0a Radley 29 Jun 1991 Bugs re DIDO ports logic Spelling errors in xc.nro Added Buck-type CIS macros to .exrc Version 3.0 Radley 06 Jun 1991 Program name XC replace XCMALT, by Jean-Pierre Radley Ditched nap() in favor of times() Cleaned up error handling in xcscrpt.c Used NULLS and NULLF where appropriate Used same crc table for xmodem and B+ (Mike Barton) Increased size of f[] in xcdial.c (Tom Cattrall) Introduced XC_PATH (Dan Everhart) Won't mistake a directory for a script (clue from Bob Stockler) Added "hangup" script keyword (Dan Everhart) Forced 8N1 setting on opening port (clue from John James & Russ Ranshaw) Cleaned up manual page Included 38400 speed Deleted ioctl(TCFLSH) from s_exit() (David Kindred) Fixed spurious return to dialing directory after B_Transfer (David Kindred) Fixed auto toggle after dialing without a script (clue from Roger Chaplin) Use carat-char for a ctrl-char in waitfor as well as in transmit Added MY_ESC-Q to quit XC from terminal mode (clue from Bill Hobson) X C M A L T R E V I S I O N H I S T O R Y Version 2.9 Radley 02 Sep 1990 Fixed error messages and file opening in xcb+.c when permission denied. Version 2.8 Radley 01 Sep 1990 Fixed interrupt handling when dialing from phonelist (clue from Jim Asman) Merged xcparse.c into xcscrpt.c Fixed backspace handling in getline() Used getline() inside man_dial() Did away with using /dev/tty For cron: do not bother with TERM if !isatty() Fixed page counting in dial directory routines (clue from Mike Squires) Changed Msg[80] to Msg[SM_BUFF] (clue from Dave Cardinal ) Fixed a bad tgetstr() call (clue from Per Bilse) Version 2.7 Radley 12 June 1990 Merge install.doc into xcmalt.h and README Change xcmalt.doc to nroff source Add cr_add flag to insert [or not] CRs after NLs in B+ uploads Version 2.6.1 Betz, Cattrall, Roberts, Scothorne, Radley 13 May 90 Use separate rxbuf and kbbuf for port/keyboard input (Tom Cattrall) Stretched some sleep and nap delays (Doug Scothorne) Removed '/' from INSDIR definition in Makefile (Tom Betz) Fixed bug in while/do/call script/done logic (clue from Tom Roberts) Removed dd_done variable Fixed terminal(todir) logic Version 2.6 Radley 29 April 1990 Reinstated SCO 2.2 ungetty calls Deleted crc setting, xmodem now always done with CRC Added auto flag, automatically start capture on entering terminal mode Used tputs() for screen control strings. Version 2.5 George Pontis & Jean-Pierre Radley 19 April 1990 Use ioctl.h only for the T6000 Fixed calls to nap() for BSD Fixed statbuf() declaration bug in xcport.c Included mklow()/mkhigh() as frontends to tolower()/toupper() Included NOSHELL option Exits mopen() if no port specified Version 2.4 Radley 31 Mar 1990 Made all identifiers unique in first seven characters. Replaced incorrect references to "baud" and "baud-rate" by "bps" and "bits/second" Version 2.3 Radley 19 Feb 1990 B-Plus replaces Quick-B Reinstated xclog code No mungmode variable; overwriting of a file interactively confirmed. No term variable; all transfers return to Terminal mode. Added timer.c, to calibrate the built-in nap() code. Version 2.2 Radley 05 Jan 1990 Removed XCLUDE termio setting, which locked port on first fopen() Change setuid to be uid of 'uucp' Fixed set/get/uid routines Revised menu display Removed xclog code from xccisb.c Changed many TCSETAW ioctl calls to TCSETA Version 2.1 Radley 12 Dec 1989 Revised all inverse video displays Took out more unnecessary routines Permitted operation from 'cron' or 'at' Fixed some of the interrupt routines Removed PUT_TAKE manifest, code for put/take now always included Fixed some of the mopen() routines. Did away with DRIBBLE, use nap() instead Version 2.0 Radley 9 Aug 1989 Added openfile routine (credit to George Pontis) Added LIBDIR (credit to George Pontis) Used setbuf on local tty (credit to George Pontis) Eliminated fflush() calls Fixed put and take code Deleted SCO 2.2 ungetty stuff Version 1.0 ...all in or about, oh, say, 1988. CD-independent modem opening added by Fred Buck/J-P Radley Broken shell-escape mechanism fixed by Fred Buck Tandy 6000 LCKfile support added by Fred Buck Flexible LCKfile support added by Steve Manes Same, for SCO 2.2, added by J-P Radley Fullscreen dialing directory added by Steve Manes Fullscreen dialing directory tuned by Fred Buck/J-P Radley Shell-escape ignore-SIGINT bug fixed by Fred Buck Command-mode ignore-xon/xoff bug fixed by Fred Buck Script parsing greatly extended by Fred Buck "BYE" sequence to modem on exit added by Fred Buck Program named XCMALT instead of XCOMM, by Fred Buck X C O M M R E V I S I O N H I S T O R Y Version 2.2 larry gensch 14 Dec 87 Major code restructure Reduced program and command options Added SET command for setting various parameters Added HANGUP command for disconnecting modem Modified xccisb.c code to support CIS "Quick B" Protocol Added xcscrpt.c code for processing script files Added SCRIPT= parameter to phonebook processing (auto-logon scripts) Added CIS parameter for CIS auto transfers Added NL parameter for newline translation Added HANGUP command from terminal mode Added SCRIPT command from terminal mode Version 2.1b larry gensch 11 Nov 87 Bug Fix release (no bugs in the code, just some portability fixes) Changed "sigset" in xccisb to "signal" Removed #include from xcxmdm Version 2.1a larry gensch 28 Oct 87 General Update Added CIS "B" Protocol (c, ct commands) Added BAUD= & BITS= parameters to phonelist file. Switched some command letters Revised command line parsing to use getopt() Version 2.0 larry gensch 19 Oct 87 Revisions for System V.3 Changed references to (modified ioctl(2) calls) Changed terminal mode function keys to sequences; added getconchr() Version 1.1 Eric E Coe 21 Jul 85 Autodial for Hayes-compatible modem. General rearranging of the code Version 1.0 Eric E Coe 12 Apr 85 Program created =================================== Note: in the original XCOMM file "install.doc", Larry Gensch gave his various mail addresses for users to reach him about bug reports, upgrade requests, and the like. But Larry doesn't support (or in fact have anything to do with) XC/XCMALT, except as a contributor, and the fact that XCMALT is based on XCOMM 2.2, so there's no point in including this information here. Fred Buck, who made the major changes from XCOMM to XCMALT, passed away in early 1989. Jean-Pierre Radley has since been shepherding the program as it evolved from XCMALT to XC. Gripes, bugs, and comments accepted by: Jean-Pierre Radley jpr@jpr.com 72160.1341@compuserve.com archive contents: drwxrwxr-x 0 jwall techies Jan 22 09:46 xc -rw-rw-r-- 0 jwall techies 506 Apr 15 15:58 xc/configure.out -rw-rw-r-- 0 jwall techies 1169 Apr 4 19:57 xc/.aus drwxrwxr-x 0 jwall techies Jan 22 09:45 xc/man -rw-rw-r-- 0 jwall techies 97401 Apr 15 20:22 xc/man/x.ps -rw-rw-rw- 0 jwall techies 50222 Apr 15 18:03 xc/man/xc-man -rw-rw-r-- 0 jwall techies 3533 Apr 4 19:57 xc/.autocis -rw-rw-r-- 0 jwall techies 849 Mar 1 07:16 xc/.callhq -rw-rw-r-- 0 jwall techies 453 Mar 1 07:16 xc/.cisdial -rw-rw-r-- 0 jwall techies 815 Apr 12 10:26 xc/.exrc -rw-r--r-- 0 jwall techies 833 Oct 13 21:23 xc/.pass -rw-rw-r-- 0 jwall techies 1221 Oct 13 21:23 xc/.phonelist -rw-rw-r-- 0 jwall techies 152 Mar 1 07:16 xc/.rz -rw-rw-r-- 0 jwall techies 115 Mar 1 07:16 xc/.sz -rw-rw-r-- 0 jwall techies 459 Apr 2 19:40 xc/.temp_opt -rw-rw-r-- 0 jwall techies 1290 Apr 10 02:48 xc/.uni -rw-rw-r-- 0 jwall techies 1284 Apr 15 22:26 xc/.xc -rwx--x--x 0 jwall techies 8963 Apr 15 15:49 xc/Configure -rw-r--r-- 0 jwall techies 496 Apr 10 23:57 xc/Copyright -rw-rw-r-- 0 jwall techies 283 Apr 6 21:02 xc/Makefile.orig -rw-rw---- 0 jwall techies 2408 Apr 13 22:55 xc/Makefile.in -rw-rw-r-- 0 jwall techies 14633 Apr 8 21:40 xc/README -rwxr-x--- 0 jwall techies 1648 Apr 10 17:22 xc/bsdinst.sh -rwxr-xr-x 0 jwall techies 1983 Apr 15 23:42 xc/call -rwxr-xr-x 0 jwall techies 3377 Apr 10 03:24 xc/callback -rwxr-xr-x 0 jwall techies 1688 Apr 9 16:55 xc/cisdownload -rw-rw-r-- 0 jwall techies 2569 Mar 1 07:16 xc/myman -rw-rw---- 0 jwall techies 7656 Apr 4 20:22 xc/xc.h.in -rw-rw-r-- 0 jwall techies 45748 Apr 10 23:53 xc/xc.nro -rw-rw-r-- 0 jwall techies 22741 Apr 15 19:40 xc/xcb+.c -rw-rw-r-- 0 jwall techies 907 Apr 4 18:49 xc/xcdbglog.c -rw-rw-r-- 0 jwall techies 6654 Apr 4 22:08 xc/xcdial.c -rw-rw-r-- 0 jwall techies 17102 Apr 24 18:34 xc/xcmain.c -rw-rw---- 0 jwall techies 11661 Apr 15 19:58 xc/xcport.c -rw-rw-r-- 0 jwall techies 44740 Apr 15 22:02 xc/xcscrpt.c -rw-rw-r-- 0 jwall techies 7220 Apr 24 17:00 xc/xcsubs.c -rw-rw-r-- 0 jwall techies 5307 Apr 24 17:26 xc/xcterm.c -rw-rw-r-- 0 jwall techies 10798 Apr 15 22:04 xc/xcxmdm.c -rw-rw-r-- 0 jwall techies 8020 Apr 27 10:22 xc/xc.h -rw-rw-r-- 0 jwall techies 0 Apr 15 15:58 xc/Makefile.xc -rw-rw---- 0 jwall techies 2320 Apr 24 18:36 xc/Makefile End