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).
comp.sources.reviewed has started to function. Andrew Patrick <csr@calvin.doc.ca>, its moderator, has been posting status messages, and two completed packages have been posted. How it works is that a source to be posted is submitted to the moderator. He then assigns the source to a set of reviewers who try out the package. This review usually requires revisions to the submission due to problems found. The package is then resubmitted and finally posted. About twenty packages have been submitted. Only a couple have been returned to their authors for revisions and the authors have withdrawn them. The rest are awaiting re-submission and review.
The first package posted is Steven Grimm's <Steven.Grimm@Eng.Sun.COM> supersrv. It was submitted on April 30, 1991, reviewed by May 16, 199. Revised submission was received May 17, 1991, accepted May 31, 1991, and posted June 1, 1991. The total delay time from original submission to posting was a month, which is very prompt.
SuperServer version 1.4, Volume 1, Issues 1-3, is a networking front end to allow any program or shell script to be offered as a network service. It provides a consistent front end for network services and should work on any system that provides the Berkeley-style networking socket calls. The reviewer commented: "Learning how this software works will probably give a person some insight into TCP/IP sockets and client/server architecture."
The second posting, cextract, shows even more why the reviewing processing is a good idea. Adam Bryant <adb@cs.bu.edu> submitted it April 15, 1991. It then was reviewed and resubmitted 4 times until it was finally accepted July 6, 1991. This process finds many of the simple portability quirks before the entire world sees the package. cextract, Volume 1, Issues 4-8, is a C prototype extractor. Before everyone says, "Not another one!" this one differs in that its small, runs on may different system types, reads either ANSI or K&R C code, and can output either ANSI, K&R, or both types of prototypes from either code type. It can also handle the C preprocessor defines that can change the types of calling arguments. It surrounds the prototypes with #ifdefs that control when they are used and prevent problems if the file is included more than once.
Adam, the author of the package, commented about the reviewing process: "When I first submitted cextract to comp.sources.reviewed I thought it was a bit rough, .... I figured it was fairly portable and that any minor bugs could be ironed out when bug reports and patches started coming in. Well, the reviewers saw through my laziness and made sure I turned in a finished product. Not only did they discover bugs that hadn't turned up in months of use, they came up with excellent improvements and suggestions that inspired me to redesign much of the code and greatly improve the overall quality. Hopefully everyone will be able to recognize that the review process was able to greatly enhance this program beyond what even I had imagined it capable of."
Starting next time, I will only report on the normal information on packages reviewed in comp.sources.reviewed. I though it worthwhile to show how the new group functions, and to demonstrate the usefulness of peer review.
Rich Got Married?
The slight pause in comp.sources.unix seems to have turned into another long vacation. Rich Salz, its moderator, promised that there is some good stuff in the queue waiting for his return. That promise has yet to be fulfilled. Now, once again, discussions have started on "Where is Rich?" Perhaps this time people will consider posting to comp. sources.reviewed instead.However, two packages were posted on June 6, 1991. One is not applicable to this column, and the other is mkid from Tom Horsley <tom@hcx2.ssd.csd.harris.com> posted as Volume 24, Issues 89-95. mkid will create an ID database, which is a file containing a set of file names, a list of identifiers, and a binary relation (bit matrix) indicating which identifiers appear in each file. With this database, and using the tools in this package, a host of tasks become simpler and faster. grep would only need to access the files that contain the identifier. Or you could easily edit all files containing an identifier. The package includes mkid to make the database, lid and aid to generate a list of file names containing the identifier, eid to edit all files containing an identifier, gid to grep all files containing an identifier, pid to query the path names instead of the file names, and iid, an interactive program to support complex intersect and join queries.
Misc Still Overflows
Perhaps posters are using comp.sources.misc instead of comp.sources.unix. Once again, over ten megabytes of submissions and over fifty packages were made over the past two months. Some of the highlights are:Many UNIX users use the TeX text-processing system. TeX produces output in a device-independent format, DVI, which is then translated for each of the possible output devices. Parag Patel <parag@hpsdeb.sde.hp.com> contributed his DVI filter for HP LaserJets. Written in C++, dvi supports the LJII, LJIID, LJ2000, and LJ+ printers. It handles double-sided printing on the printers that are capable of it, supports large fonts and landscape printing, and is demand driven. (It only downloads the characters from the font sets it actually uses.) dvi is Volume 19, Issues 64-66 with patch 1 in Volume 20 Issue 18.
Also from Parag, is wacco, an LL(1) parser generator. wacco generated recursive-decent C++ code from an input file that looks similar to yacc. Since the parser is recursive, it can do attribute-driven parsing and even dynamically update the rules to alter the parse as needed. wacco does require C++ 2.0 but has been successfully built on many systems. wacco is Volume 19, Issues 88-93 with patch 1 in Volume 20, Issue 17.
Although games belong in comp.sources.games some seem to show up in comp.sources.misc anyway. Mike McGann <mwm@hasler.ascom.ch> submitted an update to gnuchess 3.1 for Volume 19, Issues 73-79 with patch 1 in Volume 20, Issue 20. Fixed are pawn promotion, undo, and win/draw determination. Added is the ability to read xboard position files and to specify save and load files from the command line. In addition, the save format is now human readable.
Along the same lines, Henry Thomas <hthomas@irisa.fr> submitted notation, an updated version of his program that can read chess games in either algebraic or shortened form and output the board after any move in ASCII, PostScript, or nroff formats. It also supports multi-lingual piece identifications. This new complete release is Volume 20, Issues 52-55 with a patch for a missing file in Volume 20, Issue 71.
Need to "unzip" some archives, but are not running an MS-DOS system? The Info-ZIP project posted its portable generic UNIX unzip utility. This version (4.1) has been ported to many mainframe, minis, and micros, including MS-DOS, Atari ST, and Macintosh. The Info-ZIP project does also have a "zip" utility, but this update only provides the "unzip" side. It is binary compatible with the MS-DOS PKZIP/PKUNZIP utilities. Posted by the Info-ZIP project <Info-ZIP@WSMR-SIMTEL20.Army.Mil>, unzip is Volume 19 Issues 96-101.
In a program reminiscent of the old Berkeley vsh, Patrick Wolfe <pat@kai.com> has submitted scan for Volume 20, Issues 1-3. Scan is a directory menu program. It lists the contents of the current directory in ls -l format using curses for a full screen display. It then allows operations on the files using a point an shoot type interface. It supports common operations such as view, edit, and remove and allows for tagging multiple files to perform operations on the set of tagged files. A patch to allow compilation on Esix was Volume 20, Issue 4.
If you still have programs that output for the Epson-style printers, or need to convert ASCII files to PostScript output, Russell Lang <rjl@monu1.cc.monash.edu.au> has extended Jonathan Greenblatt's <jonnyg@rover.umd.edu> epsonps. The program runs on both MS-DOS and UNIX and supports all Epson LX-800 and Star NL-10 codes except download character, proportional spacing, and alignment. Most LQ-800 codes are also recognized. It even can do IBM PC screen dumps with the extended character set. epsonps is Volume 20, Issues 14-15.
The Z shell, reviewed in my last column, has had a patch that adds variety new documentation. Patch 3, Volume 20, Issues 22-25, includes a 36 page document "An Introduction to the Z Shell" which provides examples and shell usage information. In addition, several bugs were fixed and support for the test builtins was added.
The UNIX public-domain spreadsheet program sc has been updated by Jeff Buhrt <prslnk!buhrt> to version 6.16. New items include a quick-reference card, bug fixes, many new features, per-cell formatting, and a method of relative cell addressing. While sc is not as extensive as some of the commercial spreadsheet programs, it does have all the basic features at a "right" price. SC 6.16 is Volume 20, Issues 35-41.
If you are running Turbo-C and want UNIX style command-line argument wildcards, David J. MacKenzie <djm@eng.umd.edu> has provided what you desire. His tcexparg is Volume 20, Issue 93. It implements the full set of Bourne shell wild-card expansions as on UNIX. It does this via a main wrapper that expands argv and then calls your main entry point.
Stephen R. van den Verg <berg@messau.informatik.rwthaachen.de> has released a new update for his procmail mail-processing program. Version 2.10 can be used to create mail servers and mailing lists, to sort your incoming mail into separate folders, to preprocess your mail, or to selectively reply or forward items from the mail. The update is Volume 20, Issue 89-91, with a patch in Volume 21, Issue 1.
The latest from the "Rayshade Construction Company" of the Department of Mathematics at Yale University <rayshade@weedeater.math.yale.edu> is version 4.0 of their ray tracing package for UNIX. rayshade is a very complete package supporting eleven primitive shapes and the ability to make aggregate objects. It support constructive solid geometry; point, directional, extended, spot or quadrilateral light sources; antialiasing; arbitrary linear transformations on objects or texture maps; and use of spatial subdivision and bounding to speed up the rendering. It's a very large package and is posted as Volume 21, Issues 3-22.
Patches have been issued for several packages review in prior columns:
Bill Randle's <billr@saab.cna.tek.com> calentool 2.2 source was patched in Volume 19 Issue 91. This takes the source to version 2.2 PL1. calentool is a program that displays a page-at-a time calendar on your screen and allows for multiple appointments and reminders. Many bugs were fixed, especially on the PostScript versions of the calendar printouts. No new features were added by this patch.
Brad Appleton <brad@ssd.csd.harris.com> updated his parseargs package with several patches. parseargs is a set of C functions to parse arguments from the command line from files, strings, linked-lists, and string vectors. It is capable of assigning the results of the parsing to the appropriate variables. Patch 5, Volume 19, Issues 82-86, added support for zsh, made support for new shells easier, fixed some bugs, and added comments to explain better what each of the <os>_args.c files is doing. Patch 6, Volume 20, Issue 46, fixed some bugs, added System V Release 4 support code to the manual-page printing routines, and added argument-name aliasing to allow different argument names than keyword names. Patch 7, Volume 20, Issue 98, handles compilers that do not allow for modifying string literals at runtime, documents all the compile-time constants that can change the behavior of parseargs, and frees the space used by parseargs after it is done with the argument vector.
Dennis Vadura <dvadura@watdragon.waterloo.edu> also updated his dmake utility with patch 2 in Volume 20, Issues 76-87. dmake is different from other makes in that it supports significantly enhanced macro facilities, enhanced inference algorithms, support for file system transversal both during inference and during the make, parallel makes on those architectures that support it, attributed targets, and text diversions. Patch 2 fixes several bugs, adds better support for MS-DOS and UNIX compatibility, and adds support for Coherent and Zortech C++ under MS-DOS.
Bill Norcott <norcott@databs.enet.dec.com> completely reissued his iozone I/O benchmark program. Version 1.09, Volume 20, Issue 75, now supports automated testing and supports even more operating systems than before. iozone is a test of sequential file I/O that prints the rate your system reads and writes files in bytes/second.
Larry Wall <lwall@netlabs.com> has updated his much praised Perl program to 4.010 (with patch 11 promised soon). Mostly it was portability and bug fixes, but some features have been extended. The only major new feature is the a change to the pattern-match command. Although the patch is called 4 through 10, it's really just a seven-part patch. The patch is Volume 20, Issues 56-62.
David Skoll <dfs@doe.carleton.ca> has issued patch 2 for his remind package. remind will notify you of events, appointments or other thing you feel you should be reminded about. It can signal you or just send mail. It is a more flexible replacement for the UNIX calendar program. Patch 2 is Volume 21, Issue 2.
Games Quiet
It's been very quite on the games front also. I guess the summer doldrums even hit programmers.John Ramsdell <ramsdell@linus.mitre.org> submitted a version of Streets and Alleys Solitaire for saa, Volume 12, Issue 80. It's a curses implementation of the solitaire game which uses a deck of playing cards. It includes enough help information to teach you the game. It also supports reduced-size decks.
If you need help doing the anagrams in the newspaper each day, Morten Ronseth <morten@dcs.qmw.ac.uk> submitted his anagram generator. He submitted two versions, the second of which superceded the first and was ag2 in Volume 12, Issue 82. It is based on the article by Mike Morton <mikem@uhccux.uhcc.hawaii.edu> in Byte Magazine, November 1987. Not only does it generate the anagram, it also can filter out bad results using both pre and post filters, samples of which are provided.
Lastly, Adrian Mariano <adrian@milton.u.washington.edu> has provided mgt2 for Volume 12, Issues 83-86 with a patch in Volume 12, Issue 87. mgt2 is a program to display and edit records of Go games in Smart-Go format. It uses curses for the screen output and should compile on UNIX, MS-DOS, and VMS. A short introduction to the game of Go is also included.
Previews From alt.sources
So much for the summer doldrums, it hasn't affected the posting in alt.sources. Once again over fifty postings of note, and once again only the highlights.Mike Brennan <ssc-vax!brennan> submitted mawk version 0.97 on May 11, 1991 in seven parts. Part 0 was just the information about the posting and the code was the next six parts. mawk is an implementation of the Awk Programming Language as defined in Aho, Kernigan, and Weinberger, The Awk Programming Language, Addison-Wesley, 1988. This 1988 definition of awk added several features over the original version. (Awk stands for the first letter of each of the authors' names.) mawk is a fast version of the 1988 standard with an addition that the record separator (RS) can be a regular expression, not just a single character.
Security has been a popular issue lately, and some do not agree with UNIX's open password file. This has led to the development of shadow password-file systems. On May 16, 1991, John Haugh, II <jfh@rpp386.cactus.org> posted his Shadow Login Suite, version 3, in a nine-part posting. It features replacements for all of the commands that access the standard password file, as well as replacements for the library routines. This is a beta version, so many patches were expected, and posted on May 30, June 6, June 11, and June 27.
Another chess version was posted by Marc Laukien <mk@brumuc.muc.sub.org> on May 20, 1991, which is designed for bulletin-board systems. This version supports a large opening library, training mode, tournament mode versus the computer or other players, and a high-score table for tournament games. Unfortunately, the manual is in German, but at least the program and the installation instructions are in English. UnixChess V2.7 was posted in ten parts.
A simple game based on deduction was posted by Eric Olson <fxejo@acad3.alaska.edu> on May 26, 1991. In bomb, you move through an 8x8 grid of squares trying to avoid bombs. You only know how many bombs in total are in all the squares adjacent to yours.
Paul Fox posted vile, a multi-windowed vi "feel-alike" on June 7, 1991 in seventeen parts. Paul has taken an out-of-date copy of Micro-Emacs and converted it into a multi-windowed editor that responds to the vi command set. It is not a clone of vi because the screen is still very Emacs-ish and some of vi's commands are missing, but the effect appears to act like vi.
Rob Bernardo <rob@mtdiablo.concord.ca.us> submitted dmm, a set of routines to provide an object-oriented front end to the System V style of curses for the management of data entry and menu screens. A demo program is also included which highlights the features of dmm. dmm was posted on June 18, 1991 in two parts.
Jean-Pierre Radley <jpr@jpradley.jpr.com> submitted XC on July 9, 1991 in five parts. XC is a communications program for UNIX/Xenix that supports interactive and script use. It supports Xmodem, Zmodem, and B+ protocols and respects the cu/uucp LCK..file convention.
Many of the UNIX archives are kept in zoo format. This format just underwent a major upgrade. Rahul Dhesi <dhesi@cirrus.com> submitted booz on July 9, 1991 in one part. booz is a small, simple, and portable routine to unpack zoo archives including the new format used in zoo 2.1. He then followed that by the complete posting of zoo 2.1 on July 10, 1991 in fifteen parts. zoo supports compression and full path name support, and is portable to a large number of systems.
But if you need to read Mac archives, then Dik Winter's <dik@cwi.nl> unpack will handle PackIt, StuffIt, Compactor, and most StuffItClassic/StuffItDeluxe archives. Dik submitted unpack as a beta version on July 14, 1991 in two parts.