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 that cannot do Internet addressing).
All is not well, once again, in the land of the net. The current fervor over censorship is impinging on the net.
Colleges and universities that function as archival sites on the net are thinking twice about restricting access even further.
These restricitions do not affect the mainstream comp.sources.unix and comp.sources.misc, but they are affecting alt.sources and the entire alternet hierarchy. comp.sources.games might be next since it also could be construed as improper research material.
Although this controversy appears to only affect the "Internet," since so much of USENET now uses NNTP and the "Internet" as routing and delivery agents, these access restrictions will eventually affect all net users.
An Update To 'What's The Net'
I have received several pieces of mail lately asking for the phone number to the USENET BBS so users could download some of the software described in this column. Unfortunately, no such phone number exists, because USENET Network News is not a BBS.USENET is a collection of computers interconnected through various networks. USENET relies on some of the high-speed networks that make up the Internet. The other networks are just lower speed dial-up connections using modems. In a BBS, a single computer contains all the files, and users dial in to the computer to access downloading information. Unlike BBS, USENET Network News broadcasts an entire collection of files to all machines connected via a flood fill algorithm. In USENET, a single computer, which is connected to several other computers, receives a file (article) from one of its connections and stores the file locally. The computer then sends the file to all the other connections that have not received it. Thus a file is flooded across the network. This actually is a pretty quick process, with most sites receiving an article within eight hours of its posting anywhere in the world. (My site seems to average about 15 to 20 minutes from posting to receipt on most articles).
However, each site receives more information that it can keep. Each site expires (deletes) older files. This expire period is usually around one week but varies from site to site. By the time you read this column, the file you're reading about is long gone. So how does this help to have a column telling you what you missed?
Fortunately, many sites around the network have agreed to archive one or more of the newsgroups. (A newsgroup is a way to classify the files, so they don't appear as one big list. Currently about 700 newsgroups are in the network.) Thus if you know the file's volume and issue number, you can retrieve it from one of these archive sites.
The archive sites are scattered all over the country (and world), and vary from time to time. The largest archive site is UUNET Communication Services. UUNET is reachable via FTP for those on the Internet, via uucp for those with accounts with UUNET, and via a 1-900-GOT-SRCS for those that only need occasional access. UUNET charges for uucp and the 1-900 access. The 1-900 number is only for uucp access. Thus you need a UNIX system or a uucp emulating package for other systems to access UUNET. Currently the 1-900 number charges 40 cents per minute and only works within the United States.
Some users ask where they can get the FTP (File Transfer Protocol) software to allow me to access x via ftp. FTP is a protocol, so in addition to software, you need a network attached. FTP is part of the collection of protocols implemented on top of TCP/IP (Transmission Control Protocol/Internet Protocol). It is used both in local area networks running TCP/IP and for wide area networks using TCP/IP. If you are not already connected to the Internet with a TCP/IP link, then you cannot use FTP to access any of the archives. As a generalization, Internet TCP/IP links are routing computers connected by leased lines running at DS0 (56KB/s) or T1 (1.544MB/s) rates. These leased lines lead to other routers that are all interconnected by more leased lines, forming a redundant interconnected network. There are no phone numbers to call or modems to use. It's big, it's fast, and it's expensive.
I have received mail requests for sources on floppies or other media, but I cannot accommodate those requests at this time. The best thing you can do, is acquire a UNIX system or one that supports uucp and take me up on my offer to mail you a list of system in your area. If you send me a self-addressed number 10 envelope with sufficient postage. (One ounce for smaller communities or two ounces for urban areas.) Be sure to include your area code. I will be glad to mail back to you a printout of sites currently on USENET (listed in the USENET uucp maps) in your area. I can only mail printouts for those in the United States and Canada. If you live outside the United States and Canada and have access to electronic mail, via the Internet, MCI mail or Compuserve, I will be glad to send you a list through electronic mail.
Once connected to the net, you can capture future postings or find a friendly neighbor to retrieve missed postings from their archives. I would appreciate hearing from those that have gotten connected via my lists, partially so I know that you can actually find willing sites in those different areas, and partially so I can rotate the sites I recommend asking for connections.
Back To The Sources
A comp.sources.unix posting worth reporting on is CVS from Dick Grunge at Vrije Universiteit <dick@cs.vu.nl>. CVS is a front end for RCS (Revision Control System, see my article in CUJ, Volume 7, Number 4) that supports concurrent and independent use of an RCS directory. CVS allows several people to work on the same set of files simutaneously without conflicting with each other. CVS also uses its own commands. The Concurrent Version System is Volume 22, Issues 13 and 14.Now if you wanted CVS, you'll definitely be interested in cvs-ber-liner. Brian Berliner of Prisma, Inc. converted CVS from shell scripts into C and added many features to support software release control functions. A copy of his paper presented at the Winter 1990 USENIX Conference in Washington, DC is also included in the distribution. Brian's rewrite of CVS with extensions and the paper is Volume 22, Issues 15-21. Also, a patch to cvs-ber-liner was issued as Volume 22, Issue 33.
Jonathan Kamens <jik@pit-manager.mit.edu> has written an errortable library that displays an error message on the standard error stream composed of program name, the error message derived from an error code, and any user format arguments. The error-table library also includes run time hooks that allow the messages to be diverted to another form of error output such as syslog(3). Thus the same program could at times log the errors to stderr or via syslog(3). Et is Volume 22, Issues 22-24; with a patch it is Issue 104.
Also from Jonathan Kamens and the Athena project are the et posting routines. Volume 22, Issues 25-27 is undel2, the MIT Athena delete/undelete programs, release 2. Delete marks files and directories for later permanent removal (by renaming them with a prefix of .#). Files accidentally marked for deletion can be recovered using the undelete command. Periodically, the system automatically removes marked files and directories. Files also can be removed on demand. Users can list files which are marked for removal but have yet to be removed. Of course, once removed, these files are only available via your backup tapes/floppies. This is the same method used by the Norton Utilities when they were ported to UNIX. Patch 10 was posted in Issue 105, but don't worry, the main distribution was already at patch 9, so this is the next patch number in line.
Ben Smith from Byte has submitted the Byte UNIX Benchmarks in Volume 22, Issues 28-32. These benchmarks measure the performance of UNIX systems. As usual, take all benchmarks with a large grain of salt, but one more cannot hurt.
One of the newer newsreaders, NN, presents the increasing flow of network news in a format that allows quick browsing. NN6.4, written by Kim Storm <storm@texas.dk> of TI Denmark, is Volume 22 Issues 36-57, with six patches. NN is fast and provides a menu-based article selection with fast subject automatic selection and killing. And this newer version uses the standard .newsrc control file, so it co-exists better with other newsreaders. I use NN and wuld recommend it to others.
From GNU (GNU's Not UNIX) comes the latest version of GNU AWK (version 2.11). This version is compatible with nawk, the "new awk" described in the AWK book and shipped with UNIX SVR4. Except for the copyleft rules common with GNU software, it's a direct replacement for the new awk. GNU AWK is large; it's Volume 22, Issues 87-102, with a patch in Issue 107. For those on MS-DOS PCs, with patch 1, GNU AWK also supports that environment.
For mail to make it around the network in the uucp system, it needs source routing, which tells the message how to get to its destination. The source routing database is distributed over network news in the newsgroup comp.mail.maps. Before using the maps, you must convert them to a paths file based on your site's connections and location. A Pathalias program performs that function. Pathalias v10 was posted by Rich Salz (the moderator of comp.sources.unix) for Peter Honeyman, its author. Pathalias reads the map data and determines the lowest cost route from one single host (yours) to all other hosts in the maps. Pathalias10 is Volume 22, Issues 109-111.
Much New For DOS, Xenix In misc
Those running GCC (The Gnu C Compiler) under Xenix might have run into a small problem with long names. The link library archiver symbol updater (ranlib) on Xenix does not like externals with names longer than 40 characters. Steve Bleazard <Steve.Bleazard@robobar.co.uk> submitted ranlib for comp.sources.misc Volume 12, Issue 14. This drop in ranlib replacement can handle long identifiers. At least Xenix's loader does appear to like long identifiers.ECU, the extended CU command for SCO Xenix, has been extended to also support SCO UNIX V/386. Now at v2.80, it supports a procedural language, multiple built-in file transfer protocols and an extended set of interactive commands and works with SCO releases, 2.3.1 or higher for Xenix and 3.2.0 for UNIX. Warren Tucker submitted the update for Volume 12, Issues 53-85. Three patches have been issued for it, Volume 12, Issue 102 and Volume 13, Issues 2 and 3.
To those used to UNIX's du command (which shows how much disk space a file uses), Peter Lim <pnl@crdgw1.crd.ge.com> has contributed du-pc. This program provides du type output for MS-DOS file systems. Options include summary listings only, statistics, cluster size and recursive traversal of subdirectories. du-pc is Volume 12, Issue 17.
For those running the MS-DOS Shell, Volume 12, Issues 19-26 contain the updates to take the shell from v1.4 to 16. Ian Stewartson from Data Logic Ltd. <istewart@datlog.co.uk> contributed the updates which fix many bugs and added enhancements to /dev support, use of the BIOS for screen size detection, filename completion and full internal interrupt 24 support.
As the coordinator of the Elm Development Group, a group of volunteers which work on a Mail User Agent, I have to give equal time to our competitors. One of them, Dan Heller <argv@Eng.Sun.COM>, has released the latest version of their MUA: MUSH, the Mail User's Shell. Volume 12, Issues 28-47 is MUSH 7.11. Mush is a more flexible MUA than Elm and is also a bit more complicated. However, it is will worth comparing to Elm. Try them both and make your own decision.
For those trying out computer-based fax, Brian Kantor <brian@ucsd.edu> has provided cheap-fax, an inexpensive way to implement out-going only, text only electronic mail to fax. If you can put an inexpensive fax card in an old PC, you too can run a fax server. It uses serial communications and kermit to the mail host, which must be a UNIX system. cheap-fax is Volume 12, Issue 48.
For those writing shell scripts to produce menus or just prompt the user for data, grabchars allows for a more flexible read than the $< operator (csh) or the read statement (sh). It can read one or more keystrokes from the user without requiring a return. It was written to make all types of shell scripts more interactive. Also included is a tool to help write scripts to implement menus. Dan Smith submitted grabchars as Volume 12, Issues 49 and 50.
For terminals that support a status line, and users that want a clock and mail status display, Robert Drabek <robert@cs.arizona.edu> has contributed wclock in Volume 12, Issue 86. Wclock provides a clock display and mail indicator for non-workstation users. It updates the status line periodically with the current clock value and a mail indicator if you have new mail.
One of the lighter postings was wordnum by Jim Williams <williams@mimsy.umd.edu>. wordnum, Volume 12, Issue 98, converts phone numbers to all possible mappings of letters for that number, and also a string back to a phone number. Useful, I guess, for trying to choose a catchy phrase or word to describe your phone number.
Another print spooling control system for postscript printers was submitted by Tony Field <ajfcal!tony>. Psf2.0, Volume 12, Issues 104-109, supports from one to four up on a page in both landscape or portrait orientations. Fonts and point sizes may be selected as desired, and pages may be scaled. Also upported are duplex (double sided) printing and a banner page for job identification.
Those desiring a make that works like the UNIX one, but runs under MS-DOS, pdmake 1.6 is for you. Greg Yachuk <zebra!greggy> contributed pdmake v1.6 for Volume 13, Issues 18-19. It also works under UNIX, so it is possible to be used for both.
If you are dissatisfied with the od (octal dump) utility from UNIX, hd from Peter Ruczynski <pjr@pyra.co.uk> just might satisfy you. Is Volume 13, Issues 20-25 and it supports octal, decimal and hex all with or without leading zeros. It has very flexible formatting, and even parts of it can be called from your C program for debugging.
For those interested in compression methods, a different method, delta modulation is used in deltac, Volume 13, Issue 48 from Diomidis Spinellis <dds@cc.ic.ac.uk>. Delta modulation compresses a file by storing the difference between bytes, coded in a single nibble. For eight-bit grey scale images, this can sometimes get a 20 percent higher compression rate than byte encoding methods.
Those working on ANSI C might be interested in a small, portable parser and lexer for ANSI C. Shankar Unni <shankar@hpclsu.cup.hp.com> has contributed it for Volume 13, Issue 52. It handles the December 1988 draft of the standard, but the author is interested in updating it, so suggestions and corrections are welcomed.
Comparisons of two or three ASCII files is possible with the combine utility from Cliff Van Dyke at Harris Computer Systems <cliff@ssd.csd.harris.com>. The output is either a report describing the differences between the files or a file which is a composite of the original files. The format is intended to be friendlier than the UNIX diff utility. The comparison algorithm comes from "A technique for isolating differences between files," Communications of the ACM, April 1978, Volume 21, Number 4. combine has been placed in the public domain and was published as Volume 13, Issues 54-56.
As the coordinator of the Elm Mail User Agent project, I took interest when a posting had the name elmedit. Marc Siegel <mas!smarc> contributed an easy-to-learn editor which was written for use with Elm. It saves teaching people to use vi. Although written for Elm, it is a general text editor and can edit files, as Elm's messages are just files anyway. Elmedit is Volume 13, Issue 62.
This next posting is real unusual a C obfuscator which takes normal C code and makes it difficult to understand. (That shouldn't take much...) It throws away all the information not absolutely needed by the compiler and linker and then squishes the rest into unreadable ids. It supports a dictionary of global identifiers and their translations for use with separately compiled modules. I looked at the output and had difficulty making sense of it. From Russ Fish <fish%kzin@cs.utah.edu>, it was posted as Volume 13, Issue 68.
Looking For moria, It's Back
The complete sources, not just patches, to umoria have been posted in comp.sources.games as Volume 9, Issues 55-86, Info 7 and Issue 97. Version 5.2 was contributed by Jim Wilson <wilson@ernie.Berkeley.Edu> and now supports UNIX, IBM PCs, Macs, Atari-STs and Vax VMS. The moria game is a dungeon exploration game similar to Dungeons and Dragons but it is not a role-playing game. The sources are large (about 2Mb) so you must have plenty of room and time available if you install moria.A much smaller mini-rogue-like adventure game, Wander3, was released in its latest version, including 60 screens. Wander3, now at v3.2 was issued as Volume 9, Issues 51-54. Submitted by Steven Shipway <csupt@cu.warwick.ac.uk>, this version has some improvements, but mostly bugfixes. In wanderer you move about the screen avoiding pitfalls and gathering treasures and baby monsters. In Wander3, you can also write your own screens.
One of the stranger postings for a UNIX distribution, and not really C, is ctrek, Volume 9, Issues 46 and 47. Star-trek games are not new or unusual, but this one is. It's in Cobol. Give this one to your mainframe friends and let them have some fun for a change.
An arcade style game where intelligent monsters take the shortest path through a maze of barriers to attack you, called mz, was contributed by John Smith <ccicpg!mbf!smithj> for Volume 9 Issue 87. mz is similar to pacman, however the monsters are always intelligent and will always choose the shortest path to get to you.
One of the more popular multi-user games, Galactic Bloodshead, has been updated to a full split client/server networking model. Thus remote multi-player games are now possible. This new version, 2.0, supports controlled enrollment remote execution, so the hosting system where the game resides can be different than the systems where the players reside. If you think that's complicated, try playing. gb3 was submitted by Garrett Warren van Cleef <vancleef@Pooh.caltech.edu> as Volume 10, Issues 1-14. Actually the docs are pretty good for setting everything up. Be aware, that this game requires BSD 4.2/4.3 type TCP/IP sockets to function. Its not for single-user PCs.
Previews From alt.sources
On the alternate network, where previews abound, new this time is a new version of a shell archive program: shar, now at version 3.24. Shell archives are the source distribution packaging method used by Usenet for Network News. This version attempts to create missing directories, allows for restoring file modification times and allows for unsharing a collection of shars from a single file of concatenated shars or from multiple files or any mixture thereof. It was posted by Warren Tucker <n4hgf!wht> on May 11, 1990.Rich Skrenta <blekko!skrenta> posted an Apple II emulator. It features Dos 3.3 and Prodos interception, scroll interception, memory map disk support for raw disk reads and reasonable speed, a fast RISC workstation might just run at Apple II speeds. It doesn't have graphics or raw disk writes. Of course the ROM code is not included, as that is copyrighted. It was posted on May 23, 1990.
Using Merkle's Snerfu hashing function from comp.sources.UNIX Volume 21, Dan Bernstein <brnstnd@ramden.acf.nyu.edu> has written snuffle. A reasonably fast, very simple private key encryption system. It takes the first line of input as the key and also supports a "time-key" on the command line. snuffle was posted on June 14, 1990.
Config, a program written by Steve Pemberton, detects bit order (endianness), floating point representation, basic type ranges and arithmetic rounding among others. Posted by Skip Montanaro <montanaro@crdgw1.ge.com> on June 19, 1990.
For those running SCO UNIX/386, a monitor showing CPU utilization, I/O performance and usage, systemcall usage, and the current value for many of the tunable parameters. Several versions were posted, including corrections. And portability to non SCO UNIX's was not really commented on. But if interested look for Warren Tucker's postings on or near June 21, 1990.
For those using HP Laserjet printers and PCL, ljinit provides a high-level interface to the HP PCL configuration commands used by the printers. Instead of escape sequences, the command takes English arguments that it converts to the appropriate sequences, such as setup=letter, font_id=roman, stroke=bold, left_margin=20. ljinit was posted on June 23, 1990 by Chip Rosenthal.
Another spell checking program was posted on June 28, 1990 by Graham Toal <tharr!gtoal>. Dawgutils (his name for it) is a suite of programs for working with words. He is looking for portability problems so this release was to alt.sources. It supports soundex correction, a method of guessing the correct word based on how the word sounds, but the author is working on a better algorithm. Dawg stands for Directed Acyclic Word Graph, the name of the data structure the program uses. The name comes from Appel's paper on Scrabble.