Columns


On The Networks

Archie At Your Service

Sydney S. Weinstein


Sydney S. Weinstein, CDP, CCP is a consultant, columnist, author, and president of Datacomp Systems, Inc., a consulting and contract programming firm specializing in databases, data presentation and windowing, transaction processing, networking, testing and test suites, and device management for UNIX and MS-DOS. He can be contacted care of Datacomp Systems, Inc., 3837 Byron Road, Huntingdon Valley, PA 19006-2320 or via electronic mail on the Internet/Usenet mailbox syd@DSI.COM (dsinc!syd for those who cannot do Internet addressing).

McGill University's School of Computer Science is operating a new network service, running under "Archie," the Archive Server Listing Service. Archie lists which sites on the Internet keep which sources. In addition, Archie can tell you if sources exist to solve a particular problem. Archie will search on any part of the program description, site, or filenames. Searches can be limited via pattern or exact matches. Search results can be winnowed down and the results listed immediately, or returned via electronic mail.

Access to Archie is via one of three methods. Those with direct Internet connections should open a telnet session to quiche.cs.mcgill.ca and log in as archie. The program will start automatically. On-line directions explain how to print out a manual or view a short subset of the commands. Archie is very easy to use. If you just want to retrieve the data for local processing, use FTP and retrieve the raw data files.

Those who cannot directly connect to the Internet, but can send electronic mail, can access Archie using Archie's electronic mail access method. This includes those who use gateways to access Internet electronic mail (such as ATTMAIL, MCI-Mail, and CompuServe). The address is archie@cs.mcgill.ca. For a current set of instructions, send the single-word message help and Archie will reply. If you do not get a reply in a day or so, use the PATH command to specify how to route a message from Archie to your site.

Archie currently tracks over 600 archive sites and over 2,600 programs. For more details on how Archie works add your name to the mailing list, archie-1@cs.mcgill.edu.

Yes, It Passed

A new group comp.sources.reviewed has issued posting guidelines and a call for reviewers. Several reviewers have been selected and some sources have been submitted, but as of the writing the new group has yet to see past any sources.

Rich Gets Married

There will be a slight pause in comp.sources.unix as Rich Salz, its moderator, takes time out for his wedding. He promises that there is some good stuff in the queue waiting for his return. Before leaving, however, he did post sixteen collections — I'll just list the highlights here.

Do you send a large number of faxes? Apparently Klaus Schallhorn <cnix!klaus> does. He wrote faxpax, a special spooling system, for sending fax transmissions. An electronic mail-to-fax conversion system, faxpax supports aliases and distribution lists as well as special header pages. It can even balance the load between a set of fax modems. Current limitations relate to the type of fax modem supported and the limited choices of fonts. However, the author states that it should be easy to extend the package to overcome either of these problems. Faxpax is Volume 24, Issues 39-43.

A perennial favorite is the Hewlett Packard reverse-polish notation-style calculator. Arnold Robbins <arnold@audiofax.com> has provided his version of the HP calculator in Volume 24, Issue 45. This implementation uses both lex and yacc to implement its parser. While the stack on a real HP calculator is limited to four registers, Robbins' version sports a stack 100 registers deep. In addition to the normal +, --, *, / and power functions, some logical operators are also supported.

Rich Salz <rsalz@bbn.com> submitted one of his own this time. The Newsgate programs link RFC-822 electronic mail messages with RFC-1076 Usenet News articles, creating a gateway between a mailing list and a newsgroup. With the proper set of mail aliases and Usenet News sys file entries it is possible to build any set of moderated, unmoderated, one-way or bi-directional gateways between any set of mailing lists and news groups. Newsgate is Volume 24, Issues 51-54.

Kevin Braunsdorf <ksb@cc. purdue.edu> submitted several postings. The first, pucc-lib, is a library of utilities used by the other postings. It includes: libopt(3L), a command-line parser; maketd(1L), a makefile editor to update transitive dependencies; and srtunq(3L), an in memory string sort. pucc-lib is Volume 24, Issues 55 and 56.

To use this library of tools Kevin also submitted pucc-mk, a make-like program that expects each input file to contain its own processing command. This self-descriptive technique is useful for objects like manual pages where it would be wasteful to maintain a separate makefile for the hundreds of manual pages on a system. pucc-mk looks for commands embedded in the comments. If none are found, then a default set, as with make, are used. The package also includes a manual-page installer that replaces catman and makewhatis. pucc-mk is Volume 24, Issues 57-62.

