home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume25 / ispin / part01 next >
Encoding:
Text File  |  1992-02-01  |  67.3 KB  |  1,585 lines

  1. Newsgroups: comp.sources.unix
  2. From: sir-alan!ispin!lbartz@iuvax.cs.indiana.edu (Larry Bartz)
  3. Subject: v25i112: Indianapolis Standard Printer Interface for Networked printers, Part01/15
  4. Sender: sources-moderator@pa.dec.com
  5. Approved: vixie@pa.dec.com
  6.  
  7. Submitted-By: sir-alan!ispin!lbartz@iuvax.cs.indiana.edu (Larry Bartz)
  8. Posting-Number: Volume 25, Issue 112
  9. Archive-Name: ispin/part01
  10.  
  11. [ I didn't test this, since I don't have or have access to a SysV machine
  12.   and this package does not work with the Berkeley print spooler.  From
  13.   reviewing the code it looks production-quality and if I were stuck with
  14.   SysV I would certainly consider this as a way to get remote print service.
  15.  
  16.   --vix ]
  17.  
  18.         Indianapolis Standard Printer Interface for Networked printers
  19.  
  20.                                   ISPIN
  21.  
  22.   ISPIN was developed by the Internal Revenue Service at Indianapolis. It
  23.   supports printing to networked printers through the native print spooler.
  24.   The author has secured permission through appropriate channels to release
  25.   ISPIN into the public domain.
  26.  
  27.  
  28.         /* WHY? */
  29.  
  30.         Why would you want to use ISPIN?
  31.  
  32.         - You've got more printers than you like hardwired to your cpu(s) 
  33.           already and your users want more. You'd like to be able to
  34.           support more printers while using fewer ttys than you do now.
  35.  
  36.         - You've got users at far-flung remote sites. Their printers are
  37.           "slaved" to a few terminals. This limits the access of those 
  38.           printers to those users who are using those particular terminals.
  39.           Everybody has their own "personal" printer - wasteful.
  40.  
  41.         - You have several cpus at your site, each with their own hardwired
  42.           printers. This limits your flexibility in balancing workload
  43.           across multiple systems. If you move an application to another
  44.           system, you've got to make sure the printers go with it.
  45.  
  46.         - You're bored. You need a new software toy.
  47.  
  48.         - If all users on all of your systems could access all of your
  49.           printers through all of your applications, life would be so
  50.           sweet. You'd do a lot less wiring/re-wiring and spend much
  51.           less time adding/deleting queue members and maintaining printer
  52.           selection menus.
  53.  
  54.         - You have already tried uux'ing print jobs from one system to
  55.           another to overcome the limitations imposed by hardwired printers.
  56.           But your users gripe about the delays, and you are sick of the
  57.           maintenance.
  58.  
  59.         - Your system(s) support(s) System V's lp/lpsched or 
  60.           (the old, Old, OLD) Zilog ZEUS 3.21 nq/xq/dqueuer.
  61.           (ISPIN does not, at present, support the Berzerkeley lpr.)
  62.  
  63.         - You're bored. You need a new software toy. Not just something
  64.           to diddle around with and clear the screen when the boss walks
  65.           by. Something that will save money, increase productivity, and
  66.           make you a systems administration/datacomm hero in your shop
  67.           (or in your own mind, like me).
  68.  
  69.  
  70.         /* HOW? */
  71.  
  72.         How could you implement ISPIN?
  73.  
  74.         1. Disconnect all/some printers from their hardwired-to-cpu 
  75.            connections.
  76.  
  77.         2. Connect all/some of your printers to a network, like:
  78.  
  79.            - statistical switching multiplexor, such as Tellabs, Equinox,
  80.              David, Gandolph, Mitron, whatever. (examples, NOT ENDORSEMENT!)
  81.  
  82.            or
  83.  
  84.            - X.25 with asynchronous pads
  85.  
  86.         3. Connect one or more ttys per cpu to the network. How many depends
  87.            only upon how many simultaneous print jobs you want to support.
  88.            In any case, it'll be far fewer ports than you use to support
  89.            hardwired printers.
  90.  
  91.         4. Install and configure ISPIN, the easiest and least time-consuming
  92.            step.
  93.  
  94.         5. Use your native print spooling software to add/delete, enable/
  95.            disable queue members. Also use native commands to issue and
  96.            cancel print requests.
  97.  
  98.  
  99.         /* HUH? */
  100.  
  101.         How does ISPIN work?
  102.  
  103.          - Your native spooler/queuer subsystem is fine for hardwired 
  104.            printers. It accepts enqueueing and cancellation requests, 
  105.            reports on its status, and allows you to add and remove queue
  106.            members (printers). When the spooler/queuer daemon determines
  107.            that it is time for a user's request to be satisfied, it
  108.            passes pertinent information to an executable or a shell script
  109.            which sends the print job out the designated tty to the printer.
  110.            This last process is known as the backend, or interface.
  111.  
  112.          - We substitute a call to the ISPIN executable for the backend.
  113.  
  114.          - The ISPIN process reads an entry for itself from a table
  115.            called "rtab". The rtab is intentionally similar to the uucp
  116.            L.sys file (or Systems file under HoneyDanBer uucp). There
  117.            is one rtab entry per virtual printer (any given physical printer
  118.            may be known or treated as several virtual printers).
  119.  
  120.          - The rtab entry contains the chat data (EXPECT/SEND) necessary
  121.            for the ISPIN process to negotiate through the network to the
  122.            printer. This data may also include printer initialization and
  123.            configuration commands which can be passed both before and after
  124.            the print job.
  125.  
  126.          - The rtab entry also contains a field which defines which tty(s)
  127.            (from one to eleven possible) this printer may be called through.
  128.  
  129.          - The ISPIN process passes a formatted message to a daemon process
  130.            known as IQUEUER. IQUEUER determines which of the requested
  131.            ttys is available, and issues a message back to the ISPIN, telling
  132.            it to proceed, using a particular tty. IQUEUER also maintains
  133.            lock files, thereby avoiding conflicts with uucp, cu, uugetty,
  134.            etc.
  135.  
  136.          - The ISPIN process, after receipt of its marching orders, sets
  137.            up the tty, negotiates the network, and sends the job to the
  138.            printer.
  139.  
  140.          - The rtab entry also contains flags and arguments which indicate
  141.            network and printer busy and fault conditions. The ISPIN process 
  142.            watches for these indications to determine whether it should
  143.            terminate and loop or quit.
  144.  
  145.          - All the while, the ISPIN process is under the complete control
  146.            of the native spooler/queuer. Its status (active or waiting) is
  147.            known to the native spooler/queuer daemon. It may be cancelled,
  148.            rescheduled, whatever by the native commands.
  149.  
  150.          - While the ISPIN is "active" with respect to the native queuer,
  151.            the IQUEUER daemon is notified by the ISPIN process of its
  152.            current phase of execution (startup, negotiating the network,
  153.            printing, disconnecting, looping). The current status of all
  154.            currently executing ISPIN processes may be queryied via another
  155.            executable, known as "iq". 
  156.  
  157.          - This all sounds very busy. But is is quite efficient and is
  158.            gratifyingly robust. If the printer is offline or busy, or
  159.            the network is unable to make the connection, the ISPIN will
  160.            loop and resubmit itself to the IQUEUER. If other jobs are
  161.            waiting for network access through the tty(s), the looper is
  162.            made to wait while other potentially successful jobs go ahead.
  163.            If a Greyhound takes out a telephone pole between the cpu and
  164.            the printer (or other mid-job disconnection), ISPIN detects
  165.            the fault and loops as above. Upon successful re-connection,
  166.            the job will be printed in its entirety.
  167.  
  168.          - ISPIN is not experimental software. It has been in production
  169.            use since June 1989 and is currently (Jan 1992) operational at 
  170.            approximately forty-five multiple-cpu sites.
  171.  
  172.     sir-alan!ispin!lbartz@iuvax.cs.indiana.edu (Larry Bartz)
  173.  
  174. #! /bin/sh
  175. # This is a shell archive.  Remove anything before this line, then unpack
  176. # it by saving it into a file and typing "sh file".  To overwrite existing
  177. # files, type "sh file -c".  You can also feed this as standard input via
  178. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  179. # will see the following message at the end:
  180. #        "End of archive 1 (of 15)."
  181. # Contents:  ISPI ISPI/UUSTUFF.dr ISPI/UUSTUFF.dr/SYS_III.dr
  182. #   ISPI/UUSTUFF.dr/SYS_V.dr ISPIN ISPIN/h ISPIN/src ISPIN/install
  183. #   ISPIN/install/lib_rtab ISPIN/install/lib_rtab/CPU_SW_CDN_PTR
  184. #   ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC
  185. #   ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/USER_ADDR
  186. #   ISPIN/install/lib_rtab/CPU_CDN_PTR
  187. #   ISPIN/install/lib_rtab/CPU_CDN_PTR/ADDR_SPEC
  188. #   ISPIN/install/lib_rtab/CPU_CDN_PTR/USER_ADDR
  189. #   ISPIN/install/lib_rtab/CPU_PTR ISPIN/install/lib_rtab/CPU_SW_PTR
  190. #   ISPIN/install/lib_rtab/CPU_SW_PTR/ADDR_SPEC
  191. #   ISPIN/install/lib_rtab/CPU_SW_PTR/USER_ADDR ISPIN/obj ISPIN/doc
  192. #   ISPIN/doc/OLD-DOCS ISPIN/misc ISPIN/misc/ISPIT.dr
  193. #   ISPIN/misc/SUID.dr ISPIN/misc/PC-LANtoISPIN advert.doc README
  194. #   ISPI/ISPI.DOC ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh ISPI/Makefile
  195. #   ISPIN/src/README
  196. #   ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/PLAIN
  197. #   ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_NOSHT
  198. #   MANIFEST
  199. # Wrapped by socrates@indy6 on Tue Jan 28 15:26:21 1992
  200. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  201. if test ! -d 'ISPI' ; then
  202.     echo shar: Creating directory \"'ISPI'\"
  203.     mkdir 'ISPI'
  204. fi
  205. if test ! -d 'ISPI/UUSTUFF.dr' ; then
  206.     echo shar: Creating directory \"'ISPI/UUSTUFF.dr'\"
  207.     mkdir 'ISPI/UUSTUFF.dr'
  208. fi
  209. if test ! -d 'ISPI/UUSTUFF.dr/SYS_III.dr' ; then
  210.     echo shar: Creating directory \"'ISPI/UUSTUFF.dr/SYS_III.dr'\"
  211.     mkdir 'ISPI/UUSTUFF.dr/SYS_III.dr'
  212. fi
  213. if test ! -d 'ISPI/UUSTUFF.dr/SYS_V.dr' ; then
  214.     echo shar: Creating directory \"'ISPI/UUSTUFF.dr/SYS_V.dr'\"
  215.     mkdir 'ISPI/UUSTUFF.dr/SYS_V.dr'
  216. fi
  217. if test ! -d 'ISPIN' ; then
  218.     echo shar: Creating directory \"'ISPIN'\"
  219.     mkdir 'ISPIN'
  220. fi
  221. if test ! -d 'ISPIN/h' ; then
  222.     echo shar: Creating directory \"'ISPIN/h'\"
  223.     mkdir 'ISPIN/h'
  224. fi
  225. if test ! -d 'ISPIN/src' ; then
  226.     echo shar: Creating directory \"'ISPIN/src'\"
  227.     mkdir 'ISPIN/src'
  228. fi
  229. if test ! -d 'ISPIN/install' ; then
  230.     echo shar: Creating directory \"'ISPIN/install'\"
  231.     mkdir 'ISPIN/install'
  232. fi
  233. if test ! -d 'ISPIN/install/lib_rtab' ; then
  234.     echo shar: Creating directory \"'ISPIN/install/lib_rtab'\"
  235.     mkdir 'ISPIN/install/lib_rtab'
  236. fi
  237. if test ! -d 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR' ; then
  238.     echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR'\"
  239.     mkdir 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR'
  240. fi
  241. if test ! -d 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC' ; then
  242.     echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC'\"
  243.     mkdir 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC'
  244. fi
  245. if test ! -d 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/USER_ADDR' ; then
  246.     echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/USER_ADDR'\"
  247.     mkdir 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/USER_ADDR'
  248. fi
  249. if test ! -d 'ISPIN/install/lib_rtab/CPU_CDN_PTR' ; then
  250.     echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_CDN_PTR'\"
  251.     mkdir 'ISPIN/install/lib_rtab/CPU_CDN_PTR'
  252. fi
  253. if test ! -d 'ISPIN/install/lib_rtab/CPU_CDN_PTR/ADDR_SPEC' ; then
  254.     echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_CDN_PTR/ADDR_SPEC'\"
  255.     mkdir 'ISPIN/install/lib_rtab/CPU_CDN_PTR/ADDR_SPEC'
  256. fi
  257. if test ! -d 'ISPIN/install/lib_rtab/CPU_CDN_PTR/USER_ADDR' ; then
  258.     echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_CDN_PTR/USER_ADDR'\"
  259.     mkdir 'ISPIN/install/lib_rtab/CPU_CDN_PTR/USER_ADDR'
  260. fi
  261. if test ! -d 'ISPIN/install/lib_rtab/CPU_PTR' ; then
  262.     echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_PTR'\"
  263.     mkdir 'ISPIN/install/lib_rtab/CPU_PTR'
  264. fi
  265. if test ! -d 'ISPIN/install/lib_rtab/CPU_SW_PTR' ; then
  266.     echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_SW_PTR'\"
  267.     mkdir 'ISPIN/install/lib_rtab/CPU_SW_PTR'
  268. fi
  269. if test ! -d 'ISPIN/install/lib_rtab/CPU_SW_PTR/ADDR_SPEC' ; then
  270.     echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_SW_PTR/ADDR_SPEC'\"
  271.     mkdir 'ISPIN/install/lib_rtab/CPU_SW_PTR/ADDR_SPEC'
  272. fi
  273. if test ! -d 'ISPIN/install/lib_rtab/CPU_SW_PTR/USER_ADDR' ; then
  274.     echo shar: Creating directory \"'ISPIN/install/lib_rtab/CPU_SW_PTR/USER_ADDR'\"
  275.     mkdir 'ISPIN/install/lib_rtab/CPU_SW_PTR/USER_ADDR'
  276. fi
  277. if test ! -d 'ISPIN/obj' ; then
  278.     echo shar: Creating directory \"'ISPIN/obj'\"
  279.     mkdir 'ISPIN/obj'
  280. fi
  281. if test ! -d 'ISPIN/doc' ; then
  282.     echo shar: Creating directory \"'ISPIN/doc'\"
  283.     mkdir 'ISPIN/doc'
  284. fi
  285. if test ! -d 'ISPIN/doc/OLD-DOCS' ; then
  286.     echo shar: Creating directory \"'ISPIN/doc/OLD-DOCS'\"
  287.     mkdir 'ISPIN/doc/OLD-DOCS'
  288. fi
  289. if test ! -d 'ISPIN/misc' ; then
  290.     echo shar: Creating directory \"'ISPIN/misc'\"
  291.     mkdir 'ISPIN/misc'
  292. fi
  293. if test ! -d 'ISPIN/misc/ISPIT.dr' ; then
  294.     echo shar: Creating directory \"'ISPIN/misc/ISPIT.dr'\"
  295.     mkdir 'ISPIN/misc/ISPIT.dr'
  296. fi
  297. if test ! -d 'ISPIN/misc/SUID.dr' ; then
  298.     echo shar: Creating directory \"'ISPIN/misc/SUID.dr'\"
  299.     mkdir 'ISPIN/misc/SUID.dr'
  300. fi
  301. if test ! -d 'ISPIN/misc/PC-LANtoISPIN' ; then
  302.     echo shar: Creating directory \"'ISPIN/misc/PC-LANtoISPIN'\"
  303.     mkdir 'ISPIN/misc/PC-LANtoISPIN'
  304. fi
  305. if test -f 'advert.doc' -a "${1}" != "-c" ; then 
  306.   echo shar: Will not clobber existing file \"'advert.doc'\"
  307. else
  308. echo shar: Extracting \"'advert.doc'\" \(7265 characters\)
  309. sed "s/^X//" >'advert.doc' <<'END_OF_FILE'
  310. X
  311. X
  312. X        Indianapolis Standard Printer Interface for Networked printers
  313. X
  314. X                                  ISPIN
  315. X
  316. X  ISPIN was developed by the Internal Revenue Service at Indianapolis. It
  317. X  supports printing to networked printers through the native print spooler.
  318. X  The author has secured permission through appropriate channels to release
  319. X  ISPIN into the public domain.
  320. X
  321. X
  322. X        /* WHY? */
  323. X
  324. X        Why would you want to use ISPIN?
  325. X
  326. X        - You've got more printers than you like hardwired to your cpu(s) 
  327. X          already and your users want more. You'd like to be able to
  328. X          support more printers while using fewer ttys than you do now.
  329. X
  330. X        - You've got users at far-flung remote sites. Their printers are
  331. X          "slaved" to a few terminals. This limits the access of those 
  332. X          printers to those users who are using those particular terminals.
  333. X          Everybody has their own "personal" printer - wasteful.
  334. X
  335. X        - You have several cpus at your site, each with their own hardwired
  336. X          printers. This limits your flexibility in balancing workload
  337. X          across multiple systems. If you move an application to another
  338. X          system, you've got to make sure the printers go with it.
  339. X
  340. X        - You're bored. You need a new software toy.
  341. X
  342. X        - If all users on all of your systems could access all of your
  343. X          printers through all of your applications, life would be so
  344. X          sweet. You'd do a lot less wiring/re-wiring and spend much
  345. X          less time adding/deleting queue members and maintaining printer
  346. X          selection menus.
  347. X
  348. X        - You have already tried uux'ing print jobs from one system to
  349. X          another to overcome the limitations imposed by hardwired printers.
  350. X          But your users gripe about the delays, and you are sick of the
  351. X          maintenance.
  352. X
  353. X        - Your system(s) support(s) System V's lp/lpsched or 
  354. X          (the old, Old, OLD) Zilog ZEUS 3.21 nq/xq/dqueuer.
  355. X          (ISPIN does not, at present, support the Berzerkeley lpr.)
  356. X
  357. X        - You're bored. You need a new software toy. Not just something
  358. X          to diddle around with and clear the screen when the boss walks
  359. X          by. Something that will save money, increase productivity, and
  360. X          make you a systems administration/datacomm hero in your shop
  361. X          (or in your own mind, like me).
  362. X
  363. X
  364. X        /* HOW? */
  365. X
  366. X        How could you implement ISPIN?
  367. X
  368. X        1. Disconnect all/some printers from their hardwired-to-cpu 
  369. X           connections.
  370. X
  371. X        2. Connect all/some of your printers to a network, like:
  372. X
  373. X           - statistical switching multiplexor, such as Tellabs, Equinox,
  374. X             David, Gandolph, Mitron, whatever. (examples, NOT ENDORSEMENT!)
  375. X
  376. X           or
  377. X
  378. X           - X.25 with asynchronous pads
  379. X
  380. X        3. Connect one or more ttys per cpu to the network. How many depends
  381. X           only upon how many simultaneous print jobs you want to support.
  382. X           In any case, it'll be far fewer ports than you use to support
  383. X           hardwired printers.
  384. X
  385. X        4. Install and configure ISPIN, the easiest and least time-consuming
  386. X           step.
  387. X
  388. X        5. Use your native print spooling software to add/delete, enable/
  389. X           disable queue members. Also use native commands to issue and
  390. X           cancel print requests.
  391. X
  392. X
  393. X        /* HUH? */
  394. X
  395. X        How does ISPIN work?
  396. X
  397. X         - Your native spooler/queuer subsystem is fine for hardwired 
  398. X           printers. It accepts enqueueing and cancellation requests, 
  399. X           reports on its status, and allows you to add and remove queue
  400. X           members (printers). When the spooler/queuer daemon determines
  401. X           that it is time for a user's request to be satisfied, it
  402. X           passes pertinent information to an executable or a shell script
  403. X           which sends the print job out the designated tty to the printer.
  404. X           This last process is known as the backend, or interface.
  405. X
  406. X         - We substitute a call to the ISPIN executable for the backend.
  407. X
  408. X         - The ISPIN process reads an entry for itself from a table
  409. X           called "rtab". The rtab is intentionally similar to the uucp
  410. X           L.sys file (or Systems file under HoneyDanBer uucp). There
  411. X           is one rtab entry per virtual printer (any given physical printer
  412. X           may be known or treated as several virtual printers).
  413. X
  414. X         - The rtab entry contains the chat data (EXPECT/SEND) necessary
  415. X           for the ISPIN process to negotiate through the network to the
  416. X           printer. This data may also include printer initialization and
  417. X           configuration commands which can be passed both before and after
  418. X           the print job.
  419. X
  420. X         - The rtab entry also contains a field which defines which tty(s)
  421. X           (from one to eleven possible) this printer may be called through.
  422. X
  423. X         - The ISPIN process passes a formatted message to a daemon process
  424. X           known as IQUEUER. IQUEUER determines which of the requested
  425. X           ttys is available, and issues a message back to the ISPIN, telling
  426. X           it to proceed, using a particular tty. IQUEUER also maintains
  427. X           lock files, thereby avoiding conflicts with uucp, cu, uugetty,
  428. X           etc.
  429. X
  430. X         - The ISPIN process, after receipt of its marching orders, sets
  431. X           up the tty, negotiates the network, and sends the job to the
  432. X           printer.
  433. X
  434. X         - The rtab entry also contains flags and arguments which indicate
  435. X           network and printer busy and fault conditions. The ISPIN process 
  436. X           watches for these indications to determine whether it should
  437. X           terminate and loop or quit.
  438. X
  439. X         - All the while, the ISPIN process is under the complete control
  440. X           of the native spooler/queuer. Its status (active or waiting) is
  441. X           known to the native spooler/queuer daemon. It may be cancelled,
  442. X           rescheduled, whatever by the native commands.
  443. X
  444. X         - While the ISPIN is "active" with respect to the native queuer,
  445. X           the IQUEUER daemon is notified by the ISPIN process of its
  446. X           current phase of execution (startup, negotiating the network,
  447. X           printing, disconnecting, looping). The current status of all
  448. X           currently executing ISPIN processes may be queryied via another
  449. X           executable, known as "iq". 
  450. X
  451. X         - This all sounds very busy. But is is quite efficient and is
  452. X           gratifyingly robust. If the printer is offline or busy, or
  453. X           the network is unable to make the connection, the ISPIN will
  454. X           loop and resubmit itself to the IQUEUER. If other jobs are
  455. X           waiting for network access through the tty(s), the looper is
  456. X           made to wait while other potentially successful jobs go ahead.
  457. X           If a Greyhound takes out a telephone pole between the cpu and
  458. X           the printer (or other mid-job disconnection), ISPIN detects
  459. X           the fault and loops as above. Upon successful re-connection,
  460. X           the job will be printed in its entirety.
  461. X
  462. X         - ISPIN is not experimental software. It has been in production
  463. X           use since June 1989 and is currently (Jan 1992) operational at 
  464. X           approximately forty-five multiple-cpu sites.
  465. END_OF_FILE
  466. if test 7265 -ne `wc -c <'advert.doc'`; then
  467.     echo shar: \"'advert.doc'\" unpacked with wrong size!
  468. fi
  469. # end of 'advert.doc'
  470. fi
  471. if test -f 'README' -a "${1}" != "-c" ; then 
  472.   echo shar: Will not clobber existing file \"'README'\"
  473. else
  474. echo shar: Extracting \"'README'\" \(9625 characters\)
  475. sed "s/^X//" >'README' <<'END_OF_FILE'
  476. X
  477. X
  478. X
  479. X        date   :  August 29, 1991
  480. X
  481. X        to     :       
  482. X
  483. X        from   :  Systems Administrator, Information Systems Division
  484. X                  Internal Revenue Service
  485. X                  Indianapolis District Office
  486. X
  487. X        subject:  Indianapolis Standard Printer Interface (for Network printers)
  488. X                  ISPIN
  489. X                  production release 2.2
  490. X
  491. X
  492. X
  493. X        *** *** *** *** *** *** INTRODUCTION *** *** *** *** *** *** *** ***
  494. X
  495. X        This is the current version of the production release of ISPIN.
  496. X        ISPIN.rel_2.2 differs from the 2.1 release only in its documentation,
  497. X        which has been modified to support a public release of ISPIN.
  498. X
  499. X        To date, ISPIN has been successfully installed and tested on these
  500. X        systems:
  501. X                                     AT&T  3B1
  502. X                                     AT&T  3B2600G
  503. X                                     CCI 6/32 MP   (CCI SysV)
  504. X                                     Compaq with Intel 80286 CPU
  505. X                                             (running XENIX)
  506. X                                     IBM PC/AT with Intel 80386 CPU
  507. X                                             (running XENIX)
  508. X                                     IBM PC/AT with Intel 80386 CPU
  509. X                                             (running SCO UNIX V.3.2)
  510. X                                     Dell 325 with Intel 80386-25 CPU
  511. X                                     (Interactive UNIX V.3.2)
  512. X                                     Prime EXL 50
  513. X                                     Pyramid 90x
  514. X                                     Pyramid 9810
  515. X                                     Pyramid MIS-4
  516. X                                     Sequent Balance B8 (DYNIX)
  517. X                                     Sequent Symmetry (DYNIX)
  518. X                                     Unisys 5000
  519. X                                     Zilog Model 31
  520. X                                     Zilog Model 32
  521. X                                     Zilog Model 130 (Rev J OS)
  522. X
  523. X        The networks upon which ISPIN has been tested so far include:
  524. X
  525. X                                     CDN (IRS X.25 network with async interface)
  526. X                                     Teltone/Tellabs Switch
  527. X                                     Gandolph Switch
  528. X                                     David Switch
  529. X                                     Mitron Switch
  530. X                                     Equinox Switch
  531. X                                     Neac Switch/PBX
  532. X
  533. X
  534. X        *** *** *** *** *** *** THIS TRANSMITTAL *** *** *** *** *** *** ***
  535. X
  536. X        
  537. X        This transmittal creates a directory named ISPIN.rel_2.2. 
  538. X
  539. X        ISPIN.rel_2.2 will contain two subdirectories, namely ISPI and ISPIN.
  540. X
  541. X
  542. X        *** *** *** *** *** *** ISPIN subdirectory *** *** *** *** *** *** ***
  543. X
  544. X        ISPIN contains the source code, install documents, and install scripts 
  545. X        for the ISPIN application. The ISPIN application serves as a BACKEND, 
  546. X        a network/printer interface for the native queuer/spooler. ISPIN
  547. X        currently supports the UNIX Sys V lp/lpsched spooler and the Zeus 3.21
  548. X        (Zilog) nq/dqueuer.
  549. X
  550. X        We have organized the directory ISPIN into subdirectories using
  551. X        standard names "doc" (for documentation files), "h" (for header
  552. X        files), "install" (where install scripts exist, and from which they
  553. X        must be executed), "obj" (where the executables will be placed as
  554. X        they are compiled), and "src" (where the source code resides).
  555. X
  556. X
  557. X
  558. X        *** *** *** *** *** *** ISPI subdirectory *** *** *** *** *** *** ***
  559. X
  560. X        The ISPI directory contains the freshest version of our ISPI
  561. X        application. ISPI is an application which serves as a FRONTEND,
  562. X        a user interface, for the native queuer/spoolers. ISPI currently
  563. X        supports the UNIX Sys V lp/lpsched spooler and the Zeus 3.21
  564. X        (Zilog) nq/dqueuer.
  565. X
  566. X        ISPI includes its own source code and documentation. We sent
  567. X        ISPI along because we have found it to be an extremely useful tool
  568. X        to support the native queuer/spoolers. If you have any version of
  569. X        ISPI previous to this one, please use this one as a replacement. The
  570. X        ISPI included with this transmittal supersedes the ISPI which
  571. X        accompanied the ISPIN.rel_2.1 release.
  572. X
  573. X        ISPIN and ISPI are TWO SEPARATE AND DISTINCT APPLICATIONS.
  574. X
  575. X        Neither depends upon the other for functionality. You may use ISPIN
  576. X        without ISPI. You may use ISPI without ISPIN.
  577. X
  578. X
  579. X
  580. X        *** *** *** *** *** *** ISPIN documentation *** *** *** *** *** ***
  581. X
  582. X        The documentation for this application is informal in style, and the
  583. X        code is overflowing with comments. If you don't have time and inclin-
  584. X        ation to read everything in the ISPIN.rel_2.2/ISPIN/doc directory,
  585. X        AT LEAST READ:
  586. X                        TECH.doc, OVERVIEW, and rtab
  587. X
  588. X        Several files in the ISPIN/doc/OLD-DOCS directory document the 
  589. X        design, development, testing, and implementation history of ISPIN.
  590. X
  591. X/****************************************************************************/
  592. X/*                                                                          */
  593. X/*  Copyright (C) 1991                                                      */
  594. X/*  Larry Bartz                                                             */
  595. X/*  Internal Revenue Service                                                */
  596. X/*  Indianapolis District Office                                            */
  597. X/*                                                                          */
  598. X/*  This program is free software; you can redistribute it and/or modify    */
  599. X/*  it under the terms of the GNU General Public License as published by    */
  600. X/*  the Free Software Foundation, version 1.                                */
  601. X/*                                                                          */
  602. X/*  This program is distributed in the hope that it will be useful,         */
  603. X/*  but WITHOUT ANY WARRANTY; without even the implied warranty of          */
  604. X/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           */
  605. X/*  GNU General Public License for more details.                            */
  606. X/*                                                                          */
  607. X/*  You should have received a copy of the GNU General Public License       */
  608. X/*  along with this program; if not, write to the Free Software             */
  609. X/*  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.               */
  610. X/*                                                                          */
  611. X/****************************************************************************/
  612. X
  613. X
  614. X        *** *** *** *** *** *** ISPIN installation *** *** *** *** *** *** ***
  615. X
  616. X        If you are installing this application under System V UNIX and
  617. X        the lp spooler, install per LPinstall.doc.
  618. X
  619. X        If you are installing this application under ZEUS 3.21 and its
  620. X        nq/xq/dqueuer queuer family, install per NQinstall.doc.
  621. X
  622. X
  623. X
  624. X        *** *** *** *** *** *** FEEDBACK, please *** *** *** *** *** *** ***
  625. X
  626. X        We are maintaining a list of sites which use ISPI/ISPIN and of
  627. X        contact persons at those sites. Unless you tell us, however, we will
  628. X        have no idea whether or not you actually use these applications
  629. X        in production. Our hope is that you will, but we will not 
  630. X        presume it. Please confirm installation and usage of ISPI/ISPIN
  631. X        via e-mail sent to me as shown at the end of this document.
  632. X
  633. X        Confirmed users will receive all subsequent update and informational 
  634. X        distributions. We will notify users of updates via an electronic mail 
  635. X        group, also shown below.  If possible, we would like your site to have
  636. X        a user included in this group. An administrative e-mail address which
  637. X        is aliased to an actual user(s) at your end is preferred (i.e.
  638. X        "dat1!sysadm" instead of "dat1!jdoe"). Please notify us of the e-mail
  639. X        address at which you would like to receive ISPIN information.
  640. X
  641. X        There is no bug-free software. Although the alpha site and beta site
  642. X        testing has been extensive, and ISPIN has been in heavy production
  643. X        use for two years, we recognize the possibility of bugs which
  644. X        have not yet been exposed. Please report them to me by electronic mail
  645. X        as decribed elsewhere.
  646. X
  647. X        If you install and use ISPI/ISPIN on hardware/software platforms which
  648. X        are not listed in this memo, please let me know. This software is 
  649. X        intended to be portable.
  650. X
  651. X
  652. X        
  653. X
  654. X
  655. X
  656. X                                                             Larry Bartz
  657. X
  658. X
  659. X|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
  660. X|  Larry Bartz                                                               |
  661. X|                                                                            |
  662. X|   UNIX/uucp e-mail:                                                        |
  663. X|                                                                            |
  664. X|      {uunet, iuvax}!sir-alan!ispin!lbartz                                  |
  665. X|      lbartz@ispin.UUCP                                                     |
  666. X|                                                                            |
  667. X|   IRS-private MMDF:                                                        |
  668. X|                                                                            |
  669. X|   lbartz@indy6                                                             |
  670. X|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
  671. END_OF_FILE
  672. if test 9625 -ne `wc -c <'README'`; then
  673.     echo shar: \"'README'\" unpacked with wrong size!
  674. fi
  675. # end of 'README'
  676. fi
  677. if test -f 'ISPI/ISPI.DOC' -a "${1}" != "-c" ; then 
  678.   echo shar: Will not clobber existing file \"'ISPI/ISPI.DOC'\"
  679. else
  680. echo shar: Extracting \"'ISPI/ISPI.DOC'\" \(25374 characters\)
  681. sed "s/^X//" >'ISPI/ISPI.DOC' <<'END_OF_FILE'
  682. X
  683. X
  684. X
  685. X
  686. XLast update May 8, 1991
  687. X
  688. X
  689. X             ISPI - Indianapolis Standard Printer Interface
  690. X
  691. X
  692. X       ISPI is a utility which provides a menu driven means of issuing
  693. X   a print command.  It may be used exclusively for the local system,
  694. X   or it may be used to issue print commands to other UNIX systems via 
  695. X   uucp, or it may be used to issue print commands to networked printers.
  696. X   The program was initially developed in order to eliminate printer menu 
  697. X   maintenance work.  In the past, each time a printer was added or removed 
  698. X   from a system we had to go through all applications on that system and 
  699. X   change each printer selection menu and its corresponding shell.  Also, 
  700. X   whenever we received a new application or moved an application from one 
  701. X   system to another, we had to perform this same process.  Neglecting this
  702. X   maintenance task resulted in inaccurate menus.  Therefore, we decided to
  703. X   develop one program which could be used by all applications to both
  704. X   choose a printer and issue a print command.
  705. X
  706. X      ISPI provides a menu selection for each printer that is defined in the
  707. X   printer configuration file.  ISPI also provides an option and mechanism 
  708. X   to print to a slave printer which automatically activates and deactivates 
  709. X   the terminal's auxiliary port.  Other menu selections include an option to 
  710. X   set the number of hard copies, and an option to view the file on the
  711. X   terminal prior to printing.  
  712. X
  713. X      Three of ISPI's selections are compile conditional (they will only be
  714. X   activated if requested at compile time).  One option provides for
  715. X   printing to other UNIX systems. Another allows for interface with
  716. X   ISPIN (Indianapolis Standard Printer Interface for Networked printers).
  717. X   The third optional menu selection allows the user to download the file
  718. X   from the host to a local system, such as a PC.
  719. X   These options, if not requested, are not referenced on the menu, nor are
  720. X   their respected areas of code used for the compilation.
  721. X
  722. X   This document details the implementation and use of the ISPI system.
  723. X
  724. X
  725. X
  726. X        ISPI reads the local system's printer configuration file and 
  727. X    produces a menu with an option for each printer.  ISPI also reads the
  728. X    first 20 characters of the comment line following each device (if it
  729. X    exists) and displays them prior to the device on the menu.  This may
  730. X    be used to show the type of printer and/or its location.  If a printer
  731. X    is moved or added to the system, modifying the config file is the only
  732. X    maintenance required to have the print menu up to date.  This resolves 
  733. X    the need for modifying multiple printer selection menus, and eliminates
  734. X    the chance of a printer menu becoming obsolete.
  735. X
  736. X        The following is a Zilog System III UNIX nq/dqueuer printer config-
  737. X    uration file (/usr/spool/queuer/config) and the menu ISPI will produce:
  738. X
  739. X#
  740. XQlpr,R,N,S
  741. X# line printer 1
  742. XD1,R,/dev/lp,/usr/lib/lp
  743. X#Draft   DP   rm. 420
  744. X#
  745. XQtext,R,N,S
  746. X# text spinwriter
  747. XD1,R,/dev/tty7,/usr/lib/text -T "9600 -nl"
  748. X#Letter  RM   rm. 505  
  749. X# spinwriter 2
  750. XD2,R,/dev/tty6,/usr/lib/text -T "9600 -nl"
  751. X#Letter  TX   rm. 437  
  752. X
  753. X                        INDY_1 Printer Selection Menu
  754. X                        ------ ------- --------- ----
  755. X
  756. X                        1.  Draft   DP   rm. 420  lpr:1
  757. X                        2.  Letter  RM   rm. 505  text:1
  758. X                        3.  Letter  TX   rm. 437  text:2
  759. X
  760. X                       55.  Slave Printer
  761. X                       66.  View File on Terminal
  762. X                       77.  Change Number of Copies - Currently 1
  763. X                       99.  Abort Without Printing
  764. X
  765. X
  766. X
  767. X
  768. X
  769. X      A system which doesn't use nq obviously would not have a config file 
  770. X   in the format of that read by nq's dqueuer.  For a system which uses lp, 
  771. X   an artificial config file must be created.  This config file must have 
  772. X   "LP" as the first non-white space characters in the file.  This tells 
  773. X   ISPI that an lp command must be formatted for this system.  When this 
  774. X   config file is read, each non-blank line that is not a comment line is 
  775. X   assumed to be a printer.  If a comment line exists following the printer, 
  776. X   it will be displayed to the left of the printer on the print menu.  The 
  777. X   following is an example of an artificial lp printer configuration file 
  778. X   (named "config") which is similar to the nq configuration file shown 
  779. X   above:
  780. X
  781. XLP
  782. X#
  783. Xlpr1
  784. X#Draft   DP   rm. 420
  785. X#
  786. Xtext1
  787. X#Letter  RM   rm. 505  
  788. Xtext2
  789. X#Letter  TX   rm. 437  
  790. X
  791. X
  792. X
  793. X
  794. X
  795. X                 STANDARD SELECTIONS FROM ISPI'S MAIN MENU
  796. X
  797. X
  798. X        The following items will always appear on ISPI's main menu:
  799. X
  800. X        For a local system, option 55 will be the slave printer.  If this
  801. X    option is chosen, the termcap environment variable (TERM) is read,
  802. X    and the appropriate escape sequences turn on the terminals' AUX port, 
  803. X    cat the file(s), and turn the AUX port off.  A static structure is 
  804. X    used in ispi.c to define the available termcaps and their on and off 
  805. X    escape sequences.  Current TERM variables which are recognized include
  806. X    v5, v55, and v65 for Visual Terminals, and d2 for VT100 emulators.
  807. X    These TERMs are located in the structure "term_types terminals" and
  808. X    may be modified to suit your site.  Additional TERMs may easily be 
  809. X    added. 
  810. X
  811. X        Option 66 allows the user to view the file(s) on the terminal.  
  812. X    On completion (or at any time the user wishes), the user is returned 
  813. X    to the main menu.
  814. X
  815. X        Option 77 allow the user to choose the number of hard copies.  A
  816. X    maximum of 10 copies is permitted.
  817. X
  818. X        Selection 99 aborts from the program with a non-zero exit status.
  819. X
  820. X
  821. X
  822. X
  823. X                Usage: ispi [-(Arguments)] [files...]
  824. X
  825. X
  826. X        Arguments for ISPI include:
  827. X
  828. X                  -m : mail notice to user when print is complete
  829. X                  -c : create copy
  830. X                  -B : print banner (no banner is the default)
  831. X                  -a : show all printers, regardless of group designation
  832. X
  833. X    The flags -m and -c are the same as they are in both nq and lp commands.
  834. X    Since no banner is the default for lp and banner is the default for nq,
  835. X    the -B flag is be used to specify banner.
  836. X
  837. X        In addition to the above flags, ISPI also has an argument unique to it-
  838. X    self.  The -s flag may be used in three cases: (1) where the user selects 
  839. X    the printer prior to generating output in which the file names are known,
  840. X    (2) the user wants to set the printer at the beginning of a session and use
  841. X    that printer for all prints or (3) when input must be taken from standard 
  842. X    input.
  843. X
  844. X    For example, a shell script prompts the user for the desired printer,
  845. X    generates a report via a time consuming ace program, and then sends the 
  846. X    report to the printer on its completion.  Using the -s option, this logic 
  847. X    may still be applied with only minor maintenance to the shell script.  When
  848. X    the -s argument is given to ISPI, the command produced is not executed,
  849. X    but printed to standard out.  This allows the user to "alias" a command
  850. X    to ISPI's output.  (We have found that "alias" works more reliably then
  851. X    "set" due to the slave printer option.  Escape characters and meta-
  852. X    characters are often used in the sequence of characters which toggle the
  853. X    AUX port which may cause set to bomb).  Note the following examples below:
  854. X
  855. X   
  856. X    #!csh    shell script using nq
  857. X    #
  858. X    echo -n "Enter the printer of your choice: "
  859. X    set dev = `gets`
  860. X    acego -q takes_all_day
  861. X    nq -nb -q $dev all_day_report 
  862. X
  863. X
  864. X    #!csh    shell script using ispi
  865. X    #
  866. X    alias print_it "`ispi -s all_day_report`"
  867. X    acego -q takes_all_day
  868. X    print_it
  869. X
  870. X
  871. X
  872. X
  873. X        Notice the script that uses ISPI aliases the print_it command prior
  874. X    to generating the report.  At the time ISPI is aliased as above, the menu
  875. X    driven options are presented to the user as in its regular usage.  After
  876. X    the user selects the printer, ISPI writes the desired print command to
  877. X    standard out, which is taken by the "alias" command.  For example, if a
  878. X    user chooses text:1 on the local system which uses nq, print_it will be 
  879. X    aliased to "nq -nb -q text:1 all_day_report".
  880. X
  881. X         A more effecient shell script would be wary of the user choosing
  882. X    option 99 - "Abort Without Printing".  When this option is chosen, ISPI
  883. X    aborts with a non-zero exit status.  This condition may be trapped with 
  884. X    the following code:
  885. X
  886. X
  887. X
  888. X
  889. X
  890. X    #!csh    enhanced shell script using ispi
  891. X    #
  892. X    alias print_it "`ispi -s all_day_report`"
  893. X    if ($status == 0) then
  894. X      acego -q takes_all_day
  895. X      print_it
  896. X    endif
  897. X
  898. X
  899. X
  900. X
  901. X        To set a printer for repetitive use, or to use standard in, the
  902. X    -s flag should again be used, but no file names should be provided.
  903. X    Again, alias may be used, but this time to set the printer name and
  904. X    type of print command (nq or lp).  For example: alias printer "`ispi -s`"
  905. X    will prepare the alias "printer" (which is set to the desired printer
  906. X    at runtime by the user) to take standard in.  Files may then be printed
  907. X    by the command "cat file_name | printer".
  908. X
  909. X
  910. X        File names may be passed to ISPI as command line arguments.  If
  911. X    no file names are present on the command line and the -s flag is not
  912. X    passed as an argument, the user is prompted for the file names.  If the
  913. X    -s argument is not used, the existence of the files are verified prior
  914. X    to issuing the command.  Files which exist are sent to the printer, and 
  915. X    files which do not exist cause the error message "ispi: (file_name) not 
  916. X    found".
  917. X    
  918. X
  919. X
  920. X
  921. X
  922. X
  923. X
  924. X                      PRINTING TO OTHER UNIX SYSTEMS
  925. X
  926. X
  927. X        When ISPI is compiled with a -DUUCP flag, selection 88, "Print
  928. X    File on Another System" is displayed on the main menu.  When chosen,
  929. X    this option displays a "Systems Selection Menu".  From this menu, any
  930. X    system on the UUCP network that has its printer configuration file
  931. X    represented on the local system may be accessed.
  932. X
  933. X       When item 88 is chosen from a printer selection menu, the following
  934. X   systems selection menu is generated:
  935. X
  936. X
  937. X
  938. X                                                                     
  939. X                       System Selection Menu                   
  940. X                       ------ --------- ----                  
  941. X                                                             
  942. X                 1.  INDY_2                                 
  943. X                 2.  INDY_3                                          
  944. X                 3.  INDY_4                                          
  945. X                 4.  INDY_5
  946. X                 5.  Return to Local System Menu (INDY_1)
  947. X
  948. X                                     Enter your choice: 
  949. X
  950. X
  951. X
  952. X
  953. X
  954. X       The systems included in this menu are those on the UUCP network which
  955. X   have their config file represented on the local system.   This represen-
  956. X   tation should be an actual copy of the config file located in the same
  957. X   directory as the local system's config file, named config(system nodename).
  958. X   The following is a listing of the files in /usr/spool/queuer on INDY_1
  959. X   which were used to create the above menu:
  960. X   
  961. X
  962. X   config    configINDY_2    configINDY_3    configINDY_4    configINDY_5
  963. X
  964. X
  965. X       The full pathname to the location of the config files is specified in
  966. X   the #define preprocessor constant CONFIG_PATH which is initialized at the
  967. X   beginning of ispi.c.  For systems that use lp, another path may be substi-
  968. X   tuted to store the config files.
  969. X
  970. X
  971. X
  972. X                  LIMITING NUMBER OF PRINTERS DISPLAYED
  973. X
  974. X********* ONE WAY
  975. X
  976. X       As of 08/07/90 revision and later, the user may also set an environ-
  977. X   mental variable, CONFIGDIR. The value of this variable will override the
  978. X   compile-time-defined CONFIG_PATH. The purpose of CONFIGDIR is to allow
  979. X   the Systems Administrator to set up various printer selection menus for
  980. X   various groups of users. This may be necessary for reasons of: security (so
  981. X   users of sensitive data may not inadvertently send jobs to insecure
  982. X   printers [aren't they all?]); convenience (so users don't have to wade
  983. X   through a menu filled with printers they never use); and practicality (only
  984. X   so many printers will fit on one screen display page).
  985. X
  986. X              Like so:
  987. X                       in C-shell:
  988. X                                   set configdir=/z/bin/config/ex_configdir
  989. X                                   setenv CONFIGDIR /z/bin/config/ex_configdir
  990. X
  991. X                       in Bourne shell:
  992. X                                   CONFIGDIR=/z/bin/config/ex_configdir
  993. X                                   EXPORT CONFIGDIR
  994. X
  995. X
  996. X
  997. X
  998. X
  999. X                                                 (see next page for better way)
  1000. X
  1001. X
  1002. X
  1003. X                  LIMITING NUMBER OF PRINTERS DISPLAYED
  1004. X
  1005. X********* BETTER WAY
  1006. X
  1007. X        As of the 01/01/91 revision, you may now optionally define which
  1008. X     user groups will be given a particular printer on their menu. This
  1009. X     eliminates the need to use the CONFIGDIR environmental variable and 
  1010. X     multiple printer configuration files. If a site decides to not use this
  1011. X     new capability, no change to the printer configuration file is needed.
  1012. X     If you wish for a printer to be only on a particular user group's print
  1013. X     menu, then add a SECOND comment line after the printer name in the 
  1014. X     configuration file in the form :
  1015. X
  1016. X     #GROUP groupnum1 groupnum2 ...
  1017. X               OR
  1018. X     #GROUP ALL
  1019. X
  1020. X     For Example :
  1021. X
  1022. Xtext1
  1023. X#Letter  RM   rm. 505  
  1024. X#GROUP 100 300 400
  1025. Xtext2
  1026. X#Letter  TX   rm. 437  
  1027. X#GROUP ALL
  1028. X
  1029. X     The above LP example only allows users who are in group 100, 300, or 400
  1030. X     to have the text1 printer appear on their print menu. All users will have
  1031. X     the printer text2 appear on their menu. (Putting #GROUP ALL is actually
  1032. X     optional since if no group comment line exists then all users see that 
  1033. X     printer on their menu.)
  1034. X     If you want superuser to have a particular printer on his/her menu, then
  1035. X     you would specify group 0 as one of the user groups. The following  
  1036. X     nq/dqueuer example does the same as the above LP example.
  1037. X
  1038. XQtext,R,N,S
  1039. X# text spinwriter
  1040. XD1,R,/dev/tty7,/usr/lib/text -T "9600 -nl"
  1041. X#Letter  RM   rm. 505  
  1042. X#GROUP 100 300 400
  1043. X# spinwriter 2
  1044. XD2,R,/dev/tty6,/usr/lib/text -T "9600 -nl"
  1045. X#Letter  TX   rm. 437  
  1046. X#GROUP ALL
  1047. X
  1048. X     Assigning printers to only certain user groups has two advantages. 
  1049. X     Users will only see printers which they might be interested in printing
  1050. X     to and not have other printers clutter their menu. Also, it can help 
  1051. X     prevent users from accidentally sending prints a hundred miles away to 
  1052. X     another POD/office. 
  1053. X
  1054. X     If you would like ispi to disregard the group designations in the config
  1055. X     file and show you ALL printers, then simply call ispi with the -a option. 
  1056. X     This will cause ispi to create a menu which lists all printers, regardless
  1057. X     of group.
  1058. X
  1059. X
  1060. X
  1061. X
  1062. X                             UUCP Considerations 
  1063. X
  1064. X
  1065. X        If ISPI is used to print a file from one system to another,
  1066. X    the UUCP package is invoked.  There are three events that may take
  1067. X    place which will initiate UUCP's system to system communication.
  1068. X
  1069. X
  1070. X    (1)  A request is made from the local system.
  1071. X
  1072. X         If this request cannot be accomplished when first initiated
  1073. X         (due to busy communication line, requested system not connected,
  1074. X         requested system down, etc...), the request will be queued on
  1075. X         the local system.
  1076. X
  1077. X    (2)  A call from a remote system to the local system is established.
  1078. X
  1079. X         Once the remote system has finished its request, it checks to
  1080. X         see if it is the destination of any of the local system's
  1081. X         requests. 
  1082. X
  1083. X
  1084. X    (3)  UUCP is explicitly requested to work on the queued requests.
  1085. X
  1086. X
  1087. X
  1088. X        Once a request has been queued, it will remain in the queuer until
  1089. X    one of the above events transpire.  Without an explicit call to work
  1090. X    on the queued requests, they are completely dependent on other 
  1091. X    user initiated activity (cases 1 and 2).  This may cause long waits 
  1092. X    between the command initiation and the actual printing.  This is parti-
  1093. X    cularly troublesome in the event of many requests queued at the same time.  
  1094. X    As the requests are being fulfilled, other request may have to be queued
  1095. X    due to busy communication lines.  To alleviate this bottle-necking of
  1096. X    print requests, we have written a daemon routine (uustart) which checks
  1097. X    every two minutes for unfulfilled requests.  If requests are present,
  1098. X    this routine attempts to establish communication to the remote system
  1099. X    and complete the print job.
  1100. X        Another consideration when transferring files from system to system
  1101. X    with UUCP is the amount of available free space in /usr.  Both the files
  1102. X    which are spooled on the local system and the files received from calling 
  1103. X    systems are stored in /usr until the the local system has completed its
  1104. X    share of the work.  We have increased /usr by 5000 blocks to accomodate
  1105. X    UUCP's file spooling.
  1106. X
  1107. X
  1108. X
  1109. X
  1110. X                           EXTERNAL PRINTING
  1111. X
  1112. X                            ISPI and ISPIN
  1113. X
  1114. X
  1115. X      ISPIN, or the Indianapolis Standard Printer Interface for Networked
  1116. X  printers, and ISPI are independent programs.  Neither program relies on
  1117. X  the other to function, but ISPI may be used with ISPIN. 
  1118. X
  1119. X      ISPI, when compiled with the -DEXTERN flag, will also support
  1120. X  ISPIN'S external (or networked) printing capabilities.   When ISPI is 
  1121. X  compiled with the -DEXTERN flag, menu selection "44. External Printer" is 
  1122. X  provided on the local system's menu.  If chosen, ISPI will locate and
  1123. X  read ISPIN's rtab file and find all entries denoted by the existence of
  1124. X  a \U somewhere in the entry.  These entries will be presented as interface
  1125. X  options.  After the user chooses the desired interface option, the user is 
  1126. X  prompted for an address.  When the entry is verified by the user, the 
  1127. X  command is formatted and passed to the native spooler, along with the 
  1128. X  address and interface information which is needed by ISPIN.
  1129. X
  1130. X       Under Zeus 3.21's nq/dqueuer spooler, all queue members
  1131. X   must be defined in the /usr/spool/queuer/config file (as explained 
  1132. X   in the ISPIN documentation).  To prevent the "external" printers 
  1133. X   from being displayed on ISPI's main menu, a separate queue may be
  1134. X   established for "external" printers. The queue name must be defined in
  1135. X   the #define EXTERNAL_QUEUE_NAME constant.  This simply lets ISPI 
  1136. X   know not to display any device that is a member of this queue on the 
  1137. X   main menu (for text:1, text is the queue member, 1 is the device 
  1138. X   name).
  1139. X
  1140. X      For more information concerning ISPIN, refer to ISPIN's documentation.
  1141. X
  1142. X
  1143. X
  1144. X
  1145. X                            
  1146. X                          DOWNLOADING FILES WITH ISPI
  1147. X
  1148. X    As more users access our systems from other computers (laptop, desktop,
  1149. Xworkstations, etc) we are more frequently asked to provide capabilities for
  1150. Xthose users to download files. In many cases, what the user wants to download
  1151. Xis the same file that would be printed via a printer selection menu.
  1152. X
  1153. X    In order to facilitate this process, we have added (as of 01/02/90) an
  1154. Xadditional feature to ISPI. This feature is enabled at compile time by includ-
  1155. Xing "-DXFER" in the compile line. An additional menu selection,
  1156. X
  1157. X                        "33.  Download File" 
  1158. X
  1159. Xwill appear on the ISPI menu.
  1160. X
  1161. X    The file (or files) specified in the ISPI command line will be transferred
  1162. Xto the user's local system via the command specified as the preprocessor
  1163. Xconstant, XFERCMD. A typical definition of XFERCMD would be:
  1164. X
  1165. X#define XFERCMD "/usr/local/bin/kermit -is"
  1166. X
  1167. XThe user is prompted to invoke the corresponding receiving command on the local
  1168. Xsystem.
  1169. X
  1170. XThe installer must modify the definition of XFERCMD to suit local needs (such
  1171. Xas full path to command, arguments) prior to compiling ISPI.
  1172. X
  1173. XIf the user's environment includes a value defined for a variable named
  1174. X"XFERCMD", the value of the environmental variable will supercede the compiled
  1175. Xin value for XFERCMD.
  1176. X
  1177. X
  1178. X
  1179. X
  1180. X
  1181. X
  1182. X
  1183. X                            ISPI INSTALLATION NOTES
  1184. X
  1185. X
  1186. X       The following is a list of items that affect the installation of
  1187. X   ISPI.  If necessary, some of items may need to be modified to meet
  1188. X   the needs of your site:
  1189. X
  1190. X
  1191. X   BASIC ISPI : 1) The #define TERM_ENV constant is what you call your
  1192. X                   terminal type (termcap) environment variable - it is 
  1193. X                   currently set to TERM.
  1194. X
  1195. X                2) The static structure "term_types terminals" houses known
  1196. X                   termcap names, and the escape sequences which turn
  1197. X                   the auxiliary port on and off.  Two basic types
  1198. X                   are included in this structure, and more are easily
  1199. X                   added.  The two types which are included are for
  1200. X                   Visual terminals (called by any of the following
  1201. X                   termcap names: v5, v55, v65) and VT100 emulators 
  1202. X                   (known to the program as the "d2" termcap).  The
  1203. X                   termcap name portion of this structure may need to
  1204. X                   be modified to the termcap names used at your site.
  1205. X
  1206. X                3) The #define CONFIG_PATH is located in two places,
  1207. X                   one for the System V compile, and one for non-System V
  1208. X                   compile.  This is the directory name of where the
  1209. X                   printer configuration file(s) are stored.  For the
  1210. X                   non-System V version, /usr/spool/queuer is currently
  1211. X                   set and should not need to be changed.  For System V,
  1212. X                   the current directory set is /z/bin/config.  This may
  1213. X                   be modified to the directory where the configuration
  1214. X                   file(s) are located.
  1215. X
  1216. X
  1217. X     UUCP
  1218. X     PRINTING : 1) To use this option, -DUUCP must be included in the
  1219. X                   compile line prior to the -o argument.
  1220. X
  1221. X                2) The UUCP Package must be installed on the local system
  1222. X                   and any system that the local system intends to print
  1223. X                   to.
  1224. X
  1225. X                3) Printer configuration files from the remote systems
  1226. X                   must be copied to the local system in the CONFIG_PATH
  1227. X                   directory and they must be named configremote_system_
  1228. X                   node_name (such as: configINDY_1 for system INDY_1's
  1229. X                   configuration file).
  1230. X
  1231. X
  1232. X     EXTERNAL
  1233. X     PRINTING : 1) To use this option, -DEXTERN must be included in the
  1234. X                   compile line prior to the -o argument.
  1235. X
  1236. X                2) The ISPIN Package must be installed on the local system.
  1237. X
  1238. X
  1239. X                            - Continue on Next Page -
  1240. X
  1241. X
  1242. X
  1243. X
  1244. X                            ISPI INSTALLATION NOTES
  1245. X
  1246. X
  1247. X     EXTERNAL
  1248. X     PRINTING 
  1249. X   (continued)  3) The location of ISPIN's RTAB directory must be
  1250. X                   defined in the #define RTAB_PATH constant.  This
  1251. X                   constant is defined in two locations; one for System
  1252. X                   V, one for non-System V.  The default locations are
  1253. X                   "/usr/spool/lp/ISPIN" for System V, and for other
  1254. X                   systems "/usr/spool/queuer/ISPIN" .
  1255. X
  1256. X                4) The queue name of your external printers should be
  1257. X                   defined in the #define EXTERNAL_QUEUE_NAME constant
  1258. X                   (currently set to "ext").
  1259. X
  1260. X
  1261. X     FILE
  1262. X     TRANSFER : 1) To use this option, -DXFER must be included in the
  1263. X                   compile line prior to the -o argument.
  1264. X
  1265. X                2) The XFERCMD constant may be modified to reflect your
  1266. X                   preferred local file transfer command. As shipped,
  1267. X                   the appropriate line of code reads:
  1268. X
  1269. X                   #  define XFERCMD             "/z/bin/kermit -is"
  1270. X
  1271. X                   Here are some other possible examples:
  1272. X
  1273. X                   #  define XFERCMD             "/usr/local/bin/ukermit -is"
  1274. X                   #  define XFERCMD             "/usr/local/bin/uxmodem -sb"
  1275. X                   #  define XFERCMD             "/usr/local/bin/uymodem -sb"
  1276. X
  1277. X                   Of course, the value you choose MUST correspond with
  1278. X                   software you have on your system and with the file transfer
  1279. X                   protocol in use by the calling user. When the user selects
  1280. X                   item 33 from the menu, the XFERCMD will be executed, with
  1281. X                   the filename as the argument. The user is prompted to
  1282. X                   execute the receiving process on the local machine.
  1283. X
  1284. X
  1285. X     SYSTEM V : 1) For System V machines, -DSYSTEM_V must be included
  1286. X                   in the compile line prior to the -o argument
  1287. X                   (except for Sequents).
  1288. X
  1289. X                2) An artificial printer configuration file named
  1290. X                   "config" must be located in the CONFIG_PATH
  1291. X                   directory.
  1292. X
  1293. X
  1294. X      SEQUENT : 1) For Sequents, -DSEQUENT must be included in the
  1295. X                   compile line prior to the -o argument.  Including
  1296. X                   -DSYSTEM_V is not necessary if SEQUENT is defined.
  1297. X
  1298. X
  1299. X
  1300. X
  1301. X COMPILE LINE : 
  1302. X
  1303. X   *                      +
  1304. Xcc [-DSEQUENT, -DSYSTEM_V [-f]] [-DUUCP] [-DEXTERN] [-DXFER] -o ispi ispi.c -s
  1305. X
  1306. X
  1307. X    * Arguments in [] are the optionals described above.  
  1308. X    + ZILOG System V machines will require the -f flag or its equivalent, -Kfpe
  1309. X      if the system does not possess floating point hardware.
  1310. X
  1311. END_OF_FILE
  1312. if test 25374 -ne `wc -c <'ISPI/ISPI.DOC'`; then
  1313.     echo shar: \"'ISPI/ISPI.DOC'\" unpacked with wrong size!
  1314. fi
  1315. chmod +x 'ISPI/ISPI.DOC'
  1316. # end of 'ISPI/ISPI.DOC'
  1317. fi
  1318. if test -f 'ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh' -a "${1}" != "-c" ; then 
  1319.   echo shar: Will not clobber existing file \"'ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh'\"
  1320. else
  1321. echo shar: Extracting \"'ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh'\" \(371 characters\)
  1322. sed "s/^X//" >'ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh' <<'END_OF_FILE'
  1323. X#!csh
  1324. X# This script is called by uustart. See documentation comments
  1325. X# in uustart.c        Larry Bartz, IRS Indianapolis D.O., 021987
  1326. Xset STATDIR = /usr/spool/uucp/.Status
  1327. Xforeach SYS(`uustat -q|cut -c1-7`)
  1328. X    if(-e $STATDIR/$SYS)then
  1329. X        (uustat -q|grep $SYS|grep Retry)> /dev/null
  1330. X        if($status == 0)then
  1331. X            rm -f $STATDIR/$SYS
  1332. X        endif
  1333. X    endif
  1334. X    /usr/lib/uucp/uucico -r1 -s$SYS
  1335. Xend
  1336. END_OF_FILE
  1337. if test 371 -ne `wc -c <'ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh'`; then
  1338.     echo shar: \"'ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh'\" unpacked with wrong size!
  1339. fi
  1340. chmod +x 'ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh'
  1341. # end of 'ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh'
  1342. fi
  1343. if test -f 'ISPI/Makefile' -a "${1}" != "-c" ; then 
  1344.   echo shar: Will not clobber existing file \"'ISPI/Makefile'\"
  1345. else
  1346. echo shar: Extracting \"'ISPI/Makefile'\" \(827 characters\)
  1347. sed "s/^X//" >'ISPI/Makefile' <<'END_OF_FILE'
  1348. X# 09/03/91   L. Bartz  Internal Revenue Service  Indianapolis District Office
  1349. X#
  1350. X# makefile for ISPI
  1351. X#
  1352. X# AFTER READING ISPI.DOC:
  1353. X# Decide which ISPI features you want to enable, then uncomment the appropriate
  1354. X# line for DEFINES or construct your own.
  1355. X# 
  1356. X
  1357. XCC = cc
  1358. XCFLAGS =
  1359. X# if on a Zilog running Sys V, such as Model 130 or "32-bit Upgrade", uncomment
  1360. X# the following line
  1361. X#CFLAGS = -Kfpe
  1362. X
  1363. X# by default, support for Sys V lp/lpsched
  1364. XDEFINES = -DSYSTEM_V
  1365. X
  1366. X# mix or match, it's up to you
  1367. X#DEFINES = -DEXTERN
  1368. X#DEFINES = -DUUCP
  1369. X#DEFINES = -DSEQUENT
  1370. X#DEFINES = -DSYSTEM_V
  1371. X#DEFINES = -DXFER
  1372. X# if you define XFER, go into ispi.c and make sure XFERCMD is 
  1373. X# properly defined for your system
  1374. X
  1375. X# or more than one, like this:
  1376. X#DEFINES = -DEXTERN -DUUCP -DSYSTEM_V -DXFER
  1377. X
  1378. XSHELL = /bin/sh
  1379. X
  1380. Xispi:
  1381. X    $(CC) $(CFLAGS) $(DEFINES) -o ispi ispi.c
  1382. X
  1383. END_OF_FILE
  1384. if test 827 -ne `wc -c <'ISPI/Makefile'`; then
  1385.     echo shar: \"'ISPI/Makefile'\" unpacked with wrong size!
  1386. fi
  1387. # end of 'ISPI/Makefile'
  1388. fi
  1389. if test -f 'ISPIN/src/README' -a "${1}" != "-c" ; then 
  1390.   echo shar: Will not clobber existing file \"'ISPIN/src/README'\"
  1391. else
  1392. echo shar: Extracting \"'ISPIN/src/README'\" \(72 characters\)
  1393. sed "s/^X//" >'ISPIN/src/README' <<'END_OF_FILE'
  1394. X## cd ../install and run 'make unsplit' to concatenate the split files.
  1395. END_OF_FILE
  1396. if test 72 -ne `wc -c <'ISPIN/src/README'`; then
  1397.     echo shar: \"'ISPIN/src/README'\" unpacked with wrong size!
  1398. fi
  1399. # end of 'ISPIN/src/README'
  1400. fi
  1401. if test -f 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/PLAIN' -a "${1}" != "-c" ; then 
  1402.   echo shar: Will not clobber existing file \"'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/PLAIN'\"
  1403. else
  1404. echo shar: Extracting \"'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/PLAIN'\" \(675 characters\)
  1405. sed "s/^X//" >'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/PLAIN' <<'END_OF_FILE'
  1406. X# You'll need to adjust this to suit your switch's login herald and break
  1407. X# sequence. In this example, the login herald contains the string "System?",
  1408. X# and the switch's break sequence is defined as "<BREAK>bye". The switch's
  1409. X# info messages (Tellabs) are "on" in order to allow ISPIN to detect error
  1410. X# conditions.
  1411. X#
  1412. 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;;;
  1413. X#
  1414. END_OF_FILE
  1415. if test 675 -ne `wc -c <'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/PLAIN'`; then
  1416.     echo shar: \"'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/PLAIN'\" unpacked with wrong size!
  1417. fi
  1418. # end of 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/PLAIN'
  1419. fi
  1420. if test -f 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_NOSHT' -a "${1}" != "-c" ; then 
  1421.   echo shar: Will not clobber existing file \"'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_NOSHT'\"
  1422. else
  1423. echo shar: Extracting \"'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_NOSHT'\" \(708 characters\)
  1424. sed "s/^X//" >'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_NOSHT' <<'END_OF_FILE'
  1425. X# You'll need to adjust this to suit your switch's login herald and break
  1426. X# sequence. In this example, the login herald contains the string "System?",
  1427. X# and the switch's break sequence is defined as "<BREAK>bye". The switch's
  1428. X# info messages (Tellabs) are "on" in order to allow ISPIN to detect error
  1429. X# conditions.
  1430. X#
  1431. 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;;;
  1432. END_OF_FILE
  1433. if test 708 -ne `wc -c <'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_NOSHT'`; then
  1434.     echo shar: \"'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_NOSHT'\" unpacked with wrong size!
  1435. fi
  1436. # end of 'ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_NOSHT'
  1437. fi
  1438. if test -f 'MANIFEST' -a "${1}" != "-c" ; then 
  1439.   echo shar: Will not clobber existing file \"'MANIFEST'\"
  1440. else
  1441. echo shar: Extracting \"'MANIFEST'\" \(4758 characters\)
  1442. sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
  1443. X   File Name        Archive #    Description
  1444. X-----------------------------------------------------------
  1445. X ISPI                       1    
  1446. X ISPI/UUSTUFF.dr            1    
  1447. X ISPI/UUSTUFF.dr/SYS_III.dr  1    
  1448. X ISPI/UUSTUFF.dr/SYS_V.dr   1    
  1449. X ISPIN                      1    
  1450. X ISPIN/h                    1    
  1451. X ISPIN/src                  1    
  1452. X ISPIN/install              1    
  1453. X ISPIN/install/lib_rtab     1    
  1454. X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR  1    
  1455. X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC  1    
  1456. X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/USER_ADDR  1    
  1457. X ISPIN/install/lib_rtab/CPU_CDN_PTR  1    
  1458. X ISPIN/install/lib_rtab/CPU_CDN_PTR/ADDR_SPEC  1    
  1459. X ISPIN/install/lib_rtab/CPU_CDN_PTR/USER_ADDR  1    
  1460. X ISPIN/install/lib_rtab/CPU_PTR  1    
  1461. X ISPIN/install/lib_rtab/CPU_SW_PTR  1    
  1462. X ISPIN/install/lib_rtab/CPU_SW_PTR/ADDR_SPEC  1    
  1463. X ISPIN/install/lib_rtab/CPU_SW_PTR/USER_ADDR  1    
  1464. X ISPIN/obj                  1    
  1465. X ISPIN/doc                  1    
  1466. X ISPIN/doc/OLD-DOCS         1    
  1467. X ISPIN/misc                 1    
  1468. X ISPIN/misc/ISPIT.dr        1    
  1469. X ISPIN/misc/SUID.dr         1    
  1470. X ISPIN/misc/PC-LANtoISPIN   1    
  1471. X advert.doc                 1    
  1472. X README                     1    
  1473. X ISPI/ISPI.DOC              1    
  1474. X ISPI/ispi.c                2    
  1475. X ISPI/UUSTUFF.dr/SYS_III.dr/uustart.c  2    
  1476. X ISPI/UUSTUFF.dr/SYS_V.dr/uuscout.csh  1    
  1477. X ISPI/UUSTUFF.dr/SYS_V.dr/uustart.c  2    
  1478. X ISPI/COPY+WARR.doc         3    
  1479. X ISPI/Makefile              1    
  1480. X ISPIN/h/common.h           3    
  1481. X ISPIN/h/iqueuer.h          3    
  1482. X ISPIN/h/ispin.h            3    
  1483. X ISPIN/h/nqspool.h          4    
  1484. X ISPIN/h/localcnfg.h        4    
  1485. X ISPIN/src/IQ.c             4    
  1486. X ISPIN/src/ISPINTRFCE.c     4    
  1487. X ISPIN/src/README           1    
  1488. X ISPIN/src/IQUEUER.c.aa     5    
  1489. X ISPIN/src/IQUEUER.c.ab     6    
  1490. X ISPIN/src/ISPIN.c.aa       7    
  1491. X ISPIN/src/ISPIN.c.ab       8    
  1492. X ISPIN/src/ISPIN.c.ac       9    
  1493. X ISPIN/src/ISPIN.c.ad      10    
  1494. X ISPIN/src/ISPIN.c.ae      11    
  1495. X ISPIN/src/ISPIN.c.af       5    
  1496. X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/PLAIN  1    
  1497. X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_NOSHT  1    
  1498. X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/C351_PLAIN  3    
  1499. X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/ADDR_SPEC/QUME_SHT  3    
  1500. X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/USER_ADDR/PLAIN  4    
  1501. X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/USER_ADDR/C351_PLAIN  4    
  1502. X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/USER_ADDR/QUME_NOSHT  4    
  1503. X ISPIN/install/lib_rtab/CPU_SW_CDN_PTR/USER_ADDR/QUME_SHT  4    
  1504. X ISPIN/install/lib_rtab/CPU_CDN_PTR/ADDR_SPEC/PLAIN  3    
  1505. X ISPIN/install/lib_rtab/CPU_CDN_PTR/ADDR_SPEC/C351_PLAIN  4    
  1506. X ISPIN/install/lib_rtab/CPU_CDN_PTR/ADDR_SPEC/QUME_NOSHT  4    
  1507. X ISPIN/install/lib_rtab/CPU_CDN_PTR/ADDR_SPEC/QUME_SHT  4    
  1508. X ISPIN/install/lib_rtab/CPU_CDN_PTR/USER_ADDR/PLAIN  4    
  1509. X ISPIN/install/lib_rtab/CPU_CDN_PTR/USER_ADDR/C351_PLAIN  4    
  1510. X ISPIN/install/lib_rtab/CPU_CDN_PTR/USER_ADDR/QUME_NOSHT  5    
  1511. X ISPIN/install/lib_rtab/CPU_CDN_PTR/USER_ADDR/QUME_SHT  5    
  1512. X ISPIN/install/lib_rtab/CPU_PTR/PLAIN  3    
  1513. X ISPIN/install/lib_rtab/CPU_PTR/QUME_SHT  5    
  1514. X ISPIN/install/lib_rtab/CPU_PTR/QUME_NOSHT  5    
  1515. X ISPIN/install/lib_rtab/README  5    
  1516. X ISPIN/install/lib_rtab/CPU_SW_PTR/ADDR_SPEC/C351_PLAIN  6    
  1517. X ISPIN/install/lib_rtab/CPU_SW_PTR/ADDR_SPEC/PLAIN  6    
  1518. X ISPIN/install/lib_rtab/CPU_SW_PTR/ADDR_SPEC/QUME_NOSHT  6    
  1519. X ISPIN/install/lib_rtab/CPU_SW_PTR/ADDR_SPEC/QUME_SHT  6    
  1520. X ISPIN/install/lib_rtab/CPU_SW_PTR/USER_ADDR/C351_PLAIN  6    
  1521. X ISPIN/install/lib_rtab/CPU_SW_PTR/USER_ADDR/PLAIN  6    
  1522. X ISPIN/install/lib_rtab/CPU_SW_PTR/USER_ADDR/QUME_NOSHT  6    
  1523. X ISPIN/install/lib_rtab/CPU_SW_PTR/USER_ADDR/QUME_SHT  6    
  1524. X ISPIN/install/rtab         8    
  1525. X ISPIN/install/Makefile     6    
  1526. X ISPIN/install/install.sh   6    
  1527. X ISPIN/install/split_it.sh  6    
  1528. X ISPIN/doc/LPinstall.doc    9    
  1529. X ISPIN/doc/NQinstall.doc   12    
  1530. X ISPIN/doc/TECH.doc         7    
  1531. X ISPIN/doc/rtab            10    
  1532. X ISPIN/doc/COPY+WARR.doc   11    
  1533. X ISPIN/doc/README.rel_2.2  12    
  1534. X ISPIN/doc/OVERVIEW        13    
  1535. X ISPIN/doc/wholeGNUdoc     12    
  1536. X ISPIN/doc/future.doc       6    
  1537. X ISPIN/doc/OLD-DOCS/bio     5    
  1538. X ISPIN/doc/OLD-DOCS/README.beta.1  7    
  1539. X ISPIN/doc/OLD-DOCS/README.beta.2  8    
  1540. X ISPIN/doc/OLD-DOCS/README.beta.3 13    
  1541. X ISPIN/doc/OLD-DOCS/README.rel_1.1 11    
  1542. X ISPIN/doc/OLD-DOCS/README.rel_1.2 12    
  1543. X ISPIN/doc/OLD-DOCS/README.rel_2.0 14    
  1544. X ISPIN/doc/OLD-DOCS/rel_1.2.fixes  7    
  1545. X ISPIN/doc/OLD-DOCS/rel_2.0.fixes 14    
  1546. X ISPIN/misc/ISPIT.dr/ISPIT.mail 14    
  1547. X ISPIN/misc/ISPIT.dr/IMPLEMENT 14    
  1548. X ISPIN/misc/ISPIT.dr/README  9    
  1549. X ISPIN/misc/ISPIT.dr/do_ispit.sh  8    
  1550. X ISPIN/misc/ISPIT.dr/eot_trap.c  6    
  1551. X ISPIN/misc/ISPIT.dr/interface  8    
  1552. X ISPIN/misc/ISPIT.dr/ispit.sh  7    
  1553. X ISPIN/misc/ISPIT.dr/passwd.entry  9    
  1554. X ISPIN/misc/ISPIT.dr/rtab.entry 11    
  1555. X ISPIN/misc/SUID.dr/lp_perms.sh 13    
  1556. X ISPIN/misc/SUID.dr/mail.msg 14    
  1557. X ISPIN/misc/wrdprfct.doc   14    
  1558. X ISPIN/misc/PC-LANtoISPIN/README 15    
  1559. X ISPIN/misc/PC-LANtoISPIN/lpr~lpd_ISPIN 15    
  1560. X MANIFEST                   1    This shipping list
  1561. END_OF_FILE
  1562. if test 4758 -ne `wc -c <'MANIFEST'`; then
  1563.     echo shar: \"'MANIFEST'\" unpacked with wrong size!
  1564. fi
  1565. # end of 'MANIFEST'
  1566. fi
  1567. echo shar: End of archive 1 \(of 15\).
  1568. cp /dev/null ark1isdone
  1569. MISSING=""
  1570. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; do
  1571.     if test ! -f ark${I}isdone ; then
  1572.     MISSING="${MISSING} ${I}"
  1573.     fi
  1574. done
  1575. if test "${MISSING}" = "" ; then
  1576.     echo You have unpacked all 15 archives.
  1577.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1578. else
  1579.     echo You still need to unpack the following archives:
  1580.     echo "        " ${MISSING}
  1581. fi
  1582. ##  End of shell archive.
  1583. exit 0
  1584.  
  1585.