v16i007: Modem communications package, Part03/08

Rich Salz rsalz at uunet.uu.net
Wed Sep 14 02:41:01 AEST 1988


Submitted-by: Emmet P Gray <fthood!egray>
Posting-number: Volume 16, Issue 7
Archive-name: pcomm2/part03

#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create:
#	Readme
#	Release.notes
#	Makefile
#	Pcomm.1
#	Pcomm.dial_dir
#	Pcomm.modem
#	Pcomm.param
#	Unixpc.shar
#	config.h
#	dial_dir.h
#	misc.h
#	modem.h
#	param.h
#	status.h
#	vcs.h
#	xmodem.h
export PATH; PATH=/bin:/usr/bin:$PATH
echo shar: "extracting 'Readme'" '(6391 characters)'
if test -f 'Readme'
then
	echo shar: "will not over-write existing file 'Readme'"
else
sed 's/^X//' << \SHAR_EOF > 'Readme'
X
X				  Pcomm
X		      A Unix Telecommunication Program
X
XThings to do first:
X
X	1) Figure out what files you need to extract.  There is a shell
X	archive called "Unixpc.shar" that contains additional (and
X	replacement) files for users of the AT&T Unix PC 7300/3b1.
X
X	2) Create a default directory where the Pcomm support files will
X	go.  A good location might be /usr/local/lib/pcomm.
X
X	3) Copy the sample support files Pcomm.dial_dir, Pcomm.modem,
X	and Pcomm.param to the default directory and rename them to
X	change the uppercase "P" to a lower case "p".  The files should
X	*not* have write permission to all.
X
X	4) Copy (and rename as appropriate) the Pcomm.1 nroff manual to
X	the proper /usr/man directory.
X
X	5) Print the Doc file by piping the output of the Unix "pr"
X	command with the title separated by lots of white space (to help
X	center it), for example:
X
X	pr -h "           Pcomm Reference Manual            " Doc | lp
X
XHow to configure Pcomm:
X
X	1) Edit the "config.h" file to suit your system's needs and your
X	personal taste.  Sites running HoneyDanBer (HDB) UUCP should pay
X	particular attention to the LOCK_DIR, ASCII_PID, and SETUGID
X	definitions.  The definitions in config.h are:
X
X	UNIXPC		If defined, use the dial(3) routines specific
X			to the AT&T Unix PC 7300/3b1.  Useful only if
X			the On Board Modem (OBM) is to be used.
X
X	OLDCURSES	If defined, use the older version of curses(3).
X			(uses termcap in lieu of terminfo).  Some
X			versions of the AT&T Unix PC 7300/3b1 may
X			require this.
X
X	SHAREDMEM	If defined, keeps the virtual screen area in
X			shared memory rather than in a file.  Some
X			performance gains are realized if shared memory
X			is used.
X
X	NOPROMOTE	If defined, do not promote missing video
X			attributes to standout.  Normally, curses(3)
X			attempts to compensate for missing attributes.
X
X	SETUGID		If defined, extra precautions are taken before
X			opening files or doing a shell escape to restore
X			the real UID/GID.  Useful if Pcomm is installed
X			as a set-user-id or get-group-id program.  HDB
X			programs often are set-user-id to uucp.
X
X	LOG_CALLS	If defined, Pcomm will keep an administrative log
X			of all calls.  The log contains the name of the
X			person making the call, the phone number, and a
X			date/time stamp.  Useful for verifying long
X			distance phone bills.
X
X	LOGFILE		The path to the log file (if LOG_CALLS is
X			defined).  It should have write permission to
X			all or be writeable under set-user/group-id
X			conditions.
X
X	LIMIT_LD	If defined, Pcomm will limit long distance
X			(toll) calls to a privileged group.  The file
X			"admin.c" may require tweeking to detect what is
X			a long distance number.
X
X	GROUP_NAME	The name of the group that is allowed to make
X			long distance calls (if LIMIT_LD is defined).
X
X	LPR		The path to the line printer program (this is
X			not the name of the device).
X
X	LPRINT		The path to the "pretty" line printer program.
X			Typically a program that performs a "pr | lp"
X			function.  If none exist, use the same as LPR.
X
X	DEFAULT_DIR	The path to the directory that contains the
X			default Pcomm support files.
X
X	LOCK_DIR	The path to the directory where the UUCP lock
X			files are found.  On HDB systems this would
X			typically be /usr/spool/locks.
X
X	ASCII_PID	If defined, the lock files will contain an ASCII
X			encoded process id (PID).  On HDB systems this
X			is the default.
X
X	KEEP_PORT	If defined, the port will be kept open between
X			dialing attempts to save time.  Some systems
X			may require the modem to be closed and reopened
X			every time.
X
X	XMC_BROKE	Does the status line scroll up when using "magic
X			cookie" terminals?  Some Pyramid and AT&T
X			systems may require this to be defined.  Find a
X			magic cookie terminal (a Wyse 50 for example),
X			and see what happens.
X
X	WGETCH_BROKE	Does the alarm() system call work correctly with
X			the wgetch() function?  Some Masscomp systems
X			will require this to be defined.  Symptom: the
X			initial screen doesn't go away by itself after 5
X			seconds.
X
X	2) Edit the Makefile.  There are provisions in the Makefile to
X	include getcwd() and getopt() routines if they are missing from
X	your system.  You may want to customize the CFLAGS, LDFLAGS, and
X	BIN assignments to suit your needs.
X
X	3) Compile pcomm and pcomm_input.  Type "make".  The Makefile
X	will attempt to install "pcomm" and "pcomm_input" into the BIN
X	directory given in the Makefile.  However, those sites running
X	HDB UUCP software may require you to change the mode of "pcomm"
X	to be set-user-id to uucp.  DO NOT CHANGE THE SET-UID/GID BITS
X	ON THE "pcomm_input" PROGRAM.
X
X	4) Update the sample modem/TTY database.  I know I'm asking the
X	impossible, but...  Read section 3 and the Appendices of the Doc
X	file first, then run Pcomm to update the modem/TTY database by
X	using the TTY Setup and the Modem Setup menues.  You will need
X	to know:
X
X		o The types and number of modems available for dial out
X		o The TTY ports attached to the modems
X		o The range of baud rates at which the modems operate
X		o How to initialize the modems to suit Pcomm's needs
X		o How to make the modems dial
X
X	During this step, you will need write permission on the support
X	files in the default directory.  RESIST THE TEMPTATION TO EDIT
X	THE SUPPORT FILES DIRECTLY.
X
XPortability considerations:
X
X	1) This program was written with AT&T System V in mind.  It
X	makes use of System V specific routines such as shared memory
X	and the ioctl() calls of termio(7).  There is currently no
X	port to Berkeley or v7 Unix.
X
X	2) Pcomm makes use of the bold, blinking and standout video
X	attributes.  My concept of "standout" and "reverse" might be
X	different than yours (I like "standout" to be a brighter version
X	of "reverse").  Check your terminfo database...
X
X	3) The "port.c" file has a place where you can include your own
X	routine to toggle the getty process on a port (if required).
X
X	4) If you compile Pcomm with LOG_CALLS defined, you'll have to
X	look at the code in "admin.c" to see if the long distance
X	detection routine is correct for your site.
X
X	5) Compilers that adhere to the draft ANSI C Standard will bark
X	at the declartions of signal(), perror(), malloc(), fread(), and
X	fwrite().
X
XEmmet P. Gray				US Army, HQ III Corps & Fort Hood
X...!uunet!uiucuxc!fthood!egray		Attn: AFZF-DE-ENV
X					Directorate of Engineering & Housing
X					Environmental Management Office
X					Fort Hood, TX 76544-5057
SHAR_EOF
if test 6391 -ne "`wc -c < 'Readme'`"
then
	echo shar: "error transmitting 'Readme'" '(should have been 6391 characters)'
fi
fi
echo shar: "extracting 'Release.notes'" '(5256 characters)'
if test -f 'Release.notes'
then
	echo shar: "will not over-write existing file 'Release.notes'"