Kevin also submitted pucc-install, the product-installation system used at Purdue. This three-part replacement for the install command includes: install(1L), which will update a file or directory with a guaranteed backup; instck(1L), which looks for improperly installed files; and purge(8L), which removes outdated backup copies of installed programs. install will check for improper permissions and violation of security issues. If needed, it also runs strip on binaries and ranlib on libraries. pucc-install is Volume 24, Issues 63-69. Also included as Issue 70 is pucc-rmprog, a utility that warns users of an impending product removal, and then schedules the removal via install. A companion program mvprog will rename instead of remove the product.

Finally, Keven's pucc-turnin submission, which contains turnin(1L) and project(1L), provides administration of electronic submissions for a large number of classes. The tools may be used in any course which requires students to submit projects to an instructor. pucc-turnin is Volume 24, Issues 71 and 72.

If the current problems with patents and compression algorithms haven't overwhelmed you, check out Dan Bernstein's <brnstnd@nyu.edu> yabbawhap (Volume 24 Issues 73-76). This package produces two sets of programs. yabba and unyabba use Y compression. whap and unwhap use AP compression. AP and Y compression are typically 10 to 20 percent more effective than LZW compression in the same amount of memory. Y coding, unlike LZW or AP is not patented and can be used freely. whap and unwhap run at about the same speed as the LZW algorithm used by the UNIX compress command. yabba and unyabba are about two to three times slower.

Henry Spencer <henry@zoo.toronto.edu>, one of the authors of the C News system (named not for the language C, but rather for its birth position, just after the B News system, which followed the A news system) submitted a "newer, cleaner, more versatile replacement" for one of his old standbys. Tarx, Volume 24, Issue 77, will read and salvage information from a damaged UNIX tar-format archive. Tarx will use pattern-matching to identify header blocks and will attempt to ignore bad checksums, read errors, and other problems.

Sudji Husodo <sudji@indo.-intel.com> has submitted sysVr4386slip, a SLIP driver and related utilities for UNIX System V/386 Release 4.0. SLIP (Serial Line Internet Protocol) is a protocol that lets you run IP connections over a standard serial line. It can be used to connect two machines together or two entire networks together. The utilities include slattach to link the SLIP streams driver to the serial port and the IP driver to the SLIP driver; slhangup and slhangupd to process hangup messages; and dialslip to allow hosts to dial in and start SLIP sessions. sysVr4386slip is Volume 24, Issues 78-81.

If your UNIX system requires you to enter the type of terminal you are using each time you log in, try qterm from Michael Cooper <mcooper@usc.edu>. Version 5.0 is Volume 24 Issues 82 and 83. qterm queries the terminal for its type (using the message reply command now available on many terminals) and reports the appropriate termcap/terminfo name on stdout.

Do you run a command every few seconds to check on the status of a program or the results in a file? Tony Rems' <rembo@unisoft.com> watch (Volume 24, Issue 84) uses curses to display the current time and the output of a command run repeatively every n seconds.

Dave Regan <regan@jacobs.-cs.orst. edu> submitted untic2 (Volume 24, Issue 86), an update to untic, which decompiles System V terminfo description files into a format that is suitable for editing and recompiling into other terminfo descriptions. The format is compatible with the AT&T program infocmp. This update supports all of the current terminfo characteristics.

misc Overflows

Kent Landfield, the moderator of comp.sources.misc must have streamlined the process of producing postings. The group has posted over fifty packages comprising more than ten megabytes. Some of the highlights:

A simple UNIX Network daemon, rwhod, provides a database of all users logged onto any node in the network. The traffic produced by the daemon grows very rapidly with network size, many larger sites disable the daemon entirely, which "breaks" the rwho and ruptime commands. Rich Salz <rsalz@bbn.com> (he even submits postings to comp.sources.misc), has contributed lwho, a low cost rwho-type program that uses NFS to store the information on a common spool area. The user program then reads this common area and reports the desired information to the user.lwho is Volume 17, Issue 42.

Mike Bell <mb@sparrms.ists.ca> has created cmail, a compression method for electronic mail. This program is useful for those modems that do not support compression internally, or for those where the RS-232 connection cannot run as fast as the compression would allow. (A Telebit with compression enabled needs data at over 30,000 bps, but the RS-232 port on the Telebit is limited to 19,200.) This package provides off-line compression, similar to that used by Usenet News. cmail is Volume 17, Issue 44.

Looking for the right on-line manual page on your System V UNIX system and can't quite remember its name? Miss the whatis and apropos commands from the BSD-style UNIX systems? Then Bud Hovell's <bud@mtek.com> manlist is what you need. It provides a list of all available manual pages by section, keyword, or in total. It expects the manuals to be under a cat[1-8]/man[1-8] hierarchy. manlist is Volume 17, Issue 63.

