ftp.nice.ch/pub/next/unix/communication/xc.s.tar.gz#/xc

Configure
 
Copyright
 
Makefile
 
Makefile.in
 
Makefile.xc
 
README
 
README.next
 
bsdinst.sh
[View bsdinst.sh] 
call
 
callback
 
cisdownload
 
configure.out
 
myman
 
xc.h
[View xc.h] 
xc.h.in
 
xc.nro
 
xcb+.c
[View xcb+.c] 
xcdbglog.c
[View xcdbglog.c] 
xcdial.c
[View xcdial.c] 
xcfront
 
xcmain.c
[View xcmain.c] 
xcport.c
[View xcport.c] 
xcscrpt.c
[View xcscrpt.c] 
xcsubs.c
[View xcsubs.c] 
xcterm.c
[View xcterm.c] 
xcxmdm.c
[View xcxmdm.c] 

README

@(#) XC README, patchlevel 4.3 JPRadley 11 September 1993
This file (and almost every other one in the distribution) uses 4-character
tabstops.
The supplied .exrc file sets ts=4 and sw=4, for vi's purposes.


    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" will 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.3 Radley 11 Sep 1993
    Redid all time routines
    Increased B+ internal buffers to use 2K packets
    Added Debug section to man page

Version 4.2 Radley 30 Aug 1993
    Reverted to 7e|7o|8n
    Read the environment for LINES and COLUMNS (clue from Stockler)
    Took out half-duplex stuff
    Added chdir capability
    Test for return type of signal() in Configure

Version 4.1 Gensch & Radley 10 Apr 1993
    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 <ENQ> 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 <setjmp.h> 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 <sgtty> references to <termio> (modified ioctl(2) calls)
    Changed terminal mode function keys to <ESC> 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

README.next

	B A C K G R O U N D

This is xc for NeXTStep 3.2, a rather dirty port of the Unix communication 
program xc to the NeXT operating system. Nevertheless it works. I have 
tested it personally on "black" (Motorola) and "white" (Intel) hardware, if 
someone succeeds to compile it under HP-PA or SPARC I would like to hear 
from you. 

If you have general questions or suggestions concerning xc you should 
direct them to Jean-Pierre Radley, the xc custodian. His E-Mail-address is 
jpr@jpr.com. If you have questions that are specific to NeXTStep send them 
directly to me since Jean-Pierre Radley does not currently support this 
version.

My "signature" is:

       Wolfgang Ambrosch    |   ambrosch@ping.at
       Jaegerhausgasse 16   |   Fax  : +43 2252 47 690
       A-2500 Baden         |   Phone: +43 2252 46 817
       Austria              |   NeXT-Mail and MIME welcome  

If you want to obtain the most recent version of xc for other Unix-systems 
you should look on the following ftp-servers:

	ftp.celestial.com
	ftp.sco.com



	I N S T A L L A T I O N
	
To install xc for NeXTStep simply type "make". Don't run "Configure" since 
it will destroy the NeXTStep-specific Makefile with some wrong guesses. 
After you have the binary you can follow the directions given in the README 
file.

Good luck!

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.