else
sed 's/^X//' << \SHAR_EOF > 'Release.notes'
X
X			     Pcomm version 1.1
X				15 Aug 88
X
XIncompatibilities with v1.0:
X
X	I've added a few more fields to the pcomm.param and pcomm.modem
X	files.  This means that those files created under previous
X	releases will not be compatible with the v1.1 release.  It might
X	be a good idea to abandon the older files and start over with
X	the sample files in this release.
X
XThings that have changed:
X
X	An awful lot of sloppy programming on my part has now been
X	cleaned up.  This means that porting Pcomm to different versions
X	of Unix will be considerably less painful than before.
X
X	All of the tunable parameters are now in "config.h".
X
X	Pcomm now uses buffered I/O routines.  This yields higher
X	performance I/O at large baud rates.
X
X	File transfers now use high performance CRC calculations.
X
X	If a UUCP lockfile does exist, Pcomm now attempts to determine
X	if the process is still active.
X
X	An external file transfer program can be invoked from the file
X	transfer menu.
X
X	The keyboard macro feature is now supported (although it is
X	rather crude).
X
X	The virtual screen routine now understands a limited subset of
X	escape sequences.
X
X	The virtual screen can now be held in shared memory or in a file.
X
X	The input routine is now contained in a separate program called
X	pcomm_input.
X
X	You can now include a "modem break" in a dial or initialization
X	string.
X
X	A separate "initialization speed" feature was added to support
X	9600 baud modems such as the Telebit Trailblazer.  See Appendix
X	C of the Doc file for more info on the use of this feature.
X
X	I've added a transparent pass through mode to be used in a
X	communications daisy chain.
X
XKnown limitations:
X
X	Whenever Pcomm makes the transition from the terminal mode to
X	the command mode, the true screen contents are lost.  Pcomm
X	tries to keep track of what the true screen looks like in an
X	internal "virtual screen".  This means that the escape sequences
X	known to the hardware have to be emulated in the virtual screen.
X	Unfortunately, the number of escape sequences that are emulated
X	is quite small, so the representation of the true screen is
X	sometimes wrong.
X
X	For the VCS (video command sequence) emulation to work, the
X	terminfo entries on the host machine must match the entries on
X	the remote.
X
X	The disp_tty() routine in s_tty.c currently does not support a
X	NUM_TTY definition of greater than 10.
X
XFuture directions:
X
X	Continue work on the virtual screen routines.
X
X	Add dial back support.
X
X	Use shared memory to overcome the current limitation of outgoing
X	characters in the half duplex mode not appearing in the virtual
X	screen, log files, and print logs.
X
XMany thanks to the following people for bug reports and ideas for
Ximproving the code:
X
X	Andy Pitts	...{mtune,pacbell,kd4nc}!gladys!rbdc!andy
X	Chris Wiener	...ihnp4!{killer,attnssc}!crlabs!cwiener
X	David Brierley	...{sun,decuac,cbosgd,gatech,necntc,ukma}!rayssd!dhb
X	Karl Fox	...cbosgd!mstar!karl
X	Michael Young	...panda!genrad!mrst!sdti!mjy
X	Mark Mendel	...ihnp4!umn-cs!hyper!mark
X	Viet Hoang	...ihnp4!drutx!vgh
X
X--------------------------------------------------------------------------------
X
X			     Pcomm version 1.0
X				12 Mar 88
X
XIncompatibilities with the beta release:
X
X	I've added a bunch of new parameters to the pcomm.param and
X	pcomm.modem files, so the files used with the beta release won't
X	work with the v1.0 release.
X
XThings that have changed:
X
X	Pcomm will attempt to determine if the modem has synchronized at
X	a baud rate different than what is expected, and make changes to
X	the line settings as appropriate.
X
X	The quit and interrupt signals are now ignored.
X
X	All of the file transfer protocols are now functional.
X
X	The directory search order used to find the support files has
X	been changed slightly.
X
XKnown limitations:
X
X	The keyboard macro feature is not implemented at this time.
X
X	The true screen contents are lost when the "hot key" is pressed.
X	Pcomm attempts to compensate (rather poorly) by repainting a
X	virtual screen of what it thinks the true screen should look
X	like.  Escape sequences in the virtual screen image will be
X	ignored when the background is repainted.  For example, if
X	you're on a vt100 and you recieve a ^[[2J to clear the screen,
X	the screen *will* be cleared...  but when the screen is
X	repainted, it will contain the characters ^[, [, 2, J (instead
X	of performing the function).
X
X	The disp_tty() routine in s_tty.c currently does not support a
X	NUM_TTY definition of greater than 10.
X
X	For some strange reason, the first keystroke is "lost" after a
X	file transfer is complete or after starting data logging.
X
XFuture directions:
X
X	The virtual screen routines need a lot of work.  The most
X	commonly used escape sequences (known to terminfo) will be
X	processed.
X
X	I plan to have an option at compile time to have the virtual
X	screen buffer held on disk [] or in shared memory [].
X
X	The input routine is designed so it could be a standalone
X	program that gets called from Pcomm. []
X
X-------------------------------------------------------------------------------
X
XHave fun...
X
XEmmet P. Gray				US Army, HQ III Corps & Fort Hood
X...!uunet!uiucuxc!fthood!egray		Attn: AFZF-DE-ENV
X					Directorate of Engineering & Housing
X					Environmental Management Office
X					Fort Hood, TX 76544-5057
SHAR_EOF
if test 5256 -ne "`wc -c < 'Release.notes'`"
then
	echo shar: "error transmitting 'Release.notes'" '(should have been 5256 characters)'
fi
fi
echo shar: "extracting 'Makefile'" '(3691 characters)'
if test -f 'Makefile'
then
	echo shar: "will not over-write existing file 'Makefile'"
else
sed 's/^X//' << \SHAR_EOF > 'Makefile'
X#				PCOMM
X#			for generic System V Unix
X#
X# for systems without getcwd(3) or getopt(3)
X#
X#GETCWD = getcwd.o
X#GETOPT = getopt.o
X
XCFLAGS = -O
X#CURSES = -ltermlib -lcurses
XCURSES = -lcurses
XLDFLAGS = -s
XSHAR = shar -a
XBIN = /usr/local/bin
X
XPCOMM = $(GETCWD) $(GETOPT) admin.o chg_dir.o curses.o d_delete.o \
X	d_lib.o d_manual.o d_menu.o d_print.o d_prompt.o d_revise.o \
X	data_log.o di_delay.o di_win.o dial.o expand.o help.o info.o \
X	init.o line_set.o list_dir.o ls_menu.o m_lib.o macro.o main.o \
X	n_shell.o p_lib.o passthru.o pexit.o port.o redial.o s_axfer.o \
X	s_gen.o s_menu.o s_modem.o s_prompt.o s_term.o s_tty.o screen.o \
X	st_line.o strings.o terminal.o x_ascii.o x_batch.o x_extrnl.o \
X	x_menu.o x_rcv.o x_send.o x_win.o xmodem.o
X
XINPUT =	input.o vcs.o
X
Xall:	pcomm pcomm_input install
X
Xpcomm:	$(PCOMM)
X	$(CC) $(LDFLAGS) $(PCOMM) -o pcomm $(CURSES)
X
Xpcomm_input:	$(INPUT)
X	$(CC) $(LDFLAGS) $(INPUT) -o pcomm_input $(CURSES)
X	
Xinstall:
X	cp pcomm $(BIN)
X#	rm pcomm
X	cp pcomm_input $(BIN)
X#	rm pcomm_input
X
Xlint:
X	lint -p -Dlint *.c
X
Xshar:
X	cat Doc > pcomm_sh.1
X	$(SHAR) Readme Release.notes Makefile Pcomm.1 Pcomm.dial_dir \
X	Pcomm.modem Pcomm.param Unixpc.shar config.h dial_dir.h misc.h \
X	modem.h param.h status.h vcs.h xmodem.h > pcomm_sh.2
X	$(SHAR) admin.c chg_dir.c curses.c d_delete.c d_lib.c d_manual.c \
X	d_menu.c d_print.c d_prompt.c d_revise.c data_log.c di_delay.c \
X	> pcomm_sh.3
X	$(SHAR) di_win.c dial.c expand.c getcwd.c getopt.c help.c info.c \
X	init.c input.c line_set.c list_dir.c ls_menu.c > pcomm_sh.4
X	$(SHAR) m_lib.c macro.c main.c n_shell.c p_lib.c passthru.c \
X	pexit.c port.c redial.c > pcomm_sh.5
X	$(SHAR) s_axfer.c s_gen.c s_menu.c s_modem.c s_prompt.c s_term.c \
X	s_tty.c screen.c st_line.c strings.c terminal.c > pcomm_sh.6
X	$(SHAR) vcs.c x_ascii.c x_batch.c x_extrnl.c x_menu.c x_rcv.c \
X	> pcomm_sh.7
X	$(SHAR) x_send.c x_win.c xmodem.c > pcomm_sh.8
X
Xadmin.o:	config.h dial_dir.h param.h
Xchg_dir.o:	config.h misc.h
Xcurses.o:	config.h misc.h
Xd_delete.o:	config.h dial_dir.h misc.h param.h
Xd_lib.o:	dial_dir.h param.h
Xd_manual.o:	config.h misc.h dial_dir.h
Xd_menu.o:	config.h dial_dir.h misc.h param.h
Xd_print.o:	config.h dial_dir.h misc.h
Xd_prompt.o:	config.h dial_dir.h misc.h
Xd_revise.o:	config.h dial_dir.h misc.h param.h
Xdata_log.o:	config.h misc.h param.h status.h
Xdi_delay.o:	config.h misc.h param.h
Xdi_win.o:	config.h dial_dir.h misc.h modem.h param.h
Xdial.o:		config.h dial_dir.h misc.h modem.h param.h
Xexpand.o:	config.h
Xhelp.o:		config.h misc.h
Xinit.o:		config.h misc.h status.h
Xinput.o:	config.h misc.h status.h vcs.h
Xline_set.o:	dial_dir.h param.h
Xlist_dir.o:	config.h misc.h
Xls_menu.o:	config.h dial_dir.h misc.h param.h
Xm_lib.o:	modem.h
Xmacro.o:	config.h misc.h param.h
Xmain.o:		config.h dial_dir.h modem.h param.h status.h
Xn_shell.o:	config.h
Xp_lib.o:	param.h
Xpassthru.o:	config.h misc.h
Xpexit.o:	config.h dial_dir.h misc.h param.h status.h
Xport.o:		config.h dial_dir.h modem.h
Xredial.o:	config.h dial_dir.h misc.h
Xs_axfer.o:	config.h misc.h param.h
Xs_gen.o:	config.h misc.h param.h
Xs_menu.o:	config.h misc.h
Xs_modem.o:	config.h misc.h modem.h
Xs_prompt.o:	config.h misc.h
Xs_term.o:	config.h misc.h param.h status.h
Xs_tty.o:	config.h misc.h modem.h
Xscreen.o:	config.h param.h status.h
Xst_line.o:	config.h dial_dir.h misc.h modem.h param.h status.h
Xterminal.o:	config.h dial_dir.h misc.h modem.h param.h status.h
Xvcs.o:		config.h vcs.h
Xx_ascii.o:	config.h misc.h param.h
Xx_batch.o:	config.h misc.h xmodem.h
Xx_extrnl.o:	config.h
Xx_menu.o:	config.h misc.h xmodem.h
Xx_rcv.o:	config.h dial_dir.h misc.h xmodem.h
Xx_send.o:	config.h dial_dir.h misc.h xmodem.h
Xx_win.o:	config.h dial_dir.h misc.h xmodem.h
Xxmodem.o:	config.h misc.h param.h xmodem.h
SHAR_EOF
if test 3691 -ne "`wc -c < 'Makefile'`"
then
	echo shar: "error transmitting 'Makefile'" '(should have been 3691 characters)'
fi
fi
echo shar: "extracting 'Pcomm.1'" '(7955 characters)'
if test -f 'Pcomm.1'
then
	echo shar: "will not over-write existing file 'Pcomm.1'"
else
sed 's/^X//' << \SHAR_EOF > 'Pcomm.1'
X.TH PCOMM 1 local
X.SH NAME
Xpcomm \- a telecommunication program
X.SH SYNOPSIS
X.B pcomm
X[
X.B -d
Xdirectory ] [
X.B -f
Xindex ]
X.SH DESCRIPTION
X.I Pcomm
Xis a public domain telecommunication program for Unix that is designed
Xto operate similar to the MSDOS program, ProComm.  ProComm (TM) is
Xcopyrighted by Datastorm Technologies, Inc.
X.PP
XThe "-d" option is used to specify an additional path to search for the
XPcomm support files.
X.PP
XThe "-f" option is used to specify automatic dialing of an entry in the
Xdialing directory.  The "index" field in the dialing directory is
Xchecked against the string given on the command line.  If a match is
Xfound, that entry is automatically dialed.
X.PP
XWhenever
X.I Pcomm
Xis in the command mode, a status line is displayed at the bottom of the
Xscreen.  The eight fields of the status line are:
X.PP
X.RS 5
X.nf
X+o help screen command (or a temporary message)
X+o name of the tty device in use
X+o duplex mode (FDX = full duplex, HDX = half duplex)
X+o current line settings
X+o status of data logging option
X+o status of printer logging option
X+o incoming CR translation
X+o outgoing CR translation
X.fi
X.RE
X.SH COMMANDS
XThe following commands are accessible by pressing a user definable "hot
Xkey" followed by a letter, number, or arrow key.  The default "hot key"
Xis control-A.  The notatation "^A-X" means control-A followed by the
Xletter X.  The dash (-) is for clarity, and is not a part of the command
Xsequence.
X.TP
X.B ^A-0
XHelp Screen.  Display a brief review of the available commands.  Uses
Xthe number zero "0" not the letter "O".
X.TP
X.B ^A-D
XDialing Directory.  The dialing directory screen is used to display and
Xmaintain the database of phone number entries, and to select an entry
Xfor dialing.  To select an entry to dial, just enter the entry number at
Xthe prompt.  The following commands are available from the dialing
Xdirectory:
X.RS 5
X.TP
X.B R
XRevise (or add) a dialing directory entry or a long distance dialing
Xcode.
X.TP
X.B P
XPrint (display) the long distance dialing codes.
X.TP
X.B up/down
XScroll the dialing directory up or down 10 lines.  Uses the up and down
Xarrow keys.
X.TP
X.B M
XManual dial.  Prompts for a phone number rather than using a number
Xalready in the dialing directory.
X.TP
X.B D
XDelete an entry or a range of entries.
X.TP
X.B L
XPrint.  Send the dialing directory to the printer or a file of your
Xchoice.
X.RE
X.TP
X.B ^A-R
XAutomatic redial of selected dialing directory entries.  Prompts the
Xuser for a list of directory entries to be placed in the queue.
X.I Pcomm
Xwill dial the numbers in a cycle until one of them answers.
X.TP
X.B ^A-M
XAllows the user to maintain a list of keyboard macros assigned to the
Xshifted number keys.  When pressed, the string assigned to that key is
Xsent to the remote system.
X.TP
X.B ^A-P
XAdjust the current communication line settings.  Display a menu of baud
Xrate, parity, data bit, and stop bit choices.  Allows the new choice to
Xbe saved and become the default.  After dialing a remote, the line
Xsettings in the dialing directory entry are automatically used.  The
Xcurrent line settings are shown in the status line.
X.TP
X.B ^A-X
XExit from
X.I Pcomm.
X.TP
X.B ^A-4
XSpawn a Unix shell while still communicating with the remote system.
XUses the "native" shell as described in the SHELL environmental
Xvariable.
X.TP
X.B ^A-I
XDisplay the program information screen.
X.TP
X.B ^A-S
XDisplay a choice of setup screens.  The following sub-menus are
Xavailable:
X.RS 5
X.TP
X.B 1
XTTY Setup.  This setup assigns the tty ports that
X.I Pcomm
Xis allowed to use, and what is attached to each port.
X.TP
X.B 2
XModem Setup.  The modem setup contains the commands to make the modem
Xdial, hang up the phone, etc.
X.TP
X.B 3
XTerminal Setup.  The terminal setup contains the definition of the "hot
Xkey" and the mapping of the end-of-line characters.
X.TP
X.B 4
XGeneral Setup.  The general setup contains the default log file name,
Xand the set of character synonyms.
X.TP
X.B 5
XASCII Transfer Setup.  This setup screen contains additional character
Xtranslations allowed during ASCII file transfers.
X.TP
X.B S
XSave the changes to disk.
X.RE
X.TP
X.B ^A-B
XChange the current working directory.
X.TP
X.B ^A-C
XClear the local screen and home the cursor.
X.TP
X.B ^A-E
XToggle the duplex mode from full to half, or from half to full.  The
Xstatus line shows the current duplex mode.
X.TP
X.B ^A-H
XHang up the phone.  Disconnect the phone, but remain in
X.I Pcomm.
X.TP
X.B ^A-L
XToggle the printer on and off.  Since the printer is accessed through
Xthe normal Unix spool program, the output is not sent to the printer
Xuntil
X.B after
Xthis feature is turned off.
X.TP
X.B ^A-3
XToggle the incoming line termination characters between the carriage
Xreturn and the carriage return line feed pair.  This affects the
Xterminal session only, not the file transfers.  The current settings are
Xshown in the status line.
X.TP
X.B ^A-7
XSend a modem break.  This is
X.B not
Xthe same as the break key on the keyboard.
X.TP
X.B ^A-up
XDisplay a menu of file transfer protocols to be used to send files to a
Xremote system.  Uses the up arrow key.
X.TP
X.B ^A-down
XDisplay file transfer protocols to be used to receive files from a
Xremote system.  Uses the down arrow key.
X.TP
X.B ^A-F
XDisplay the contents of a Unix directory.
X.TP
X.B ^A-G
XDump the contents of the screen to a specified file.  Special graphics
Xcharacters may not be represented accurately in the file.
X.TP
X.B ^A-1
XBegin data logging.  Prompts the user for the name of the file that will
Xbe used to collect a complete record of the terminal session.
X.TP
X.B ^A-2
XToggle the data logging option without prompting for a new file name.
XThe status line shows the current data logging mode.
X.SH FILE TRANSFERS
X.I Pcomm
Xunderstands the following file transfer protocols:
X.PP
X.RS 5
X.nf
Xprotocol        packet          error           multiple
Xname            size            method          files?
X---------       --------        ------------    --------
Xxmodem          128             checksum/CRC    no
Xxmodem-1k       128/1024        checksum/CRC    no
Xmodem7          128             checksum        yes
Xymodem          128/1024        CRC             yes
Xymodem-g        128/1024        none            yes
XASCII           none            none            no
X.fi
X.RE
X.PP
XIn addition,
X.I Pcomm
Xcan use an external program, such as kermit or the sz/rz/dsz programs,
Xto transfer files.
X.PP
X.SH CONFIGURATION
X.I Pcomm
Xmust have access to the terminfo or termcap data for the terminal being
Xused.  The minimum capabilities include a screen size of at least 80
Xcolumns by 24 lines and cursor movement capabilities.  Running
X.I Pcomm
Xfrom terminals at relatively slow speeds (i.e.: 1200 baud) will cause
Xthe windows to appear sluggish.
X.PP
XTerminals that don't have arrow keys or systems without the newer
Xversions of curses(3) will require the user to substitute the letter "U"
Xfor "up arrow" and "N" for "down arrow".
X.PP
XThere are three Pcomm support files that contain the default parameters,
Xthe modem/tty database, and dialing directory entries.  Users may
Xmaintain private versions of these files in a directory of their choice.
X.I Pcomm
Xuses the environmental variable PCOMM to search for these "private"
Xversions.  The following directories are searched to find the support
Xfiles:
X.PP
X.RS 5
X.nf
X+o directory given with the "-d" option
X+o directory in the PCOMM environmental variable
X+o current directory
X+o default directory (compiled into Pcomm)
X.fi
X.RE
X.PP
XThe "index" field in the dialing directory serves two purposes.  The
Xfirst use is to act as a short cut into the dialing directory with
Xthe "-f" command line option.  The second use is to specify a tty name
Xfor a given entry.  If the "index" is a valid device name, that device
Xis used instead of searching the tty database for a free port.
X.SH FILES
X.nf
Xpcomm.dial_dir	the dialing directory
Xpcomm.modem	the modem/tty database
Xpcomm.param	the start-up default parameters
X.fi
X.SH SEE ALSO
XPcomm Reference Manual, xmodem(1), mdm(1)
echo shar: "12 control characters may be missing from 'Pcomm.1'"
SHAR_EOF
if test 7955 -ne "`wc -c < 'Pcomm.1'`"
then
	echo shar: "error transmitting 'Pcomm.1'" '(should have been 7955 characters)'
fi
fi
echo shar: "extracting 'Pcomm.dial_dir'" '(320 characters)'
if test -f 'Pcomm.dial_dir'
then
	echo shar: "will not over-write existing file 'Pcomm.dial_dir'"
else
sed 's/^X//' << \SHAR_EOF > 'Pcomm.dial_dir'
XDIR_1=Abbey Road;1 (512) 590-6036;2400-N-8-1;F;
XDIR_2=Tel-Med-Com;555-8686;9600-E-7-1;F;
XDIR_3=C Board;1 (619) 722-8724;2400-N-8-1;F;
XDIR_4=Crest;1 (213) 471-2518;2400-N-8-1;F;crest
XDIR_5=Last Chance;1 (219) 762-8411;2400-E-7-1;F;
XDIR_6=Killer;1 (214) 827-1994;1200-E-7-1;F;
XDIR_7=System A (direct);;19200-E-7-1;F;tty12
SHAR_EOF
if test 320 -ne "`wc -c < 'Pcomm.dial_dir'`"
then
	echo shar: "error transmitting 'Pcomm.dial_dir'" '(should have been 320 characters)'
fi
fi
echo shar: "extracting 'Pcomm.modem'" '(598 characters)'
if test -f 'Pcomm.modem'
then
	echo shar: "will not over-write existing file 'Pcomm.modem'"
else
sed 's/^X//' << \SHAR_EOF > 'Pcomm.modem'
XTTY_1=tty10;HAYES;0
XTTY_2=tty11;HAYES;0
XTTY_3=tty12;DIRECT;0
XTTY_4=tty13;TELEBIT;0
XTTY_5=tty13;FAST_TELEBIT;0
XMODEM_1a=HAYES;ATS7=45S11=70E0Q0V1X4&D2!;ATDT;!;~~+++~~ATH0!
XMODEM_1b=Y;CONNECT!;CONNECT 1200;CONNECT 2400;;;
XMODEM_1c=BUSY;VOICE;NO CARRIER;
XMODEM_2a=DIRECT;;;;
XMODEM_2b=N;;;;;;
XMODEM_2c=;;;
XMODEM_3a=TELEBIT;%AAAAAATS50=0S2=43S95=0M1!;%AAAAAATDTW;!;~~+++~~ATH0!
XMODEM_3b=Y;CONNECT 300;CONNECT 1200;CONNECT 2400;;;
XMODEM_3c=BUSY;ERROR;NO CARRIER;
XMODEM_4a=FAST_TELEBIT;%AAAAAATS50=255S2=43S95=0M1!;%AAAAAATDTW;!;~~+++~~ATH0!
XMODEM_4b=N;;;;;CONNECT;CONNECT
XMODEM_4c=BUSY;ERROR;NO CARRIER;
SHAR_EOF
if test 598 -ne "`wc -c < 'Pcomm.modem'`"
then
	echo shar: "error transmitting 'Pcomm.modem'" '(should have been 598 characters)'
fi
fi
echo shar: "extracting 'Pcomm.param'" '(453 characters)'
if test -f 'Pcomm.param'
then
	echo shar: "will not over-write existing file 'Pcomm.param'"
else
sed 's/^X//' << \SHAR_EOF > 'Pcomm.param'
XD_BAUD=1200
XD_PARITY=E
XD_DBITS=7
XD_SBITS=1
XHOT=1
XASCII_HOT=^A
XD_DUPLEX=FULL
XFLOW=XON/XOFF
XCR_IN=CR
XCR_OUT=CR
XLOGFILE=pcomm.log
XDUMPFILE=pcomm.dump
XSTRIP=YES
XPAUSE_CHAR=~
XCR_CHAR=!
XCTRL_CHAR=^
XESC_CHAR=|
XBRK_CHAR=%
XABORT=KEEP
XC_DELAY=35
XR_DELAY=5
XLECHO=NO
XEXPAND=NO
XCR_DELAY=0
XPACE=NO
XCR_UP=NONE
XLF_UP=ADD CR
XTIMER=5
XCR_DN=STRIP
XLF_DN=NONE
XLD_PLUS=
XLD_MINUS=
XLD_AT=8,
XLD_POUND=9
XMAC_1=hello
XMAC_2=
XMAC_3=
XMAC_4=
XMAC_5=
XMAC_6=
XMAC_7=
XMAC_8=
XMAC_9=
XMAC_0=
SHAR_EOF
if test 453 -ne "`wc -c < 'Pcomm.param'`"
then
	echo shar: "error transmitting 'Pcomm.param'" '(should have been 453 characters)'
fi
fi
echo shar: "extracting 'Unixpc.shar'" '(12194 characters)'
if test -f 'Unixpc.shar'
then
	echo shar: "will not over-write existing file 'Unixpc.shar'"
else
sed 's/^X//' << \SHAR_EOF > 'Unixpc.shar'
X#! /bin/sh
X# This is a shell archive, meaning:
X# 1. Remove everything above the #! /bin/sh line.
X# 2. Save the resulting text in a file.
X# 3. Execute the file with /bin/sh (not csh) to create:
X#	Ifile.sh
X#	Makefile
X#	Pcomm.modem
X#	Readme.7300
X#	config.h
X# This archive created: Sat Aug 20 12:40:17 1988
Xexport PATH; PATH=/bin:/usr/bin:$PATH
Xecho shar: "extracting 'Ifile.sh'" '(705 characters)'
Xif test -f 'Ifile.sh'
Xthen
X	echo shar: "will not over-write existing file 'Ifile.sh'"
Xelse
Xsed 's/^X//' << \SHAR_EOF > 'Ifile.sh'
XXex - $1 << EOF
XX1,\$s/^PC/xPC/
XX1,\$s/^BC/xBC/
XX1,\$s/^UP/xUP/
XX1,\$s/^ospeed/xospeed/
XX1,\$s/^LINES/xLINES/
XX1,\$s/^COLS/xCOLS/
XX1,\$s/^tgetflag/xtgetflag/
XX1,\$s/^tgetent/xtgetent/
XX1,\$s/^tgetstr/xtgetstr/
XX1,\$s/^tgetnum/xtgetnum/
XX1,\$s/^tgoto/xtgoto/
XX1,\$s/^tputs/xtputs/
XX1,\$s/^wrefresh/xwrefresh/
XX1,\$s/^initscr/xinitscr/
XX1,\$s/^cbreak/xcbreak/
XX1,\$s/^nl/xnl/
XX1,\$s/^flushinp/xflushinp/
XX1,\$s/^noecho/xnoecho/
XX1,\$s/^savetty/xsavetty/
XX1,\$s/^resetty/xresetty/
XX1,\$s/^echo/xecho/
XX1,\$s/^nocbreak/xnocbreak/
XX1,\$s/^nonl/xnonl/
XX1,\$s/^keypad/xkeypad/
XX1,\$s/^endwin/xendwin/
XX1,\$s/^printw/xprintw/
XX1,\$s/^fixterm/xfixterm/
XX1,\$s/^resetterm/xresetterm/
XX1,\$s/^setterm/xsetterm/
XX1,\$s/^baudrate/xbaudrate/
XXw
XXq
XXEOF
XSHAR_EOF
Xif test 705 -ne "`wc -c < 'Ifile.sh'`"
Xthen
X	echo shar: "error transmitting 'Ifile.sh'" '(should have been 705 characters)'
Xfi
Xfi
Xecho shar: "extracting 'Makefile'" '(3891 characters)'
Xif test -f 'Makefile'
Xthen
X	echo shar: "will not over-write existing file 'Makefile'"
Xelse
Xsed 's/^X//' << \SHAR_EOF > 'Makefile'
XX#				Pcomm
XX#			for AT&T Unix PC 7300/3b1
XX#
XX
XXCFLAGS = -O
XX#CURSES = -lcurses -ltermcap
XXCURSES = -lcurses
XXLD = ld -s
XXSHAR = shar -a
XXBIN = /usr/local/bin
XX
XXSHAREDLIB = shlib_c.ifile
XX
XXPCOMM = admin.o chg_dir.o curses.o d_delete.o d_lib.o d_manual.o \
XX	d_menu.o d_print.o d_prompt.o d_revise.o data_log.o di_delay.o \
XX	di_win.o dial.o expand.o help.o info.o init.o line_set.o \
XX	list_dir.o ls_menu.o m_lib.o macro.o main.o n_shell.o p_lib.o \
XX	passthru.o pexit.o port.o redial.o s_axfer.o s_gen.o s_menu.o \
XX	s_modem.o s_prompt.o s_term.o s_tty.o screen.o st_line.o \
XX	strings.o terminal.o x_ascii.o x_batch.o x_extrnl.o x_menu.o \
XX	x_rcv.o x_send.o x_win.o xmodem.o
XX
XXINPUT =	input.o vcs.o
XX
XXOTHERS = setvbuf.o doprnt.o
XX
XXall:	pcomm pcomm_input install
XX
XXpcomm:	$(PCOMM) $(OTHERS) $(SHAREDLIB)
XX	$(LD) $(PCOMM) $(OTHERS) $(CURSES) /lib/crt0s.o $(SHAREDLIB) -o pcomm
XX
XXpcomm_input:	$(INPUT) $(OTHERS) $(SHAREDLIB)
XX	$(LD) $(INPUT) $(OTHERS) $(CURSES) /lib/crt0s.o $(SHAREDLIB) -o pcomm_input
XX
XXsetvbuf.o:
XX	ar x /lib/libc.a setvbuf.o
XX
XXdoprnt.o:
XX	ar x /lib/libc.a doprnt.o
XX
XXshlib_c.ifile:
XX	cp /lib/shlib.ifile shlib_c.ifile
XX	sh Ifile.sh shlib_c.ifile
XX
XXinstall:
XX	cp pcomm $(BIN)
XX#	rm pcomm
XX	cp pcomm_input $(BIN)
XX#	rm pcomm_input
XX
XXlint:
XX	lint -p -Dlint *.c
XX
XXshar:
XX	cat Doc > pcomm_sh.1
XX	$(SHAR) Readme Release.notes Makefile Pcomm.1 Pcomm.dial_dir \
XX	Pcomm.modem Pcomm.param Unixpc.shar config.h dial_dir.h misc.h \
XX	modem.h param.h status.h vcs.h xmodem.h > pcomm_sh.2
XX	$(SHAR) admin.c chg_dir.c curses.c d_delete.c d_lib.c d_manual.c \
XX	d_menu.c d_print.c d_prompt.c d_revise.c data_log.c di_delay.c \
XX	> pcomm_sh.3
XX	$(SHAR) di_win.c dial.c expand.c getcwd.c getopt.c help.c info.c \
XX	init.c input.c line_set.c list_dir.c ls_menu.c > pcomm_sh.4
XX	$(SHAR) m_lib.c macro.c main.c n_shell.c p_lib.c passthru.c \
XX	pexit.c port.c redial.c > pcomm_sh.5
XX	$(SHAR) s_axfer.c s_gen.c s_menu.c s_modem.c s_prompt.c s_term.c \
XX	s_tty.c screen.c st_line.c strings.c terminal.c > pcomm_sh.6
XX	$(SHAR) vcs.c x_ascii.c x_batch.c x_extrnl.c x_menu.c x_rcv.c \
XX	> pcomm_sh.7
XX	$(SHAR) x_send.c x_win.c xmodem.c > pcomm_sh.8
XX
XXadmin.o:	config.h dial_dir.h param.h
XXchg_dir.o:	config.h misc.h
XXcurses.o:	config.h misc.h
XXd_delete.o:	config.h dial_dir.h misc.h param.h
XXd_lib.o:	dial_dir.h param.h
XXd_manual.o:	config.h misc.h dial_dir.h
XXd_menu.o:	config.h dial_dir.h misc.h param.h
XXd_print.o:	config.h dial_dir.h misc.h
XXd_prompt.o:	config.h dial_dir.h misc.h
XXd_revise.o:	config.h dial_dir.h misc.h param.h
XXdata_log.o:	config.h misc.h param.h status.h
XXdi_delay.o:	config.h misc.h param.h
XXdi_win.o:	config.h dial_dir.h misc.h modem.h param.h
XXdial.o:		config.h dial_dir.h misc.h modem.h param.h
XXexpand.o:	config.h
XXhelp.o:		config.h misc.h
XXinit.o:		config.h misc.h status.h
XXinput.o:	config.h misc.h status.h vcs.h
XXline_set.o:	dial_dir.h param.h
XXlist_dir.o:	config.h misc.h
XXls_menu.o:	config.h dial_dir.h misc.h param.h
XXm_lib.o:	modem.h
XXmacro.o:	config.h misc.h param.h
XXmain.o:		config.h dial_dir.h modem.h param.h status.h
XXn_shell.o:	config.h
XXp_lib.o:	param.h
XXpassthru.o:	config.h misc.h
XXpexit.o:	config.h dial_dir.h misc.h param.h status.h
XXport.o:		config.h dial_dir.h modem.h
XXredial.o:	config.h dial_dir.h misc.h
XXs_axfer.o:	config.h misc.h param.h
XXs_gen.o:	config.h misc.h param.h
XXs_menu.o:	config.h misc.h
XXs_modem.o:	config.h misc.h modem.h
XXs_prompt.o:	config.h misc.h
XXs_term.o:	config.h misc.h param.h status.h
XXs_tty.o:	config.h misc.h modem.h
XXscreen.o:	config.h param.h status.h
XXst_line.o:	config.h dial_dir.h misc.h modem.h param.h status.h
XXterminal.o:	config.h dial_dir.h misc.h modem.h param.h status.h
XXvcs.o:		config.h vcs.h
XXx_ascii.o:	config.h misc.h param.h
XXx_batch.o:	config.h misc.h xmodem.h
XXx_extrnl.o:	config.h
XXx_menu.o:	config.h misc.h xmodem.h
XXx_rcv.o:	config.h dial_dir.h misc.h xmodem.h
XXx_send.o:	config.h dial_dir.h misc.h xmodem.h
XXx_win.o:	config.h dial_dir.h misc.h xmodem.h
XXxmodem.o:	config.h misc.h param.h xmodem.h
XSHAR_EOF
Xif test 3891 -ne "`wc -c < 'Makefile'`"
Xthen
X	echo shar: "error transmitting 'Makefile'" '(should have been 3891 characters)'
Xfi
Xfi
Xecho shar: "extracting 'Pcomm.modem'" '(151 characters)'
Xif test -f 'Pcomm.modem'
Xthen
X	echo shar: "will not over-write existing file 'Pcomm.modem'"
Xelse
Xsed 's/^X//' << \SHAR_EOF > 'Pcomm.modem'
XXTTY_1=ph1;OBM;0
XXTTY_2=tty000;DIRECT;0
XXMODEM_1a=OBM;;%;@;
XXMODEM_1b=N;CONNECT;CONNECT;;;;
XXMODEM_1c=;;;
XXMODEM_2a=DIRECT;;;;
XXMODEM_2b=N;;;;;;
XXMODEM_2c=;;;
XSHAR_EOF
Xif test 151 -ne "`wc -c < 'Pcomm.modem'`"
Xthen
X	echo shar: "error transmitting 'Pcomm.modem'" '(should have been 151 characters)'
Xfi
Xfi
Xecho shar: "extracting 'Readme.7300'" '(3530 characters)'
Xif test -f 'Readme.7300'
Xthen
X	echo shar: "will not over-write existing file 'Readme.7300'"
Xelse
Xsed 's/^X//' << \SHAR_EOF > 'Readme.7300'
XX				  Pcomm v1.1
XX			 Additional Notes for users of
XX			     AT&T Unix PC 7300/3b1
XX
XX	1) The shared libraries on your system contain Terminal Access
XX	Method (TAM) routines in lieu of curses(3) routines.  However,
XX	many of the routines have the same names!  This means that
XX	curses library is not compatible with the shared library.  So,
XX	to circumvent the problem, an alternate shared library "link
XX	directive file" is needed.  The Ifile.sh file is a shell script
XX	that is run by the Makefile to create this alternate file.  The
XX	alternate file has the references to the TAM routines removed
XX	(actually, they just have an 'x' placed in the names).  The
XX	actual shared library binaries are NOT altered.  We just fool
XX	the linker into believing that the TAM routines aren't there.
XX
XX	2) Before Pcomm can be compiled, the curses library routines
XX	must be installed on your system.  The diskette labled
XX	"Curses/Terminfo Programmer's Package" is a part of the "Unix
XX	Developement Set".  Likewise, before Pcomm can be used, the
XX	terminfo database must be installed.  The diskettes labled
XX	"Curses/Terminfo End User Package" and "Terminfo Database" are
XX	a part of the "Unix Foundation Set"
XX
XX	3) If you are running Unix version 3.0 or older, you must edit
XX	the "config.h" file to change the OLDCURSES definition from
XX	"#undef" to "#define".  I understand the older version of
XX	curses(3) is very buggy.
XX
XX	4) Did you know that your system can use DEC vt100 style line
XX	drawing character?  Curses automatically uses the "alternate"
XX	character set (if found) to draw the boxes and lines rather than
XX	using the '-' and '|' characters.  To allow your system to use
XX	this feature, there are two things you must do:
XX
XX		1) Load the line drawing font in slot 1 prior to running
XX		a program requiring them.  This can be done by typing:
XX
XX			setf /usr/lib/wfont/BLD.ft 1
XX
XX		...or permanently install this font in slot 1 by adding
XX		the following two lines to the end of the /etc/rc file:
XX
XX			sfont /usr/lib/wfont/BLD.ft 1
XX			setf /usr/lib/wfont/BLD.ft 1
XX
XX		2) Tell curses(3) about the alternate character set by
XX		editing the terminfo database.
XX
XX		To get a copy of the terminfo entry to play with,
XX		you type:
XX
XX			infocmp -I s4 > s4.ti
XX
XX		now add the following line (with a leading tab) to the
XX		's4.ti' file:
XX
XX			acsc=+h\,g.e-fjjkkllmmnnqqttuuvvwwxx,
XX
XX		recompile the new entry:
XX
XX			tic s4.ti
XX
XX	5) The "tset" command is broken on every version of Unix this
XX	box has ever seen (it is commented out of /etc/profile for a
XX	good reason).  One of tset's functions is to send a string to
XX	initialize the settings of the terminal and to set the tab
XX	stops.  The fact that this function doesn't work is often
XX	overlooked because the console (as well as a lot of other
XX	terminals) doesn't require any initialization.  However, if you
XX	call into your system from a remote terminal that *does* require
XX	initialization, you've got trouble.
XX
XX	For example, curses(3) looks at the terminfo database to see if
XX	your terminal has "hardware tabs", if so, it expects the tab
XX	stops to be set.  Ignoring tabs by using "stty -tabs" (to
XX	convert tabs to spaces) won't work, in fact, curses(3) RESETS
XX	things as if you had typed "stty tabs"!  In this case, you must
XX	use the "tabs" command before running Pcomm.
XX
XX	Likewise, my terminfo entry for PCPLUS v1.1's emulation of a
XX	vt102 has "^[)0" in the initialization string to load the line
XX	drawing character set.  But, since tset is broken, I've got to
XX	cat a file containing the above command sequence before running
XX	Pcomm.
XSHAR_EOF
Xif test 3530 -ne "`wc -c < 'Readme.7300'`"
Xthen
X	echo shar: "error transmitting 'Readme.7300'" '(should have been 3530 characters)'
Xfi
Xfi
Xecho shar: "extracting 'config.h'" '(1584 characters)'
Xif test -f 'config.h'
Xthen
X	echo shar: "will not over-write existing file 'config.h'"
Xelse
Xsed 's/^X//' << \SHAR_EOF > 'config.h'
XX/*
XX * Various tunable parameters.  This should appear before any other local
XX * header file.
XX */
XX
XX/* Use the dialing routines specific to the AT&T Unix PC 7300/3b1 */
XX#define	UNIXPC
XX
XX/* Older versions of curses(3) use termcap in lieu of terminfo */
XX#undef	OLDCURSES
XX
XX/* Use shared memory in lieu of a file for the virtual screen */
XX#define	SHAREDMEM
XX
XX/* Should a missing video attribute be promoted to standout? */
XX#define NOPROMOTE
XX
XX/* Use extra precautions if Pcomm is set-user-id or set-group-id */
XX#undef	SETUGID
XX
XX/* Should Pcomm make a log of all phone calls? */
XX#undef	LOG_CALLS
XX
XX/* The name of the log file (if used).  */
XX#define	LOGFILE		"/usr/adm/phone.calls"
XX
XX/* Should long distance (toll) calls be limited to a specific group? */
XX#undef	LIMIT_LD
XX
XX/* The name of the privileged group for limiting long distance calls */
XX#define	GROUP_NAME	"uucp"
XX
XX/* The path to the line printer program */
XX#define	LPR		"/usr/bin/lp"
XX
XX/* The path to the "pretty" printer program (if none, use same as LPR) */
XX#define	LPRINT		"/usr/bin/lp"
XX
XX/* The path to the default directory containing the Pcomm support files */
XX#define	DEFAULT_DIR	"/usr/local/lib/pcomm"
XX
XX/* The path to the directory where UUCP locks are found */
XX#define	LOCK_DIR	"/usr/spool/uucp"
XX
XX/* Do the lock files use ASCII encoded PID's? */
XX#undef	ASCII_PID
XX
XX/* Should Pcomm optimize redialing by keeping the TTY port open */
XX#define	KEEP_PORT
XX
XX/* Does the status line scroll up on "magic cookie" terminals? */
XX#define XMC_BROKE
XX
XX/* Does the alarm() system call work correctly with the wgetch() function? */
XX#undef	WGETCH_BROKE
XSHAR_EOF
Xif test 1584 -ne "`wc -c < 'config.h'`"
Xthen
X	echo shar: "error transmitting 'config.h'" '(should have been 1584 characters)'
Xfi
Xfi
Xexit 0
X#	End of shell archive
SHAR_EOF
if test 12194 -ne "`wc -c < 'Unixpc.shar'`"
then
	echo shar: "error transmitting 'Unixpc.shar'" '(should have been 12194 characters)'