Bill Norcott <norcott@databs.-enet.dec.com> was so impressed by Alvin Park's IOstone program (which tests random access performance of disk systems) that he wrote IOzone which tests the sequential performance of disks. IOzone is usable on UNIX, VMS, and DOS and supports variable-sized records and files. IOzone is Volume 17, Issue 65.

John Kercheval <johnk@wrq.com> has written a regular expression globbers (UNIX sh-style wild-card match routine) that replaces most of the recursing with linear loops. The result is relatively fast, especially for patterns with wild cards that do not match. regex is Volume 17, Issue 69.

Many of the available C function-prototype generators, because they exploit simple pattern-matching heuristics, can get confused by complex function declarations. Chin Huang <contact!cthuang> has updated his cproto package with features added from Eric Smith's mkptypes package. The new release uses a yacc-generated parser yet avoids reimplementing the entire C compiler by stripping out all the code between the braces. Though the prior version was released in comp. sources.unix, this version is in comp.sources.misc as Volume 17, Issues 70 and 71, with patches in Volume 17, Issue 78 and Volume 18, Issue 6.

Need to control user access by time of day, tty line, or day of the week? Tony Field created login, a replacement for the System V/386 style login program that provides not only the standard user-access control but also the ability to restrict user-access rights based on date and time, terminal line, and days of the week.login is Volume 17, Issue 76.

Continuing on the past thread of posting programs to assist with handling the postings from the source newsgroups, Fred Walter <grwalter@watfun.waterloo.edu> has contributed newsbreak version 1.12 (Volume 17 Issue 80).newsbreak will automatically assemble the pieces of postings in the comp. sources and comp.binaries groups by performing the unshars and uudecodes needed to reconstruct the original files. newsbreak uses the Archive-name: header to determine the subdirectory for the resulting files. Recent changes include support for Xenix 386 and for the binary formats used by comp.binaries.ibm.pc.

A tool that I use frequently has been updated. Bill Randle <billr@saab.cna.tek.com> submitted version 2.2 of calentool, a SunView-based day/week/month/year-at-a-glance calendar tool for Sun workstations. An XView (for non-Suns) port of this version is underway. The posting gives directions on how to get the XView port of the prior (2.0) version. With calentool a user may view a single day's appointments and notes, a week's worth with abbreviated messages, or a month's or year's appointment flags. calentool also includes sun and moon phase information for each day. calentool is Volume 17 Issues 82-104.

If we gave awards, Dave Allen <allen@viewlogic.com> would easily capture "most unusual posting" for his scientific planet generator, planet. This program uses geological models of planetary cooling and continental drift to generate realistic-looking maps of imaginary worlds. This posting includes considerable documentation on how he used the model to create the program as well as some sample input and output files. The package includes tec, a continental drift simulator, clim, a climatic generator, and globe, which computes and displays the rotating planet. planet is Volume 18, Issues 1-4.

Chess enthusiasts may want Henry Thomas's notation package from Volume 18, Issues 12-14. Thomas's program reads chess game transcripts (in either full algebraic or shortened format) and constructs an image of the board after any move. The image can be output in ASCII, PostScript, or nroff formats. The program also supports the gnuan and xboard formats and is multilingual for piece identification.

The largest posting this time is the latest release of Larry Wall's <lwall@netlabs.com> Perl program. The current, and finally documented (Larry wrote a book for this version, literally), version is 4.003. (It was posted already at patchlevel 3.) Peri is a language that combines some of the features of C, sed, awk, and the UNIX shell into a single extensible command language. New in version 4 are support for external C subroutines (to allow local extensions) and full support for the socket interface. It is well worth your effort to obtain this posting, especially now that Perl also has been ported to both MS-DOS and OS/2. This posting also includes configure, a giant shell script, written by a Perl program called metaconfig. configure uses an interesting new hinting process. Perl 4.003 is Volume 18, Issues 19-54.

Another large posting is the latest release of the Mail Users Shell (mush). mush is a Mail User Agent (MUA) that is designed to manage electronic mail on UNIX systems. A MUA is used to read, sort, edit, store, or send electronic mail and is separate from the Mail Transport Agent (MTA) that performs the actual delivery. mush provides three interfaces: line, curses-based screen, and Sunview-window-based (GUI). mush is very flexible and supports a very large command set. mush 7.2.2 is Volume 18 Issues 58-79.

