home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-02-01 | 67.3 KB | 1,585 lines |
- Newsgroups: comp.sources.unix
- From: sir-alan!ispin!lbartz@iuvax.cs.indiana.edu (Larry Bartz)
- Subject: v25i112: Indianapolis Standard Printer Interface for Networked printers, Part01/15
- Sender: sources-moderator@pa.dec.com
- Approved: vixie@pa.dec.com
-
- Submitted-By: sir-alan!ispin!lbartz@iuvax.cs.indiana.edu (Larry Bartz)
- Posting-Number: Volume 25, Issue 112
- Archive-Name: ispin/part01
-
- [ I didn't test this, since I don't have or have access to a SysV machine
- and this package does not work with the Berkeley print spooler. From
- reviewing the code it looks production-quality and if I were stuck with
- SysV I would certainly consider this as a way to get remote print service.
-
- --vix ]
-
- Indianapolis Standard Printer Interface for Networked printers
-
- ISPIN
-
- ISPIN was developed by the Internal Revenue Service at Indianapolis. It
- supports printing to networked printers through the native print spooler.
- The author has secured permission through appropriate channels to release
- ISPIN into the public domain.
-
-
- /* WHY? */
-
- Why would you want to use ISPIN?
-
- - You've got more printers than you like hardwired to your cpu(s)
- already and your users want more. You'd like to be able to
- support more printers while using fewer ttys than you do now.
-
- - You've got users at far-flung remote sites. Their printers are
- "slaved" to a few terminals. This limits the access of those
- printers to those users who are using those particular terminals.
- Everybody has their own "personal" printer - wasteful.
-
- - You have several cpus at your site, each with their own hardwired
- printers. This limits your flexibility in balancing workload
- across multiple systems. If you move an application to another
- system, you've got to make sure the printers go with it.
-
- - You're bored. You need a new software toy.
-
- - If all users on all of your systems could access all of your
- printers through all of your applications, life would be so
- sweet. You'd do a lot less wiring/re-wiring and spend much
- less time adding/deleting queue members and maintaining printer
- selection menus.
-
- - You have already tried uux'ing print jobs from one system to
- another to overcome the limitations imposed by hardwired printers.
- But your users gripe about the delays, and you are sick of the
- maintenance.
-
- - Your system(s) support(s) System V's lp/lpsched or
- (the old, Old, OLD) Zilog ZEUS 3.21 nq/xq/dqueuer.
- (ISPIN does not, at present, support the Berzerkeley lpr.)
-
- - You're bored. You need a new software toy. Not just something
- to diddle around with and clear the screen when the boss walks
- by. Something that will save money, increase productivity, and
- make you a systems administration/datacomm hero in your shop
- (or in your own mind, like me).
-
-
- /* HOW? */
-
- How could you implement ISPIN?
-
- 1. Disconnect all/some printers from their hardwired-to-cpu
- connections.
-
- 2. Connect all/some of your printers to a network, like:
-
- - statistical switching multiplexor, such as Tellabs, Equinox,
- David, Gandolph, Mitron, whatever. (examples, NOT ENDORSEMENT!)
-
- or
-
- - X.25 with asynchronous pads
-
- 3. Connect one or more ttys per cpu to the network. How many depends
- only upon how many simultaneous print jobs you want to support.
- In any case, it'll be far fewer ports than you use to support
- hardwired printers.
-
- 4. Install and configure ISPIN, the easiest and least time-consuming
- step.
-
- 5. Use your native print spooling software to add/delete, enable/
- disable queue members. Also use native commands to issue and
- cancel print requests.
-
-
- /* HUH? */
-
- How does ISPIN work?
-
- - Your native spooler/queuer subsystem is fine for hardwired
- printers. It accepts enqueueing and cancellation requests,
- reports on its status, and allows you to add and remove queue
- members (printers). When the spooler/queuer daemon determines
- that it is time for a user's request to be satisfied, it
- passes pertinent information to an executable or a shell script
- which sends the print job out the designated tty to the printer.
- This last process is known as the backend, or interface.
-
- - We substitute a call to the ISPIN executable for the backend.
-
- - The ISPIN process reads an entry for itself from a table
- called "rtab". The rtab is intentionally similar to the uucp
- L.sys file (or Systems file under HoneyDanBer uucp). There
- is one rtab entry per virtual printer (any given physical printer
- may be known or treated as several virtual printers).
-
- - The rtab entry contains the chat data (EXPECT/SEND) necessary
- for the ISPIN process to negotiate through the network to the
- printer. This data may also include printer initialization and
- configuration commands which can be passed both before and after
- the print job.
-
- - The rtab entry also contains a field which defines which tty(s)
- (from one to eleven possible) this printer may be called through.
-
- - The ISPIN process passes a formatted message to a daemon process
- known as IQUEUER. IQUEUER determines which of the requested
- ttys is available, and issues a message back to the ISPIN, telling
- it to proceed, using a particular tty. IQUEUER also maintains
- lock files, thereby avoiding conflicts with uucp, cu, uugetty,
- etc.
-
- - The ISPIN process, after receipt of its marching orders, sets
- up the tty, negotiates the network, and sends the job to the
- printer.
-
- - The rtab entry also contains flags and arguments which indicate
- network and printer busy and fault conditions. The ISPIN process
- watches for these indications to determine whether it should
- terminate and loop or quit.
-
- - All the while, the ISPIN process is under the complete control
- of the native spooler/queuer. Its status (active or waiting) is
- known to the native spooler/queuer daemon. It may be cancelled,
- rescheduled, whatever by the native commands.
-
- - While the ISPIN is "active" with respect to the native queuer,
- the IQUEUER daemon is notified by the ISPIN process of its
- current phase of execution (startup, negotiating the network,
- printing, disconnecting, looping). The current status of all
- currently executing ISPIN processes may be queryied via another
- executable, known as "iq".
-
- - This all sounds very busy. But is is quite efficient and is
- gratifyingly robust. If the printer is offline or busy, or
- the network is unable to make the connection, the ISPIN will
- loop and resubmit itself to the IQUEUER. If other jobs are
- waiting for network access through the tty(s), the looper is
- made to wait while other potentially successful jobs go ahead.
- If a Greyhound takes out a telephone pole between the cpu and
- the printer (or other mid-job disconnection), ISPIN detects
- the fault and loops as above. Upon successful re-connection,
- the job will be printed in its entirety.
-
- - ISPIN is not experimental software. It has been in production
- use since June 1989 and is currently (Jan 1992) operational at
- approximately forty-five multiple-cpu sites.
-
- sir-alan!ispin!lbartz@iuvax.cs.indiana.edu (Larry Bartz)
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 1 (of 15)."
- # Contents: ISPI ISPI/UUSTUFF.dr ISPI/UUSTUFF.dr/SYS_III.dr
- # ISPI/UUSTUFF.dr/SYS_V.dr ISPIN ISPIN/h ISPIN/src ISPIN/install
- # ISPIN/install/lib_rtab ISPIN/install/lib_rtab/CPU_SW_CDN_PTR
- # ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC
- # ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/USER_ADDR
- # ISPIN/install/lib_rtab/CPU_CDN_PTR
- # ISPIN/install/lib_rtab/CPU_CDN_PTR/ADDR_SPEC
- # ISPIN/install/lib_rtab/CPU_CDN_PTR/USER_ADDR
- # ISPIN/install/lib_rtab/CPU_PTR ISPIN/install/lib_rtab/CPU_SW_PTR
- # ISPIN/install/lib_rtab/CPU_SW_PTR/ADDR_SPEC
- # ISPIN/install/lib_rtab/CPU_SW_PTR/USER_ADDR ISPIN/obj ISPIN/doc
- # ISPIN/doc/OLD-DOCS ISPIN/misc ISPIN/misc/ISPIT.dr
- # ISPIN/misc/SUID.dr ISPIN/misc/PC-LANtoISPIN advert.doc README
- # ISPI/ISPI.DOC ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh ISPI/Makefile
- # ISPIN/src/README
- # ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/PLAIN
- # ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_NOSHT
- # MANIFEST
- # Wrapped by socrates@indy6 on Tue Jan 28 15:26:21 1992
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test ! -d 'ISPI' ; then
- echo shar: Creating directory \"'ISPI'\"
- mkdir 'ISPI'
- fi
- if test ! -d 'ISPI/UUSTUFF.dr' ; then
- echo shar: Creating directory \"'ISPI/UUSTUFF.dr'\"
- mkdir 'ISPI/UUSTUFF.dr'
- fi
- if test ! -d 'ISPI/UUSTUFF.dr/SYS_III.dr' ; then
- echo shar: Creating directory \"'ISPI/UUSTUFF.dr/SYS_III.dr'\"
- mkdir 'ISPI/UUSTUFF.dr/SYS_III.dr'
- fi
- if test ! -d 'ISPI/UUSTUFF.dr/SYS_V.dr' ; then
- echo shar: Creating directory \"'ISPI/UUSTUFF.dr/SYS_V.dr'\"
- mkdir 'ISPI/UUSTUFF.dr/SYS_V.dr'
- fi
- if test ! -d 'ISPIN' ; then
- echo shar: Creating directory \"'ISPIN'\"
- mkdir 'ISPIN'
- fi
- if test ! -d 'ISPIN/h' ; then
- echo shar: Creating directory \"'ISPIN/h'\"
- mkdir 'ISPIN/h'
- fi
- if test ! -d 'ISPIN/src' ; then
- echo shar: Creating directory \"'ISPIN/src'\"
- mkdir 'ISPIN/src'
- fi
- if test ! -d 'ISPIN/install' ; then
- echo shar: Creating directory \"'ISPIN/install'\"
- mkdir 'ISPIN/install'
- fi
- if test ! -d 'ISPIN/install/lib_rtab' ; then
- echo shar: Creating directory \"'ISPIN/install/lib_rtab'\"
- mkdir 'ISPIN/install/lib_rtab'
- fi
- if test ! -d 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR' ; then
- echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR'\"
- mkdir 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR'
- fi
- if test ! -d 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC' ; then
- echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC'\"
- mkdir 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC'
- fi
- if test ! -d 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/USER_ADDR' ; then
- echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/USER_ADDR'\"
- mkdir 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/USER_ADDR'
- fi
- if test ! -d 'ISPIN/install/lib_rtab/CPU_CDN_PTR' ; then
- echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_CDN_PTR'\"
- mkdir 'ISPIN/install/lib_rtab/CPU_CDN_PTR'
- fi
- if test ! -d 'ISPIN/install/lib_rtab/CPU_CDN_PTR/ADDR_SPEC' ; then
- echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_CDN_PTR/ADDR_SPEC'\"
- mkdir 'ISPIN/install/lib_rtab/CPU_CDN_PTR/ADDR_SPEC'
- fi
- if test ! -d 'ISPIN/install/lib_rtab/CPU_CDN_PTR/USER_ADDR' ; then
- echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_CDN_PTR/USER_ADDR'\"
- mkdir 'ISPIN/install/lib_rtab/CPU_CDN_PTR/USER_ADDR'
- fi
- if test ! -d 'ISPIN/install/lib_rtab/CPU_PTR' ; then
- echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_PTR'\"
- mkdir 'ISPIN/install/lib_rtab/CPU_PTR'
- fi
- if test ! -d 'ISPIN/install/lib_rtab/CPU_SW_PTR' ; then
- echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_SW_PTR'\"
- mkdir 'ISPIN/install/lib_rtab/CPU_SW_PTR'
- fi
- if test ! -d 'ISPIN/install/lib_rtab/CPU_SW_PTR/ADDR_SPEC' ; then
- echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_SW_PTR/ADDR_SPEC'\"
- mkdir 'ISPIN/install/lib_rtab/CPU_SW_PTR/ADDR_SPEC'
- fi
- if test ! -d 'ISPIN/install/lib_rtab/CPU_SW_PTR/USER_ADDR' ; then
- echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_SW_PTR/USER_ADDR'\"
- mkdir 'ISPIN/install/lib_rtab/CPU_SW_PTR/USER_ADDR'
- fi
- if test ! -d 'ISPIN/obj' ; then
- echo shar: Creating directory \"'ISPIN/obj'\"
- mkdir 'ISPIN/obj'
- fi
- if test ! -d 'ISPIN/doc' ; then
- echo shar: Creating directory \"'ISPIN/doc'\"
- mkdir 'ISPIN/doc'
- fi
- if test ! -d 'ISPIN/doc/OLD-DOCS' ; then
- echo shar: Creating directory \"'ISPIN/doc/OLD-DOCS'\"
- mkdir 'ISPIN/doc/OLD-DOCS'
- fi
- if test ! -d 'ISPIN/misc' ; then
- echo shar: Creating directory \"'ISPIN/misc'\"
- mkdir 'ISPIN/misc'
- fi
- if test ! -d 'ISPIN/misc/ISPIT.dr' ; then
- echo shar: Creating directory \"'ISPIN/misc/ISPIT.dr'\"
- mkdir 'ISPIN/misc/ISPIT.dr'
- fi
- if test ! -d 'ISPIN/misc/SUID.dr' ; then
- echo shar: Creating directory \"'ISPIN/misc/SUID.dr'\"
- mkdir 'ISPIN/misc/SUID.dr'
- fi
- if test ! -d 'ISPIN/misc/PC-LANtoISPIN' ; then
- echo shar: Creating directory \"'ISPIN/misc/PC-LANtoISPIN'\"
- mkdir 'ISPIN/misc/PC-LANtoISPIN'
- fi
- if test -f 'advert.doc' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'advert.doc'\"
- else
- echo shar: Extracting \"'advert.doc'\" \(7265 characters\)
- sed "s/^X//" >'advert.doc' <<'END_OF_FILE'
- X
- X
- X Indianapolis Standard Printer Interface for Networked printers
- X
- X ISPIN
- X
- X ISPIN was developed by the Internal Revenue Service at Indianapolis. It
- X supports printing to networked printers through the native print spooler.
- X The author has secured permission through appropriate channels to release
- X ISPIN into the public domain.
- X
- X
- X /* WHY? */
- X
- X Why would you want to use ISPIN?
- X
- X - You've got more printers than you like hardwired to your cpu(s)
- X already and your users want more. You'd like to be able to
- X support more printers while using fewer ttys than you do now.
- X
- X - You've got users at far-flung remote sites. Their printers are
- X "slaved" to a few terminals. This limits the access of those
- X printers to those users who are using those particular terminals.
- X Everybody has their own "personal" printer - wasteful.
- X
- X - You have several cpus at your site, each with their own hardwired
- X printers. This limits your flexibility in balancing workload
- X across multiple systems. If you move an application to another
- X system, you've got to make sure the printers go with it.
- X
- X - You're bored. You need a new software toy.
- X
- X - If all users on all of your systems could access all of your
- X printers through all of your applications, life would be so
- X sweet. You'd do a lot less wiring/re-wiring and spend much
- X less time adding/deleting queue members and maintaining printer
- X selection menus.
- X
- X - You have already tried uux'ing print jobs from one system to
- X another to overcome the limitations imposed by hardwired printers.
- X But your users gripe about the delays, and you are sick of the
- X maintenance.
- X
- X - Your system(s) support(s) System V's lp/lpsched or
- X (the old, Old, OLD) Zilog ZEUS 3.21 nq/xq/dqueuer.
- X (ISPIN does not, at present, support the Berzerkeley lpr.)
- X
- X - You're bored. You need a new software toy. Not just something
- X to diddle around with and clear the screen when the boss walks
- X by. Something that will save money, increase productivity, and
- X make you a systems administration/datacomm hero in your shop
- X (or in your own mind, like me).
- X
- X
- X /* HOW? */
- X
- X How could you implement ISPIN?
- X
- X 1. Disconnect all/some printers from their hardwired-to-cpu
- X connections.
- X
- X 2. Connect all/some of your printers to a network, like:
- X
- X - statistical switching multiplexor, such as Tellabs, Equinox,
- X David, Gandolph, Mitron, whatever. (examples, NOT ENDORSEMENT!)
- X
- X or
- X
- X - X.25 with asynchronous pads
- X
- X 3. Connect one or more ttys per cpu to the network. How many depends
- X only upon how many simultaneous print jobs you want to support.
- X In any case, it'll be far fewer ports than you use to support
- X hardwired printers.
- X
- X 4. Install and configure ISPIN, the easiest and least time-consuming
- X step.
- X
- X 5. Use your native print spooling software to add/delete, enable/
- X disable queue members. Also use native commands to issue and
- X cancel print requests.
- X
- X
- X /* HUH? */
- X
- X How does ISPIN work?
- X
- X - Your native spooler/queuer subsystem is fine for hardwired
- X printers. It accepts enqueueing and cancellation requests,
- X reports on its status, and allows you to add and remove queue
- X members (printers). When the spooler/queuer daemon determines
- X that it is time for a user's request to be satisfied, it
- X passes pertinent information to an executable or a shell script
- X which sends the print job out the designated tty to the printer.
- X This last process is known as the backend, or interface.
- X
- X - We substitute a call to the ISPIN executable for the backend.
- X
- X - The ISPIN process reads an entry for itself from a table
- X called "rtab". The rtab is intentionally similar to the uucp
- X L.sys file (or Systems file under HoneyDanBer uucp). There
- X is one rtab entry per virtual printer (any given physical printer
- X may be known or treated as several virtual printers).
- X
- X - The rtab entry contains the chat data (EXPECT/SEND) necessary
- X for the ISPIN process to negotiate through the network to the
- X printer. This data may also include printer initialization and
- X configuration commands which can be passed both before and after
- X the print job.
- X
- X - The rtab entry also contains a field which defines which tty(s)
- X (from one to eleven possible) this printer may be called through.
- X
- X - The ISPIN process passes a formatted message to a daemon process
- X known as IQUEUER. IQUEUER determines which of the requested
- X ttys is available, and issues a message back to the ISPIN, telling
- X it to proceed, using a particular tty. IQUEUER also maintains
- X lock files, thereby avoiding conflicts with uucp, cu, uugetty,
- X etc.
- X
- X - The ISPIN process, after receipt of its marching orders, sets
- X up the tty, negotiates the network, and sends the job to the
- X printer.
- X
- X - The rtab entry also contains flags and arguments which indicate
- X network and printer busy and fault conditions. The ISPIN process
- X watches for these indications to determine whether it should
- X terminate and loop or quit.
- X
- X - All the while, the ISPIN process is under the complete control
- X of the native spooler/queuer. Its status (active or waiting) is
- X known to the native spooler/queuer daemon. It may be cancelled,
- X rescheduled, whatever by the native commands.
- X
- X - While the ISPIN is "active" with respect to the native queuer,
- X the IQUEUER daemon is notified by the ISPIN process of its
- X current phase of execution (startup, negotiating the network,
- X printing, disconnecting, looping). The current status of all
- X currently executing ISPIN processes may be queryied via another
- X executable, known as "iq".
- X
- X - This all sounds very busy. But is is quite efficient and is
- X gratifyingly robust. If the printer is offline or busy, or
- X the network is unable to make the connection, the ISPIN will
- X loop and resubmit itself to the IQUEUER. If other jobs are
- X waiting for network access through the tty(s), the looper is
- X made to wait while other potentially successful jobs go ahead.
- X If a Greyhound takes out a telephone pole between the cpu and
- X the printer (or other mid-job disconnection), ISPIN detects
- X the fault and loops as above. Upon successful re-connection,
- X the job will be printed in its entirety.
- X
- X - ISPIN is not experimental software. It has been in production
- X use since June 1989 and is currently (Jan 1992) operational at
- X approximately forty-five multiple-cpu sites.
- END_OF_FILE
- if test 7265 -ne `wc -c <'advert.doc'`; then
- echo shar: \"'advert.doc'\" unpacked with wrong size!
- fi
- # end of 'advert.doc'
- fi
- if test -f 'README' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'README'\"
- else
- echo shar: Extracting \"'README'\" \(9625 characters\)
- sed "s/^X//" >'README' <<'END_OF_FILE'
- X
- X
- X
- X date : August 29, 1991
- X
- X to :
- X
- X from : Systems Administrator, Information Systems Division
- X Internal Revenue Service
- X Indianapolis District Office
- X
- X subject: Indianapolis Standard Printer Interface (for Network printers)
- X ISPIN
- X production release 2.2
- X
- X
- X
- X *** *** *** *** *** *** INTRODUCTION *** *** *** *** *** *** *** ***
- X
- X This is the current version of the production release of ISPIN.
- X ISPIN.rel_2.2 differs from the 2.1 release only in its documentation,
- X which has been modified to support a public release of ISPIN.
- X
- X To date, ISPIN has been successfully installed and tested on these
- X systems:
- X AT&T 3B1
- X AT&T 3B2600G
- X CCI 6/32 MP (CCI SysV)
- X Compaq with Intel 80286 CPU
- X (running XENIX)
- X IBM PC/AT with Intel 80386 CPU
- X (running XENIX)
- X IBM PC/AT with Intel 80386 CPU
- X (running SCO UNIX V.3.2)
- X Dell 325 with Intel 80386-25 CPU
- X (Interactive UNIX V.3.2)
- X Prime EXL 50
- X Pyramid 90x
- X Pyramid 9810
- X Pyramid MIS-4
- X Sequent Balance B8 (DYNIX)
- X Sequent Symmetry (DYNIX)
- X Unisys 5000
- X Zilog Model 31
- X Zilog Model 32
- X Zilog Model 130 (Rev J OS)
- X
- X The networks upon which ISPIN has been tested so far include:
- X
- X CDN (IRS X.25 network with async interface)
- X Teltone/Tellabs Switch
- X Gandolph Switch
- X David Switch
- X Mitron Switch
- X Equinox Switch
- X Neac Switch/PBX
- X
- X
- X *** *** *** *** *** *** THIS TRANSMITTAL *** *** *** *** *** *** ***
- X
- X
- X This transmittal creates a directory named ISPIN.rel_2.2.
- X
- X ISPIN.rel_2.2 will contain two subdirectories, namely ISPI and ISPIN.
- X
- X
- X *** *** *** *** *** *** ISPIN subdirectory *** *** *** *** *** *** ***
- X
- X ISPIN contains the source code, install documents, and install scripts
- X for the ISPIN application. The ISPIN application serves as a BACKEND,
- X a network/printer interface for the native queuer/spooler. ISPIN
- X currently supports the UNIX Sys V lp/lpsched spooler and the Zeus 3.21
- X (Zilog) nq/dqueuer.
- X
- X We have organized the directory ISPIN into subdirectories using
- X standard names "doc" (for documentation files), "h" (for header
- X files), "install" (where install scripts exist, and from which they
- X must be executed), "obj" (where the executables will be placed as
- X they are compiled), and "src" (where the source code resides).
- X
- X
- X
- X *** *** *** *** *** *** ISPI subdirectory *** *** *** *** *** *** ***
- X
- X The ISPI directory contains the freshest version of our ISPI
- X application. ISPI is an application which serves as a FRONTEND,
- X a user interface, for the native queuer/spoolers. ISPI currently
- X supports the UNIX Sys V lp/lpsched spooler and the Zeus 3.21
- X (Zilog) nq/dqueuer.
- X
- X ISPI includes its own source code and documentation. We sent
- X ISPI along because we have found it to be an extremely useful tool
- X to support the native queuer/spoolers. If you have any version of
- X ISPI previous to this one, please use this one as a replacement. The
- X ISPI included with this transmittal supersedes the ISPI which
- X accompanied the ISPIN.rel_2.1 release.
- X
- X ISPIN and ISPI are TWO SEPARATE AND DISTINCT APPLICATIONS.
- X
- X Neither depends upon the other for functionality. You may use ISPIN
- X without ISPI. You may use ISPI without ISPIN.
- X
- X
- X
- X *** *** *** *** *** *** ISPIN documentation *** *** *** *** *** ***
- X
- X The documentation for this application is informal in style, and the
- X code is overflowing with comments. If you don't have time and inclin-
- X ation to read everything in the ISPIN.rel_2.2/ISPIN/doc directory,
- X AT LEAST READ:
- X TECH.doc, OVERVIEW, and rtab
- X
- X Several files in the ISPIN/doc/OLD-DOCS directory document the
- X design, development, testing, and implementation history of ISPIN.
- X
- X/****************************************************************************/
- X/* */
- X/* Copyright (C) 1991 */
- X/* Larry Bartz */
- X/* Internal Revenue Service */
- X/* Indianapolis District Office */
- X/* */
- X/* This program is free software; you can redistribute it and/or modify */
- X/* it under the terms of the GNU General Public License as published by */
- X/* the Free Software Foundation, version 1. */
- X/* */
- X/* This program is distributed in the hope that it will be useful, */
- X/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
- X/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
- X/* GNU General Public License for more details. */
- X/* */
- X/* You should have received a copy of the GNU General Public License */
- X/* along with this program; if not, write to the Free Software */
- X/* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
- X/* */
- X/****************************************************************************/
- X
- X
- X *** *** *** *** *** *** ISPIN installation *** *** *** *** *** *** ***
- X
- X If you are installing this application under System V UNIX and
- X the lp spooler, install per LPinstall.doc.
- X
- X If you are installing this application under ZEUS 3.21 and its
- X nq/xq/dqueuer queuer family, install per NQinstall.doc.
- X
- X
- X
- X *** *** *** *** *** *** FEEDBACK, please *** *** *** *** *** *** ***
- X
- X We are maintaining a list of sites which use ISPI/ISPIN and of
- X contact persons at those sites. Unless you tell us, however, we will
- X have no idea whether or not you actually use these applications
- X in production. Our hope is that you will, but we will not
- X presume it. Please confirm installation and usage of ISPI/ISPIN
- X via e-mail sent to me as shown at the end of this document.
- X
- X Confirmed users will receive all subsequent update and informational
- X distributions. We will notify users of updates via an electronic mail
- X group, also shown below. If possible, we would like your site to have
- X a user included in this group. An administrative e-mail address which
- X is aliased to an actual user(s) at your end is preferred (i.e.
- X "dat1!sysadm" instead of "dat1!jdoe"). Please notify us of the e-mail
- X address at which you would like to receive ISPIN information.
- X
- X There is no bug-free software. Although the alpha site and beta site
- X testing has been extensive, and ISPIN has been in heavy production
- X use for two years, we recognize the possibility of bugs which
- X have not yet been exposed. Please report them to me by electronic mail
- X as decribed elsewhere.
- X
- X If you install and use ISPI/ISPIN on hardware/software platforms which
- X are not listed in this memo, please let me know. This software is
- X intended to be portable.
- X
- X
- X
- X
- X
- X
- X Larry Bartz
- X
- X
- X|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
- X| Larry Bartz |
- X| |
- X| UNIX/uucp e-mail: |
- X| |
- X| {uunet, iuvax}!sir-alan!ispin!lbartz |
- X| lbartz@ispin.UUCP |
- X| |
- X| IRS-private MMDF: |
- X| |
- X| lbartz@indy6 |
- X|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
- END_OF_FILE
- if test 9625 -ne `wc -c <'README'`; then
- echo shar: \"'README'\" unpacked with wrong size!
- fi
- # end of 'README'
- fi
- if test -f 'ISPI/ISPI.DOC' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'ISPI/ISPI.DOC'\"
- else
- echo shar: Extracting \"'ISPI/ISPI.DOC'\" \(25374 characters\)
- sed "s/^X//" >'ISPI/ISPI.DOC' <<'END_OF_FILE'
- X
- X
- X
- X
- XLast update May 8, 1991
- X
- X
- X ISPI - Indianapolis Standard Printer Interface
- X
- X
- X ISPI is a utility which provides a menu driven means of issuing
- X a print command. It may be used exclusively for the local system,
- X or it may be used to issue print commands to other UNIX systems via
- X uucp, or it may be used to issue print commands to networked printers.
- X The program was initially developed in order to eliminate printer menu
- X maintenance work. In the past, each time a printer was added or removed
- X from a system we had to go through all applications on that system and
- X change each printer selection menu and its corresponding shell. Also,
- X whenever we received a new application or moved an application from one
- X system to another, we had to perform this same process. Neglecting this
- X maintenance task resulted in inaccurate menus. Therefore, we decided to
- X develop one program which could be used by all applications to both
- X choose a printer and issue a print command.
- X
- X ISPI provides a menu selection for each printer that is defined in the
- X printer configuration file. ISPI also provides an option and mechanism
- X to print to a slave printer which automatically activates and deactivates
- X the terminal's auxiliary port. Other menu selections include an option to
- X set the number of hard copies, and an option to view the file on the
- X terminal prior to printing.
- X
- X Three of ISPI's selections are compile conditional (they will only be
- X activated if requested at compile time). One option provides for
- X printing to other UNIX systems. Another allows for interface with
- X ISPIN (Indianapolis Standard Printer Interface for Networked printers).
- X The third optional menu selection allows the user to download the file
- X from the host to a local system, such as a PC.
- X These options, if not requested, are not referenced on the menu, nor are
- X their respected areas of code used for the compilation.
- X
- X This document details the implementation and use of the ISPI system.
- X
- X
- X
- X ISPI reads the local system's printer configuration file and
- X produces a menu with an option for each printer. ISPI also reads the
- X first 20 characters of the comment line following each device (if it
- X exists) and displays them prior to the device on the menu. This may
- X be used to show the type of printer and/or its location. If a printer
- X is moved or added to the system, modifying the config file is the only
- X maintenance required to have the print menu up to date. This resolves
- X the need for modifying multiple printer selection menus, and eliminates
- X the chance of a printer menu becoming obsolete.
- X
- X The following is a Zilog System III UNIX nq/dqueuer printer config-
- X uration file (/usr/spool/queuer/config) and the menu ISPI will produce:
- X
- X#
- XQlpr,R,N,S
- X# line printer 1
- XD1,R,/dev/lp,/usr/lib/lp
- X#Draft DP rm. 420
- X#
- XQtext,R,N,S
- X# text spinwriter
- XD1,R,/dev/tty7,/usr/lib/text -T "9600 -nl"
- X#Letter RM rm. 505
- X# spinwriter 2
- XD2,R,/dev/tty6,/usr/lib/text -T "9600 -nl"
- X#Letter TX rm. 437
- X
- X INDY_1 Printer Selection Menu
- X ------ ------- --------- ----
- X
- X 1. Draft DP rm. 420 lpr:1
- X 2. Letter RM rm. 505 text:1
- X 3. Letter TX rm. 437 text:2
- X
- X 55. Slave Printer
- X 66. View File on Terminal
- X 77. Change Number of Copies - Currently 1
- X 99. Abort Without Printing
- X
- X
- X
- X
- X
- X A system which doesn't use nq obviously would not have a config file
- X in the format of that read by nq's dqueuer. For a system which uses lp,
- X an artificial config file must be created. This config file must have
- X "LP" as the first non-white space characters in the file. This tells
- X ISPI that an lp command must be formatted for this system. When this
- X config file is read, each non-blank line that is not a comment line is
- X assumed to be a printer. If a comment line exists following the printer,
- X it will be displayed to the left of the printer on the print menu. The
- X following is an example of an artificial lp printer configuration file
- X (named "config") which is similar to the nq configuration file shown
- X above:
- X
- XLP
- X#
- Xlpr1
- X#Draft DP rm. 420
- X#
- Xtext1
- X#Letter RM rm. 505
- Xtext2
- X#Letter TX rm. 437
- X
- X
- X
- X
- X
- X STANDARD SELECTIONS FROM ISPI'S MAIN MENU
- X
- X
- X The following items will always appear on ISPI's main menu:
- X
- X For a local system, option 55 will be the slave printer. If this
- X option is chosen, the termcap environment variable (TERM) is read,
- X and the appropriate escape sequences turn on the terminals' AUX port,
- X cat the file(s), and turn the AUX port off. A static structure is
- X used in ispi.c to define the available termcaps and their on and off
- X escape sequences. Current TERM variables which are recognized include
- X v5, v55, and v65 for Visual Terminals, and d2 for VT100 emulators.
- X These TERMs are located in the structure "term_types terminals" and
- X may be modified to suit your site. Additional TERMs may easily be
- X added.
- X
- X Option 66 allows the user to view the file(s) on the terminal.
- X On completion (or at any time the user wishes), the user is returned
- X to the main menu.
- X
- X Option 77 allow the user to choose the number of hard copies. A
- X maximum of 10 copies is permitted.
- X
- X Selection 99 aborts from the program with a non-zero exit status.
- X
- X
- X
- X
- X Usage: ispi [-(Arguments)] [files...]
- X
- X
- X Arguments for ISPI include:
- X
- X -m : mail notice to user when print is complete
- X -c : create copy
- X -B : print banner (no banner is the default)
- X -a : show all printers, regardless of group designation
- X
- X The flags -m and -c are the same as they are in both nq and lp commands.
- X Since no banner is the default for lp and banner is the default for nq,
- X the -B flag is be used to specify banner.
- X
- X In addition to the above flags, ISPI also has an argument unique to it-
- X self. The -s flag may be used in three cases: (1) where the user selects
- X the printer prior to generating output in which the file names are known,
- X (2) the user wants to set the printer at the beginning of a session and use
- X that printer for all prints or (3) when input must be taken from standard
- X input.
- X
- X For example, a shell script prompts the user for the desired printer,
- X generates a report via a time consuming ace program, and then sends the
- X report to the printer on its completion. Using the -s option, this logic
- X may still be applied with only minor maintenance to the shell script. When
- X the -s argument is given to ISPI, the command produced is not executed,
- X but printed to standard out. This allows the user to "alias" a command
- X to ISPI's output. (We have found that "alias" works more reliably then
- X "set" due to the slave printer option. Escape characters and meta-
- X characters are often used in the sequence of characters which toggle the
- X AUX port which may cause set to bomb). Note the following examples below:
- X
- X
- X #!csh shell script using nq
- X #
- X echo -n "Enter the printer of your choice: "
- X set dev = `gets`
- X acego -q takes_all_day
- X nq -nb -q $dev all_day_report
- X
- X
- X #!csh shell script using ispi
- X #
- X alias print_it "`ispi -s all_day_report`"
- X acego -q takes_all_day
- X print_it
- X
- X
- X
- X
- X Notice the script that uses ISPI aliases the print_it command prior
- X to generating the report. At the time ISPI is aliased as above, the menu
- X driven options are presented to the user as in its regular usage. After
- X the user selects the printer, ISPI writes the desired print command to
- X standard out, which is taken by the "alias" command. For example, if a
- X user chooses text:1 on the local system which uses nq, print_it will be
- X aliased to "nq -nb -q text:1 all_day_report".
- X
- X A more effecient shell script would be wary of the user choosing
- X option 99 - "Abort Without Printing". When this option is chosen, ISPI
- X aborts with a non-zero exit status. This condition may be trapped with
- X the following code:
- X
- X
- X
- X
- X
- X #!csh enhanced shell script using ispi
- X #
- X alias print_it "`ispi -s all_day_report`"
- X if ($status == 0) then
- X acego -q takes_all_day
- X print_it
- X endif
- X
- X
- X
- X
- X To set a printer for repetitive use, or to use standard in, the
- X -s flag should again be used, but no file names should be provided.
- X Again, alias may be used, but this time to set the printer name and
- X type of print command (nq or lp). For example: alias printer "`ispi -s`"
- X will prepare the alias "printer" (which is set to the desired printer
- X at runtime by the user) to take standard in. Files may then be printed
- X by the command "cat file_name | printer".
- X
- X
- X File names may be passed to ISPI as command line arguments. If
- X no file names are present on the command line and the -s flag is not
- X passed as an argument, the user is prompted for the file names. If the
- X -s argument is not used, the existence of the files are verified prior
- X to issuing the command. Files which exist are sent to the printer, and
- X files which do not exist cause the error message "ispi: (file_name) not
- X found".
- X
- X
- X
- X
- X
- X
- X
- X PRINTING TO OTHER UNIX SYSTEMS
- X
- X
- X When ISPI is compiled with a -DUUCP flag, selection 88, "Print
- X File on Another System" is displayed on the main menu. When chosen,
- X this option displays a "Systems Selection Menu". From this menu, any
- X system on the UUCP network that has its printer configuration file
- X represented on the local system may be accessed.
- X
- X When item 88 is chosen from a printer selection menu, the following
- X systems selection menu is generated:
- X
- X
- X
- X
- X System Selection Menu
- X ------ --------- ----
- X
- X 1. INDY_2
- X 2. INDY_3
- X 3. INDY_4
- X 4. INDY_5
- X 5. Return to Local System Menu (INDY_1)
- X
- X Enter your choice:
- X
- X
- X
- X
- X
- X The systems included in this menu are those on the UUCP network which
- X have their config file represented on the local system. This represen-
- X tation should be an actual copy of the config file located in the same
- X directory as the local system's config file, named config(system nodename).
- X The following is a listing of the files in /usr/spool/queuer on INDY_1
- X which were used to create the above menu:
- X
- X
- X config configINDY_2 configINDY_3 configINDY_4 configINDY_5
- X
- X
- X The full pathname to the location of the config files is specified in
- X the #define preprocessor constant CONFIG_PATH which is initialized at the
- X beginning of ispi.c. For systems that use lp, another path may be substi-
- X tuted to store the config files.
- X
- X
- X
- X LIMITING NUMBER OF PRINTERS DISPLAYED
- X
- X********* ONE WAY
- X
- X As of 08/07/90 revision and later, the user may also set an environ-
- X mental variable, CONFIGDIR. The value of this variable will override the
- X compile-time-defined CONFIG_PATH. The purpose of CONFIGDIR is to allow
- X the Systems Administrator to set up various printer selection menus for
- X various groups of users. This may be necessary for reasons of: security (so
- X users of sensitive data may not inadvertently send jobs to insecure
- X printers [aren't they all?]); convenience (so users don't have to wade
- X through a menu filled with printers they never use); and practicality (only
- X so many printers will fit on one screen display page).
- X
- X Like so:
- X in C-shell:
- X set configdir=/z/bin/config/ex_configdir
- X setenv CONFIGDIR /z/bin/config/ex_configdir
- X
- X in Bourne shell:
- X CONFIGDIR=/z/bin/config/ex_configdir
- X EXPORT CONFIGDIR
- X
- X
- X
- X
- X
- X (see next page for better way)
- X
- X
- X
- X LIMITING NUMBER OF PRINTERS DISPLAYED
- X
- X********* BETTER WAY
- X
- X As of the 01/01/91 revision, you may now optionally define which
- X user groups will be given a particular printer on their menu. This
- X eliminates the need to use the CONFIGDIR environmental variable and
- X multiple printer configuration files. If a site decides to not use this
- X new capability, no change to the printer configuration file is needed.
- X If you wish for a printer to be only on a particular user group's print
- X menu, then add a SECOND comment line after the printer name in the
- X configuration file in the form :
- X
- X #GROUP groupnum1 groupnum2 ...
- X OR
- X #GROUP ALL
- X
- X For Example :
- X
- Xtext1
- X#Letter RM rm. 505
- X#GROUP 100 300 400
- Xtext2
- X#Letter TX rm. 437
- X#GROUP ALL
- X
- X The above LP example only allows users who are in group 100, 300, or 400
- X to have the text1 printer appear on their print menu. All users will have
- X the printer text2 appear on their menu. (Putting #GROUP ALL is actually
- X optional since if no group comment line exists then all users see that
- X printer on their menu.)
- X If you want superuser to have a particular printer on his/her menu, then
- X you would specify group 0 as one of the user groups. The following
- X nq/dqueuer example does the same as the above LP example.
- X
- XQtext,R,N,S
- X# text spinwriter
- XD1,R,/dev/tty7,/usr/lib/text -T "9600 -nl"
- X#Letter RM rm. 505
- X#GROUP 100 300 400
- X# spinwriter 2
- XD2,R,/dev/tty6,/usr/lib/text -T "9600 -nl"
- X#Letter TX rm. 437
- X#GROUP ALL
- X
- X Assigning printers to only certain user groups has two advantages.
- X Users will only see printers which they might be interested in printing
- X to and not have other printers clutter their menu. Also, it can help
- X prevent users from accidentally sending prints a hundred miles away to
- X another POD/office.
- X
- X If you would like ispi to disregard the group designations in the config
- X file and show you ALL printers, then simply call ispi with the -a option.
- X This will cause ispi to create a menu which lists all printers, regardless
- X of group.
- X
- X
- X
- X
- X UUCP Considerations
- X
- X
- X If ISPI is used to print a file from one system to another,
- X the UUCP package is invoked. There are three events that may take
- X place which will initiate UUCP's system to system communication.
- X
- X
- X (1) A request is made from the local system.
- X
- X If this request cannot be accomplished when first initiated
- X (due to busy communication line, requested system not connected,
- X requested system down, etc...), the request will be queued on
- X the local system.
- X
- X (2) A call from a remote system to the local system is established.
- X
- X Once the remote system has finished its request, it checks to
- X see if it is the destination of any of the local system's
- X requests.
- X
- X
- X (3) UUCP is explicitly requested to work on the queued requests.
- X
- X
- X
- X Once a request has been queued, it will remain in the queuer until
- X one of the above events transpire. Without an explicit call to work
- X on the queued requests, they are completely dependent on other
- X user initiated activity (cases 1 and 2). This may cause long waits
- X between the command initiation and the actual printing. This is parti-
- X cularly troublesome in the event of many requests queued at the same time.
- X As the requests are being fulfilled, other request may have to be queued
- X due to busy communication lines. To alleviate this bottle-necking of
- X print requests, we have written a daemon routine (uustart) which checks
- X every two minutes for unfulfilled requests. If requests are present,
- X this routine attempts to establish communication to the remote system
- X and complete the print job.
- X Another consideration when transferring files from system to system
- X with UUCP is the amount of available free space in /usr. Both the files
- X which are spooled on the local system and the files received from calling
- X systems are stored in /usr until the the local system has completed its
- X share of the work. We have increased /usr by 5000 blocks to accomodate
- X UUCP's file spooling.
- X
- X
- X
- X
- X EXTERNAL PRINTING
- X
- X ISPI and ISPIN
- X
- X
- X ISPIN, or the Indianapolis Standard Printer Interface for Networked
- X printers, and ISPI are independent programs. Neither program relies on
- X the other to function, but ISPI may be used with ISPIN.
- X
- X ISPI, when compiled with the -DEXTERN flag, will also support
- X ISPIN'S external (or networked) printing capabilities. When ISPI is
- X compiled with the -DEXTERN flag, menu selection "44. External Printer" is
- X provided on the local system's menu. If chosen, ISPI will locate and
- X read ISPIN's rtab file and find all entries denoted by the existence of
- X a \U somewhere in the entry. These entries will be presented as interface
- X options. After the user chooses the desired interface option, the user is
- X prompted for an address. When the entry is verified by the user, the
- X command is formatted and passed to the native spooler, along with the
- X address and interface information which is needed by ISPIN.
- X
- X Under Zeus 3.21's nq/dqueuer spooler, all queue members
- X must be defined in the /usr/spool/queuer/config file (as explained
- X in the ISPIN documentation). To prevent the "external" printers
- X from being displayed on ISPI's main menu, a separate queue may be
- X established for "external" printers. The queue name must be defined in
- X the #define EXTERNAL_QUEUE_NAME constant. This simply lets ISPI
- X know not to display any device that is a member of this queue on the
- X main menu (for text:1, text is the queue member, 1 is the device
- X name).
- X
- X For more information concerning ISPIN, refer to ISPIN's documentation.
- X
- X
- X
- X
- X
- X DOWNLOADING FILES WITH ISPI
- X
- X As more users access our systems from other computers (laptop, desktop,
- Xworkstations, etc) we are more frequently asked to provide capabilities for
- Xthose users to download files. In many cases, what the user wants to download
- Xis the same file that would be printed via a printer selection menu.
- X
- X In order to facilitate this process, we have added (as of 01/02/90) an
- Xadditional feature to ISPI. This feature is enabled at compile time by includ-
- Xing "-DXFER" in the compile line. An additional menu selection,
- X
- X "33. Download File"
- X
- Xwill appear on the ISPI menu.
- X
- X The file (or files) specified in the ISPI command line will be transferred
- Xto the user's local system via the command specified as the preprocessor
- Xconstant, XFERCMD. A typical definition of XFERCMD would be:
- X
- X#define XFERCMD "/usr/local/bin/kermit -is"
- X
- XThe user is prompted to invoke the corresponding receiving command on the local
- Xsystem.
- X
- XThe installer must modify the definition of XFERCMD to suit local needs (such
- Xas full path to command, arguments) prior to compiling ISPI.
- X
- XIf the user's environment includes a value defined for a variable named
- X"XFERCMD", the value of the environmental variable will supercede the compiled
- Xin value for XFERCMD.
- X
- X
- X
- X
- X
- X
- X
- X ISPI INSTALLATION NOTES
- X
- X
- X The following is a list of items that affect the installation of
- X ISPI. If necessary, some of items may need to be modified to meet
- X the needs of your site:
- X
- X
- X BASIC ISPI : 1) The #define TERM_ENV constant is what you call your
- X terminal type (termcap) environment variable - it is
- X currently set to TERM.
- X
- X 2) The static structure "term_types terminals" houses known
- X termcap names, and the escape sequences which turn
- X the auxiliary port on and off. Two basic types
- X are included in this structure, and more are easily
- X added. The two types which are included are for
- X Visual terminals (called by any of the following
- X termcap names: v5, v55, v65) and VT100 emulators
- X (known to the program as the "d2" termcap). The
- X termcap name portion of this structure may need to
- X be modified to the termcap names used at your site.
- X
- X 3) The #define CONFIG_PATH is located in two places,
- X one for the System V compile, and one for non-System V
- X compile. This is the directory name of where the
- X printer configuration file(s) are stored. For the
- X non-System V version, /usr/spool/queuer is currently
- X set and should not need to be changed. For System V,
- X the current directory set is /z/bin/config. This may
- X be modified to the directory where the configuration
- X file(s) are located.
- X
- X
- X UUCP
- X PRINTING : 1) To use this option, -DUUCP must be included in the
- X compile line prior to the -o argument.
- X
- X 2) The UUCP Package must be installed on the local system
- X and any system that the local system intends to print
- X to.
- X
- X 3) Printer configuration files from the remote systems
- X must be copied to the local system in the CONFIG_PATH
- X directory and they must be named configremote_system_
- X node_name (such as: configINDY_1 for system INDY_1's
- X configuration file).
- X
- X
- X EXTERNAL
- X PRINTING : 1) To use this option, -DEXTERN must be included in the
- X compile line prior to the -o argument.
- X
- X 2) The ISPIN Package must be installed on the local system.
- X
- X
- X - Continue on Next Page -
- X
- X
- X
- X
- X ISPI INSTALLATION NOTES
- X
- X
- X EXTERNAL
- X PRINTING
- X (continued) 3) The location of ISPIN's RTAB directory must be
- X defined in the #define RTAB_PATH constant. This
- X constant is defined in two locations; one for System
- X V, one for non-System V. The default locations are
- X "/usr/spool/lp/ISPIN" for System V, and for other
- X systems "/usr/spool/queuer/ISPIN" .
- X
- X 4) The queue name of your external printers should be
- X defined in the #define EXTERNAL_QUEUE_NAME constant
- X (currently set to "ext").
- X
- X
- X FILE
- X TRANSFER : 1) To use this option, -DXFER must be included in the
- X compile line prior to the -o argument.
- X
- X 2) The XFERCMD constant may be modified to reflect your
- X preferred local file transfer command. As shipped,
- X the appropriate line of code reads:
- X
- X # define XFERCMD "/z/bin/kermit -is"
- X
- X Here are some other possible examples:
- X
- X # define XFERCMD "/usr/local/bin/ukermit -is"
- X # define XFERCMD "/usr/local/bin/uxmodem -sb"
- X # define XFERCMD "/usr/local/bin/uymodem -sb"
- X
- X Of course, the value you choose MUST correspond with
- X software you have on your system and with the file transfer
- X protocol in use by the calling user. When the user selects
- X item 33 from the menu, the XFERCMD will be executed, with
- X the filename as the argument. The user is prompted to
- X execute the receiving process on the local machine.
- X
- X
- X SYSTEM V : 1) For System V machines, -DSYSTEM_V must be included
- X in the compile line prior to the -o argument
- X (except for Sequents).
- X
- X 2) An artificial printer configuration file named
- X "config" must be located in the CONFIG_PATH
- X directory.
- X
- X
- X SEQUENT : 1) For Sequents, -DSEQUENT must be included in the
- X compile line prior to the -o argument. Including
- X -DSYSTEM_V is not necessary if SEQUENT is defined.
- X
- X
- X
- X
- X COMPILE LINE :
- X
- X * +
- Xcc [-DSEQUENT, -DSYSTEM_V [-f]] [-DUUCP] [-DEXTERN] [-DXFER] -o ispi ispi.c -s
- X
- X
- X * Arguments in [] are the optionals described above.
- X + ZILOG System V machines will require the -f flag or its equivalent, -Kfpe
- X if the system does not possess floating point hardware.
- X
- END_OF_FILE
- if test 25374 -ne `wc -c <'ISPI/ISPI.DOC'`; then
- echo shar: \"'ISPI/ISPI.DOC'\" unpacked with wrong size!
- fi
- chmod +x 'ISPI/ISPI.DOC'
- # end of 'ISPI/ISPI.DOC'
- fi
- if test -f 'ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh'\"
- else
- echo shar: Extracting \"'ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh'\" \(371 characters\)
- sed "s/^X//" >'ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh' <<'END_OF_FILE'
- X#!csh
- X# This script is called by uustart. See documentation comments
- X# in uustart.c Larry Bartz, IRS Indianapolis D.O., 021987
- Xset STATDIR = /usr/spool/uucp/.Status
- Xforeach SYS(`uustat -q|cut -c1-7`)
- X if(-e $STATDIR/$SYS)then
- X (uustat -q|grep $SYS|grep Retry)> /dev/null
- X if($status == 0)then
- X rm -f $STATDIR/$SYS
- X endif
- X endif
- X /usr/lib/uucp/uucico -r1 -s$SYS
- Xend
- END_OF_FILE
- if test 371 -ne `wc -c <'ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh'`; then
- echo shar: \"'ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh'\" unpacked with wrong size!
- fi
- chmod +x 'ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh'
- # end of 'ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh'
- fi
- if test -f 'ISPI/Makefile' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'ISPI/Makefile'\"
- else
- echo shar: Extracting \"'ISPI/Makefile'\" \(827 characters\)
- sed "s/^X//" >'ISPI/Makefile' <<'END_OF_FILE'
- X# 09/03/91 L. Bartz Internal Revenue Service Indianapolis District Office
- X#
- X# makefile for ISPI
- X#
- X# AFTER READING ISPI.DOC:
- X# Decide which ISPI features you want to enable, then uncomment the appropriate
- X# line for DEFINES or construct your own.
- X#
- X
- XCC = cc
- XCFLAGS =
- X# if on a Zilog running Sys V, such as Model 130 or "32-bit Upgrade", uncomment
- X# the following line
- X#CFLAGS = -Kfpe
- X
- X# by default, support for Sys V lp/lpsched
- XDEFINES = -DSYSTEM_V
- X
- X# mix or match, it's up to you
- X#DEFINES = -DEXTERN
- X#DEFINES = -DUUCP
- X#DEFINES = -DSEQUENT
- X#DEFINES = -DSYSTEM_V
- X#DEFINES = -DXFER
- X# if you define XFER, go into ispi.c and make sure XFERCMD is
- X# properly defined for your system
- X
- X# or more than one, like this:
- X#DEFINES = -DEXTERN -DUUCP -DSYSTEM_V -DXFER
- X
- XSHELL = /bin/sh
- X
- Xispi:
- X $(CC) $(CFLAGS) $(DEFINES) -o ispi ispi.c
- X
- END_OF_FILE
- if test 827 -ne `wc -c <'ISPI/Makefile'`; then
- echo shar: \"'ISPI/Makefile'\" unpacked with wrong size!
- fi
- # end of 'ISPI/Makefile'
- fi
- if test -f 'ISPIN/src/README' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'ISPIN/src/README'\"
- else
- echo shar: Extracting \"'ISPIN/src/README'\" \(72 characters\)
- sed "s/^X//" >'ISPIN/src/README' <<'END_OF_FILE'
- X## cd ../install and run 'make unsplit' to concatenate the split files.
- END_OF_FILE
- if test 72 -ne `wc -c <'ISPIN/src/README'`; then
- echo shar: \"'ISPIN/src/README'\" unpacked with wrong size!
- fi
- # end of 'ISPIN/src/README'
- fi
- if test -f 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/PLAIN' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/PLAIN'\"
- else
- echo shar: Extracting \"'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/PLAIN'\" \(675 characters\)
- sed "s/^X//" >'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/PLAIN' <<'END_OF_FILE'
- X# You'll need to adjust this to suit your switch's login herald and break
- X# sequence. In this example, the login herald contains the string "System?",
- X# and the switch's break sequence is defined as "<BREAK>bye". The switch's
- X# info messages (Tellabs) are "on" in order to allow ISPIN to detect error
- X# conditions.
- X#
- Xnetind1;/dev/tty22,/dev/contty;9600;-L;-Busy;-Bcongestion;-Bremote dte;-Bfound;-Dcleared;-Dpad>;-DSystem;-Q\w\032\dclr\r\d;-Q\d\K\pbye\d;System?-\p\K\pbye\r\p-System?;\ppacout\r\d\r\d;connect-\p\r\p-pad>;\p\r\d;pad>-\p\K\dclr\r\w-pad>;set recall=26\r\dconnect\s00000099999999\r\d;pened-\p\K\dclr\r\dset recall=26\r\dconnect\s00000099999999\r\w-pened;\d;;;
- X#
- END_OF_FILE
- if test 675 -ne `wc -c <'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/PLAIN'`; then
- echo shar: \"'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/PLAIN'\" unpacked with wrong size!
- fi
- # end of 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/PLAIN'
- fi
- if test -f 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_NOSHT' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_NOSHT'\"
- else
- echo shar: Extracting \"'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_NOSHT'\" \(708 characters\)
- sed "s/^X//" >'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_NOSHT' <<'END_OF_FILE'
- X# You'll need to adjust this to suit your switch's login herald and break
- X# sequence. In this example, the login herald contains the string "System?",
- X# and the switch's break sequence is defined as "<BREAK>bye". The switch's
- X# info messages (Tellabs) are "on" in order to allow ISPIN to detect error
- X# conditions.
- X#
- Xnetind1;/dev/contty,/dev/tty22;9600;-L;-Busy;-Bcongestion;-Bremote dte;-Bfound;-Dcleared;-Dpad>;-DSystem;-Q\L\L\032\dclr\r\d;-Q\d\K\pbye\d;System?-\p\K\pbye\r\p-System?;\ppacout\r\d\r\d;connect-\p\r\d-pad>;\p\r\d;pad>-\p\K\dclr\r\w-pad>;set recall=26\r\dconnect\s00000099999999\r\d;pened-\p\K\dclr\r\dset recall=26\r\dconnect\s00000099999999\r\w-pened;\033S\033F66\033C00\0339\015\033T\E;;;
- END_OF_FILE
- if test 708 -ne `wc -c <'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_NOSHT'`; then
- echo shar: \"'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_NOSHT'\" unpacked with wrong size!
- fi
- # end of 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_NOSHT'
- fi
- if test -f 'MANIFEST' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'MANIFEST'\"
- else
- echo shar: Extracting \"'MANIFEST'\" \(4758 characters\)
- sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
- X File Name Archive # Description
- X-----------------------------------------------------------
- X ISPI 1
- X ISPI/UUSTUFF.dr 1
- X ISPI/UUSTUFF.dr/SYS_III.dr 1
- X ISPI/UUSTUFF.dr/SYS_V.dr 1
- X ISPIN 1
- X ISPIN/h 1
- X ISPIN/src 1
- X ISPIN/install 1
- X ISPIN/install/lib_rtab 1
- X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR 1
- X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC 1
- X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/USER_ADDR 1
- X ISPIN/install/lib_rtab/CPU_CDN_PTR 1
- X ISPIN/install/lib_rtab/CPU_CDN_PTR/ADDR_SPEC 1
- X ISPIN/install/lib_rtab/CPU_CDN_PTR/USER_ADDR 1
- X ISPIN/install/lib_rtab/CPU_PTR 1
- X ISPIN/install/lib_rtab/CPU_SW_PTR 1
- X ISPIN/install/lib_rtab/CPU_SW_PTR/ADDR_SPEC 1
- X ISPIN/install/lib_rtab/CPU_SW_PTR/USER_ADDR 1
- X ISPIN/obj 1
- X ISPIN/doc 1
- X ISPIN/doc/OLD-DOCS 1
- X ISPIN/misc 1
- X ISPIN/misc/ISPIT.dr 1
- X ISPIN/misc/SUID.dr 1
- X ISPIN/misc/PC-LANtoISPIN 1
- X advert.doc 1
- X README 1
- X ISPI/ISPI.DOC 1
- X ISPI/ispi.c 2
- X ISPI/UUSTUFF.dr/SYS_III.dr/uustart.c 2
- X ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh 1
- X ISPI/UUSTUFF.dr/SYS_V.dr/uustart.c 2
- X ISPI/COPY+WARR.doc 3
- X ISPI/Makefile 1
- X ISPIN/h/common.h 3
- X ISPIN/h/iqueuer.h 3
- X ISPIN/h/ispin.h 3
- X ISPIN/h/nqspool.h 4
- X ISPIN/h/localcnfg.h 4
- X ISPIN/src/IQ.c 4
- X ISPIN/src/ISPINTRFCE.c 4
- X ISPIN/src/README 1
- X ISPIN/src/IQUEUER.c.aa 5
- X ISPIN/src/IQUEUER.c.ab 6
- X ISPIN/src/ISPIN.c.aa 7
- X ISPIN/src/ISPIN.c.ab 8
- X ISPIN/src/ISPIN.c.ac 9
- X ISPIN/src/ISPIN.c.ad 10
- X ISPIN/src/ISPIN.c.ae 11
- X ISPIN/src/ISPIN.c.af 5
- X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/PLAIN 1
- X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_NOSHT 1
- X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/C351_PLAIN 3
- X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_SHT 3
- X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/USER_ADDR/PLAIN 4
- X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/USER_ADDR/C351_PLAIN 4
- X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/USER_ADDR/QUME_NOSHT 4
- X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/USER_ADDR/QUME_SHT 4
- X ISPIN/install/lib_rtab/CPU_CDN_PTR/ADDR_SPEC/PLAIN 3
- X ISPIN/install/lib_rtab/CPU_CDN_PTR/ADDR_SPEC/C351_PLAIN 4
- X ISPIN/install/lib_rtab/CPU_CDN_PTR/ADDR_SPEC/QUME_NOSHT 4
- X ISPIN/install/lib_rtab/CPU_CDN_PTR/ADDR_SPEC/QUME_SHT 4
- X ISPIN/install/lib_rtab/CPU_CDN_PTR/USER_ADDR/PLAIN 4
- X ISPIN/install/lib_rtab/CPU_CDN_PTR/USER_ADDR/C351_PLAIN 4
- X ISPIN/install/lib_rtab/CPU_CDN_PTR/USER_ADDR/QUME_NOSHT 5
- X ISPIN/install/lib_rtab/CPU_CDN_PTR/USER_ADDR/QUME_SHT 5
- X ISPIN/install/lib_rtab/CPU_PTR/PLAIN 3
- X ISPIN/install/lib_rtab/CPU_PTR/QUME_SHT 5
- X ISPIN/install/lib_rtab/CPU_PTR/QUME_NOSHT 5
- X ISPIN/install/lib_rtab/README 5
- X ISPIN/install/lib_rtab/CPU_SW_PTR/ADDR_SPEC/C351_PLAIN 6
- X ISPIN/install/lib_rtab/CPU_SW_PTR/ADDR_SPEC/PLAIN 6
- X ISPIN/install/lib_rtab/CPU_SW_PTR/ADDR_SPEC/QUME_NOSHT 6
- X ISPIN/install/lib_rtab/CPU_SW_PTR/ADDR_SPEC/QUME_SHT 6
- X ISPIN/install/lib_rtab/CPU_SW_PTR/USER_ADDR/C351_PLAIN 6
- X ISPIN/install/lib_rtab/CPU_SW_PTR/USER_ADDR/PLAIN 6
- X ISPIN/install/lib_rtab/CPU_SW_PTR/USER_ADDR/QUME_NOSHT 6
- X ISPIN/install/lib_rtab/CPU_SW_PTR/USER_ADDR/QUME_SHT 6
- X ISPIN/install/rtab 8
- X ISPIN/install/Makefile 6
- X ISPIN/install/install.sh 6
- X ISPIN/install/split_it.sh 6
- X ISPIN/doc/LPinstall.doc 9
- X ISPIN/doc/NQinstall.doc 12
- X ISPIN/doc/TECH.doc 7
- X ISPIN/doc/rtab 10
- X ISPIN/doc/COPY+WARR.doc 11
- X ISPIN/doc/README.rel_2.2 12
- X ISPIN/doc/OVERVIEW 13
- X ISPIN/doc/wholeGNUdoc 12
- X ISPIN/doc/future.doc 6
- X ISPIN/doc/OLD-DOCS/bio 5
- X ISPIN/doc/OLD-DOCS/README.beta.1 7
- X ISPIN/doc/OLD-DOCS/README.beta.2 8
- X ISPIN/doc/OLD-DOCS/README.beta.3 13
- X ISPIN/doc/OLD-DOCS/README.rel_1.1 11
- X ISPIN/doc/OLD-DOCS/README.rel_1.2 12
- X ISPIN/doc/OLD-DOCS/README.rel_2.0 14
- X ISPIN/doc/OLD-DOCS/rel_1.2.fixes 7
- X ISPIN/doc/OLD-DOCS/rel_2.0.fixes 14
- X ISPIN/misc/ISPIT.dr/ISPIT.mail 14
- X ISPIN/misc/ISPIT.dr/IMPLEMENT 14
- X ISPIN/misc/ISPIT.dr/README 9
- X ISPIN/misc/ISPIT.dr/do_ispit.sh 8
- X ISPIN/misc/ISPIT.dr/eot_trap.c 6
- X ISPIN/misc/ISPIT.dr/interface 8
- X ISPIN/misc/ISPIT.dr/ispit.sh 7
- X ISPIN/misc/ISPIT.dr/passwd.entry 9
- X ISPIN/misc/ISPIT.dr/rtab.entry 11
- X ISPIN/misc/SUID.dr/lp_perms.sh 13
- X ISPIN/misc/SUID.dr/mail.msg 14
- X ISPIN/misc/wrdprfct.doc 14
- X ISPIN/misc/PC-LANtoISPIN/README 15
- X ISPIN/misc/PC-LANtoISPIN/lpr~lpd_ISPIN 15
- X MANIFEST 1 This shipping list
- END_OF_FILE
- if test 4758 -ne `wc -c <'MANIFEST'`; then
- echo shar: \"'MANIFEST'\" unpacked with wrong size!
- fi
- # end of 'MANIFEST'
- fi
- echo shar: End of archive 1 \(of 15\).
- cp /dev/null ark1isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 15 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-
-