fi
fi
echo shar: "extracting 'config.h'" '(1582 characters)'
if test -f 'config.h'
then
	echo shar: "will not over-write existing file 'config.h'"
else
sed 's/^X//' << \SHAR_EOF > 'config.h'
X/*
X * Various tunable parameters.  This should appear before any other local
X * header file.
X */
X
X/* Use the dialing routines specific to the AT&T Unix PC 7300/3b1 */
X#undef	UNIXPC
X
X/* Older versions of curses(3) use termcap in lieu of terminfo */
X#undef	OLDCURSES
X
X/* Use shared memory in lieu of a file for the virtual screen */
X#define	SHAREDMEM
X
X/* Should a missing video attribute be promoted to standout? */
X#define NOPROMOTE
X
X/* Use extra precautions if Pcomm is set-user-id or set-group-id */
X#undef	SETUGID
X
X/* Should Pcomm make a log of all phone calls? */
X#undef	LOG_CALLS
X
X/* The name of the log file (if used).  */
X#define	LOGFILE		"/usr/adm/phone.calls"
X
X/* Should long distance (toll) calls be limited to a specific group? */
X#undef	LIMIT_LD
X
X/* The name of the privileged group for limiting long distance calls */
X#define	GROUP_NAME	"uucp"
X
X/* The path to the line printer program */
X#define	LPR		"/usr/bin/lp"
X
X/* The path to the "pretty" printer program (if none, use same as LPR) */
X#define	LPRINT		"/usr/bin/lp"
X
X/* The path to the default directory containing the Pcomm support files */
X#define	DEFAULT_DIR	"/usr/local/lib/pcomm"
X
X/* The path to the directory where UUCP locks are found */
X#define	LOCK_DIR	"/usr/spool/uucp"
X
X/* Do the lock files use ASCII encoded PID's? */
X#undef	ASCII_PID
X
X/* Should Pcomm optimize redialing by keeping the TTY port open */
X#define	KEEP_PORT
X
X/* Does the status line scroll up on "magic cookie" terminals? */
X#undef	XMC_BROKE
X
X/* Does the alarm() system call work correctly with the wgetch() function? */
X#undef	WGETCH_BROKE
SHAR_EOF
if test 1582 -ne "`wc -c < 'config.h'`"
then
	echo shar: "error transmitting 'config.h'" '(should have been 1582 characters)'