Shells, like editors, each have their cult followings and orthodox defenders. One shell is even called "the bourne again shell" (bash) as a play on words showing its derivation from Steven Bourne's shell used by UNIX System V (/bin/sh). A new entrant to join the field is zsh from Paul Falstad <pfalstad@phoenix.princeton.edu>, a super-set of the more modern Korn shell (ksh). Falstad's zsh also adds many features of the c-shell from the Berkeley Software Distribution. zsh supports command-line editing, key binding, command/file name completion, spelling correction and monitoring/prompting options from the tcsh version of the c-shell, the command syntax of ksh and several of the feature extensions from bash. zsh also provides improved globbing (the name given to wild card expansion in the old original UNIX Version 6 shell), global aliases, support for directory abbreviations in prompts, and an editor for shell variables as well as commands. zsh currently has many BSD-only syntaxes and functions, but the author is interested in porting it to other UNIX variants. zsh is Volume 18, Issues 84-98 with patch 1 being Volume 18, Issues 99 and 100 and patch 2 being Volume 19, Issues 67-72.

Eric Allman <eric@berkeley.edu>, Peter da Silva <peter@ferranti.com>, and Brad Appleton <brad@ssd.csd.harris.com> have collaborated to evolve Eric's parseargs library into a formidable package for handling comman- line arguments. parseargs is more than another getopt replacement. Iit will not only split the command line into its tokens but will also assign the variables their values, prompt the user for missing arguments, allow keywords as well as flags, and obtain default values from environment variables. It can also be changed at runtime to support the command syntaxes of UNIX, VAX/VMS, MS-DOS, OS/2, or AmigaDOS. parseargs is Volume 17, Issues 45-57 with patch 1 in Volume 17, Issue 58, patch 2 in Volume 17, Issue 73, patch 3 in Volume 17, Issue 75 and patch 4 in Volume 18 Issues 101-104.

The last large submission is an update to the dmake utility, now at version 3.7. Unlike other makes, dmake supports significantly enhanced macro facilities, enhanced inference algorithms, file-system transversal (both during inference and during the make), parallel makes (on those architectures that support it), attributed targets, and text diversions. Version 3.7 supports many more operating systems, fixes a memory bug, and enhances the macro expansion facilities. dmake is Volume 19, Issues 22-58 with patch 1 in Volume 19, Issues 59-61.

One tool under System V UNIX that did not provide the same amount of information as easily as the BSD tool has been df. Warren Tucker <wht@n4hgf.mt-park.ga.us> submitted a revised df (disk fre- space reporting) utility. Then with the help Paul Slootman <slootman@dri.nl> he ported it for use with System V Release 4, remedying many of the shortcomings of the standard System V df. The revised version (posted as Volume 19, Issue 4) reports the file-system name, mount point, disk space (total, free, used, and per cent used), and inodes (total, free, used, and per cent used) all in a tabular form. This version will even adjust the reported percentage statistics for partitions that are considered "full" at 90 percent capacity.

Kent, the moderator of comp.sources.misc, has added two of his own. First he has updated his source-archiving tools. These tools maintain an archive of the articles posted to the comp.sources groups and support the Archive-Name: header as well as the comp.archives auxiliary headers. New in version 2.0 are support for compressed files, accepting the input from stdin, and support for the NNTP news transport system (to allow the archives to be stored on remote systems). The new version is Volume 17, Issues 17-22. Patch 1 in Volume 19, Issues 19-21 adds support for the Md4 signature (see the next paragraph), better configuration, and several bug fixes.

Second, Kent has posted a verifier to enable checking that netnews articles have not been corrupted in transit. Md4tools consists of a fingerprinter, hashmd4, that will add the X-Md4-Signature: header to the article and a verification tool, checkmd4, that will check to see if the article is intact. Md4, as specified in RFC1186, is a 128-bit fingerprint computed from an arbitrary-length input. Kent has started to use Md4 signatures in Volume 19 of the archives. Md4tools is Volume 19, Issues 17 and 18.

Game Updates Galore

Tired of needing a giant computer system to run the game postings reviewed in this column? Herve Soulard <soulard@fantasio.inria.fr> has ported the Boulder Dash game for MS-DOS PC's with VGA support. His version is Volume 11, Issues 81-83 with a patch in Volume 11, Issues 48-51.

Broken Throne was updated to version 1.13 by Tom Boutell <boutell@freezer.it.udel.edu>. New in this version: user-designed maps, and major bug fixes, including fair battles for the first time and better support for X-windows. Broken Throne is a multi-user realtime conquest game that requires curses and INET-style sockets. It is not suitable for single-user computers, but a single-user system can act as a client to the server if it supports TCP/IP and INET sockets.