fi
fi
echo shar: "extracting 'dial_dir.h'" '(870 characters)'
if test -f 'dial_dir.h'
then
	echo shar: "will not over-write existing file 'dial_dir.h'"
else
sed 's/^X//' << \SHAR_EOF > 'dial_dir.h'
X/*
X * The dialing directory structure.  The first eight elements are
X * contained in the pcomm.dial_dir file.
X */
X
X#define NUM_DIR		100
X#define NUM_QUEUE	10
X
Xstruct DIAL_DIR {
X	char	*name[NUM_DIR+1];	/* name of system being called */
X	char	*number[NUM_DIR+1];	/* phone number */
X	int	baud[NUM_DIR+1];	/* baud rate */
X	char	parity[NUM_DIR+1];	/* parity */
X	int	dbits[NUM_DIR+1];	/* data bits */
X	int	sbits[NUM_DIR+1];	/* stop bits */
X	char	duplex[NUM_DIR+1];	/* duplex (F = full, H = half) */
X	char	*index[NUM_DIR+1];	/* command line index (or TTY) */
X
X	int	q_num[NUM_QUEUE];	/* entry numbers in the queue */
X	char	q_ld[NUM_QUEUE];	/* LD codes in the queue */
X
X	int	d_entries;		/* number of entries in the file */
X	int	d_cur;			/* the current entry */
X
X	char	*d_path;		/* path to the pcomm.dial_dir file */
X};
X
X#ifndef MAIN
Xextern struct DIAL_DIR *dir;
X#endif /* MAIN */
SHAR_EOF
if test 870 -ne "`wc -c < 'dial_dir.h'`"
then
	echo shar: "error transmitting 'dial_dir.h'" '(should have been 870 characters)'