Kevin Routley <routley@tle.enet.dec.com> has updated Larn2, another dungeon-type adventure game, to version 12.3. Larn supports UNIX, VAX/VMS, MS-DOS, and OS/2 and only requires character-based terminals. The new version adds better support for OS/2, some fixes, and some enhancements. Larn2 is Volume 12, Issues 54-65 with patch 1 in Volume 12, Issue 67. The save file is still compatible with prior version at this release, so you can update and still finish your partial games.

Tad White <tadpole@math.ucla.edu> has enhanced the traditional standby, robots, with double-speed robots and a torus-shaped playing surface. Torus is Volume 12, Issue 66 and only requires curses or a curses-emulation package.

Ian Taylor <ian@airs.com> has ported the circa-1970s original Dec Users' Society (DECUS) FORTRAN Dungeon game to C. The game now runs on almost any computer that supports C. Dungeon was originally written for PDP-11s, so size should not be a problem. Dungeon was originally written in MDL at the MIT Laboratory for Computer Science and translated from MDL to FORTRAN by a DEC employee, then submitted to DECUS. "In Dungeon, the intrepid explorer delves into the forgotten secrets of a lost labyrinth deep in the bowels of the Earth, searching for vast treasures long hidden from prying eyes, treasures guarded by fearsome monsters and diabolical traps." Dungeon was followed by Zork, a game distributed by Infocom, and appears somewhat similar. Cdungeon is Volume 12, Issues 68-79.

Previews From alt.sources

Finally, alt.sources has slowed down. There were only twenty-one postings of note this time. Again, here are the highlights:

The UNIX ls command only tells the name of the file, not anything about its contents. This limitation is not a problem if you are local to the files and can easily page through them. However, when working remotely, such as via FTP, you often must transfer the file to the local system to page through it. To address this problem Tim Cook <timcc@csv.viccol.edu.au> has written dls, a version of ls that supports descriptions for each file. The descriptions are stored in a DBM file by name and inode number (to facilitate matching the file to the description if the file is renamed) in the same directory as the files. Then the dls command replaces the ls command and provides a listing including the descriptions. This utility is especially useful for anonymous FTP sites. dls was posted on March 22, 1991 in two parts.

Paul Anderson <pda@dixie.com> has written a set of simple tools (for use by programs and shell scripts) to create lock files on UNIX systems. The tools use the System V UUCP-style lock files and places them in /usr/spool/locks. It was posted on March 23, 1991 in one part.

One of the popular replacements for the Berkeley tool more (called less) was updated from version 170 to 177 by a set of patches posted by Mark Nudelman on April 3, 1991. This patch set is mostly bug fixes. less is a relatively efficient superset of more.

Working with PostScript files? Angus Duggan <ajcd@cs. edinburgh.ac.uk> posted a set of tools to perform page manipulation for PostScript documents. The posting includes psbook to rearrange the pages into signatures, psselect to print selected pages, pstops to perform page rearrangement, psnup to print multiple pages on a single piece of paper, and epsffit to fit ESPF files into a given bounding box. It was posted on April 10, 1991 in one part.

Any PL/M code left? Want to convert it to C? Then you need Bob Ankeney's PL/M to C Converter posted on April 9, 1991 in three parts. It can automatically convert the code leaving the formatting and comments intact. It was designed for PL/M-286.

Edward Groenendaal <eddyg@syma.sussex.ac.uk> posted his final year project of an X Desktop Manager on April 17, 1991 in seven parts. This program is designed to simplify and speed the process of file management on an X system with a small simple manager. It supports representation of files and directories as icons, filenames or ls - l listing entries. It allows selection of files by regular expressions as well as linking program execution to files.

For a diversion, Jay Konigsberg <jak@sactohO.sac.ca.us> posted his version of video poker on May 2, 1991 in one part. It follows the Nevada rules and uses character-based graphics and curses.

Several additional tools were posted for the Portable Bitmap Package (PBM). Garrett Wollman <wollman@emily.uvm.edu> posted ppmtoiris to convert ppm files to Imagelib RGB format on May 8, 1991. James McCauley <jdm5548@tamsun.tamu.edu> posted pgmtxtur to compute 14 textural features of a grayscale image using the statistical approach specified in Haralick and Shahmugans "Textural Features for Image Classification" on April 30, 1991. And Angus Duggan <ajcd@cs.ed.ac.uk> posted ppmtopcl which converts ppm files into HP PaintJet XL PCL files on May 9, 1991.