fi
fi
echo shar: "extracting 'misc.h'" '(1404 characters)'
if test -f 'misc.h'
then
	echo shar: "will not over-write existing file 'misc.h'"
else
sed 's/^X//' << \SHAR_EOF > 'misc.h'
X/*
X * Definitions to support the home-grown curses(3) functions and to make
X * the old curses(3) routines happy.  ("config.h" must be included first).
X */
X
X#define mvwattrstr(w,y,x,a,s)	(wmove(w,y,x)==ERR?ERR:wattrstr(w,a,s))
X#define mvwattrch(w,y,x,a,c)	(wmove(w,y,x)==ERR?ERR:wattrch(w,a,c))
X#define mvwattrnum(w,y,x,a,n)	(wmove(w,y,x)==ERR?ERR:wattrnum(w,a,n))
X#define mvattrstr(y,x,a,s)	(wmove(stdscr,y,x)==ERR?ERR:wattrstr(stdscr,a,s))
X#define mvattrch(y,x,a,c)	(wmove(stdscr,y,x)==ERR?ERR:wattrch(stdscr,a,c))
X#define mvattrnum(y,x,a,n)	(wmove(stdscr,y,x)==ERR?ERR:wattrnum(stdscr,a,n))
X#define attrstr(a,s)		wattrstr(stdscr,a,s)
X#define attrch(a,c)		wattrch(stdscr,a,c)
X#define attrnum(a,n)		wattrnum(stdscr,a,n)
X
X#ifdef OLDCURSES
X#ifdef NOPROMOTE
X#define A_BOLD		0
X#define A_BLINK		0
X#define A_REVERSE	1
X#define A_DIM		0
X#define A_STANDOUT	1
X#define A_UNDERLINE	0
X#else /* NOPROMOTE */
X#define A_BOLD		1
X#define A_BLINK		1
X#define A_REVERSE	1
X#define A_DIM		1
X#define A_STANDOUT	1
X#define A_UNDERLINE	1
X#endif /* NOPROMOTE */
X#endif /* OLDCURSES */
X
X#ifdef OLDCURSES
Xtypedef char chtype
X#endif /* OLDCURSES */
X
X#ifdef ACS_HLINE
X#define VERT		(chtype)0
X#define HORZ		(chtype)0
X#else /* ACS_HLINE */
X#define VERT		(chtype)'|'
X#define HORZ		(chtype)'-'
X#define ACS_VLINE	(chtype)'|'
X#define ACS_HLINE	(chtype)'-'
X#endif /* ACS_HLINE */
X
X#define BEL		7
X#define BS		8
X#define ESC		27
X#define DEL		127
SHAR_EOF
if test 1404 -ne "`wc -c < 'misc.h'`"
then
	echo shar: "error transmitting 'misc.h'" '(should have been 1404 characters)'
fi
fi
echo shar: "extracting 'modem.h'" '(1538 characters)'
if test -f 'modem.h'
then
	echo shar: "will not over-write existing file 'modem.h'"
else
sed 's/^X//' << \SHAR_EOF > 'modem.h'
X/*
X * The modem and TTY databases.  The first 3 elements make up the TTY
X * database, the next 16 make up the modem database.  A "tname" in common
X * with a "mname" link the two together.
X */
X
X#define NUM_TTY		10
X#define NUM_MODEM	10
X
Xstruct MODEM {
X	char	*tty[NUM_TTY];		/* TTY names */
X	char	*tname[NUM_TTY];	/* modem name */
X	int	init_sp[NUM_TTY];	/* initialization baud rate */
X
X	char	*mname[NUM_MODEM];	/* modem name (matches tname above) */
X	char	*init[NUM_MODEM];	/* initialization */
X	char	*dial[NUM_MODEM];	/* dial command */
X	char	*suffix[NUM_MODEM];	/* dialing command suffix */
X	char	*hang_up[NUM_MODEM];	/* hang up the modem */
X	char	auto_baud[NUM_MODEM];	/* should we sync baud rates? */
X	char	*con_3[NUM_MODEM];	/* 300 baud connect message */
X	char	*con_12[NUM_MODEM];	/* 1200 baud connect message */
X	char	*con_24[NUM_MODEM];	/* 2400 baud connect message */
X	char	*con_48[NUM_MODEM];	/* 4800 baud connect message */
X	char	*con_96[NUM_MODEM];	/* 9600 baud connect message */
X	char	*con_192[NUM_MODEM];	/* 19200 baud connect message */
X	char	*no_con1[NUM_MODEM];	/* no connect #1 */
X	char	*no_con2[NUM_MODEM];	/* no connect #2 */
X	char	*no_con3[NUM_MODEM];	/* no connect #3 */
X	char	*no_con4[NUM_MODEM];	/* no connect #4 */
X
X	int	t_entries;		/* number of TTY entries */
X	int	m_entries;		/* number of modem entries */
X	int	t_cur;			/* current TTY entry number */
X	int	m_cur;			/* current modem entry number */
X
X	char	*m_path;		/* path to the pcomm.modem file */
X};
X
X#ifndef MAIN
Xextern struct MODEM *modem;
X#endif /* MAIN */
SHAR_EOF
if test 1538 -ne "`wc -c < 'modem.h'`"
then
	echo shar: "error transmitting 'modem.h'" '(should have been 1538 characters)'
fi
fi
echo shar: "extracting 'param.h'" '(2757 characters)'
if test -f 'param.h'
then
	echo shar: "will not over-write existing file 'param.h'"
else
sed 's/^X//' << \SHAR_EOF > 'param.h'
X/*
X * The standard Pcomm parameters.  Everything can be altered by using one
X * of Pcomm's menus.  Although editing by hand is not encouraged, the
X * pcomm.param file is just an ASCII file.
X */
X
X#define MAX_CDELAY	120
X#define MIN_CDELAY	10
X#define MAX_PAUSE	120
X#define MIN_PAUSE	1
X#define MAX_TIMER	20
X#define MIN_TIMER	2
X
X#define NUM_PARAM	44
X#define LINE_SET	0
X#define TERM_SETUP	4
X#define GEN_SETUP	10
X#define DELAY_TIMES	19
X#define ASCII_SETUP	21
X#define LD_CODES	30
X#define MACROS		34
X
Xstruct PARAM {
X				/* 0-3 used in ls_menu() */
X	int	d_baud;			/* default baud rate */
X	char	d_parity;		/* default parity */
X	int	d_dbits;		/* default data bits */
X	int	d_sbits;		/* default stop bits */
X
X				/* 4-9 used in term_setup() */
X	int	hot;			/* the decimal code for the hot key */
X	char	*ascii_hot;		/* ascii representation of hot key */
X	char	*d_duplex;		/* default duplex */
X	char	*flow;			/* flow control */
X	char	*cr_in;			/* send as carriage return */
X	char	*cr_out;		/* receive carriage return as */
X
X				/* 10-18 used in gen_setup() */
X	char	*logfile;		/* default log file */
X	char	*dumpfile;		/* default screen dump file */
X	char	*strip;			/* strip high bit (translate table) */
X	char	pause_char;		/* pause char synonym */
X	char	cr_char;		/* carriage return char synonym */
X	char	ctrl_char;		/* ctrl char synonym */
X	char	esc_char;		/* escape char synonym */
X	char	brk_char;		/* modem break synonym */
X	char	*abort;			/* destination of aborted downloads */
X
X				/* 19-20 used in gen_setup() & delay_times() */
X	int	c_delay;		/* connect delay time */
X	int	r_delay;		/* redial delay time */
X
X				/* 21-29 used in axfer_setup() */
X	char	*lecho;			/* echo locally? */
X	char	*expand;		/* expand blank lines? */
X	int	cr_delay;		/* carriage return delay (ms) */
X	char	*pace;			/* pace the output? */
X	char	*cr_up;			/* send carriage return as */
X	char	*lf_up;			/* send line feed as */
X	int	timer;			/* Transfer timeout */
X	char	*cr_dn;			/* receive carriage return as */
X	char	*lf_dn;			/* receive line feed as */
X
X				/* 30-33 used in d_revise() */
X	char	*ld_plus;		/* + long distance code */
X	char	*ld_minus;		/* - long distance code */
X	char	*ld_at;			/* @ long distance code */
X	char	*ld_pound;		/* # long distance code */
X
X				/* 34-43 used in macro() */
X	char	*mac_1;			/* shifted 1 macro */
X	char	*mac_2;			/* shifted 2 macro */
X	char	*mac_3;			/* shifted 3 macro */
X	char	*mac_4;			/* shifted 4 macro */
X	char	*mac_5;			/* shifted 5 macro */
X	char	*mac_6;			/* shifted 6 macro */
X	char	*mac_7;			/* shifted 7 macro */
X	char	*mac_8;			/* shifted 8 macro */
X	char	*mac_9;			/* shifted 9 macro */
X	char	*mac_0;			/* shifted 0 macro */
X
X	char	*p_path;		/* path to the pcomm.param file */
X};
X
X#ifndef MAIN
Xextern struct PARAM *param;
X#endif /* MAIN */
SHAR_EOF
if test 2757 -ne "`wc -c < 'param.h'`"
then
	echo shar: "error transmitting 'param.h'" '(should have been 2757 characters)'
fi
fi
echo shar: "extracting 'status.h'" '(767 characters)'
if test -f 'status.h'
then
	echo shar: "will not over-write existing file 'status.h'"
else
sed 's/^X//' << \SHAR_EOF > 'status.h'
X/*
X * The status flags, and other various changeable things.  Obviously
X * the "config.h" file must appear before this file.
X */
X
X#define MAX_ROW		64
X#define MAX_COL		128
X#define PATH		128
X
Xstruct STATUS {
X	int	fd;			/* file descriptor for TTY */
X	int	add_lf;			/* add <CR> to <LF>? */
X	int	log;			/* status of log option */
X	int	print;			/* status of print option */
X	char	log_path[PATH];		/* data logging file */
X#ifdef SHAREDMEM
X	int	clr;			/* flag to clear the screen */
X	int	row;			/* cursor row position */
X	int	col;			/* cursor column position */
X	char	vs[MAX_ROW][MAX_COL+1];	/* the virtual screen */
X#else /* SHAREDMEM */
X	char	vs_path[PATH];		/* virtual screen file */
X#endif /* SHAREDMEM */
X};
X
X#ifndef MAIN
Xextern struct STATUS *status;
X#endif /* MAIN */
SHAR_EOF
if test 767 -ne "`wc -c < 'status.h'`"
then
	echo shar: "error transmitting 'status.h'" '(should have been 767 characters)'
fi
fi
echo shar: "extracting 'vcs.h'" '(330 characters)'
if test -f 'vcs.h'
then
	echo shar: "will not over-write existing file 'vcs.h'"
else
sed 's/^X//' << \SHAR_EOF > 'vcs.h'
X/*
X * Definitions to support the detection of video command sequences
X */
X
X#define VCS_SIZE	25
X#define NUM_VCS		9
X
X#define HOME		0
X#define CLR_EOL		1
X#define CLR_EOS		2
X#define CLEAR		3
X#define MV_UP		4
X#define MV_DOWN		5
X#define MV_RIGHT	6
X#define MV_LEFT		7
X#define MV_DIRECT	8
X
X#define YES		1
X#define NO		0
X#define MAYBE		(-1)
SHAR_EOF
if test 330 -ne "`wc -c < 'vcs.h'`"
then
	echo shar: "error transmitting 'vcs.h'" '(should have been 330 characters)'
fi
fi
echo shar: "extracting 'xmodem.h'" '(464 characters)'
if test -f 'xmodem.h'
then
	echo shar: "will not over-write existing file 'xmodem.h'"
else
sed 's/^X//' << \SHAR_EOF > 'xmodem.h'
X/*
X * Definitions for the xmodem stuff.
X */
X
X#define MAX_ERRORS	10
X
X#define SOH		1
X#define STX		2
X#define EOT		4
X#define ACK		6
X#define NAK		21
X#define CAN		24
X#define CTRLZ		26
X
X#define PROTOCOLS	7
X#define XMODEM		0
X#define XMODEM_1k	1
X#define MODEM7		2
X#define YMODEM		3
X#define YMODEM_G	4
X#define XASCII		5
X#define EXTRNL		6
X
X#define ABORT		(-1)
X#define ERROR		(-2)
X#define CANCEL		(-3)
X
X#define CHECKSUM	0
X#define CRC_CHECKSUM	1
X#define CRC		2
X#define NONE		3
SHAR_EOF
if test 464 -ne "`wc -c < 'xmodem.h'`"
then
	echo shar: "error transmitting 'xmodem.h'" '(should have been 464 characters)'
fi
fi
exit 0
#	End of shell archive

-- 
Please send comp.sources.unix-related mail to rsalz at uunet.uu.net.



More information about the Comp.sources.unix mailing list