Sydney S. Weinstein, CDP, CCP is a consultant, columnist, lecturer, author, professor, 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).
I used to blame the dearth of source postings on the summer doldrums, or on spring break, or other such college holidays. However, it is now late September, and the wires have been exceedingly idle. The sources in the mainstream news groups are very slow in coming. Has everyone gone off to learn X? The X Window System source news group has had considerable action. I normally don't review items in that group, as CUJ is not a pure UNIX journal. Should I?
I currently keep my ears tuned and my eyes wandering over the doings in the comp.sources.games, comp.sources.misc, comp.sources.reviewed, comp.sources.unix and alt.sources groups. There are others. Most of those relate to a specific computer system, such as the Acorn, Amiga, Apple2, Atari, Mac or HP48 (yes, the HP48 hand-held calculator has its own news group). The only other source news group with considerable traffic of nontrivial programs is comp. sources.x.
I leave it to your decision. Send me electronic mail indicating whether you think I should cover the X news group. If you cannot send electronic mail, send your letter to the address listed in my biography. Please mark the outside of the envelope that this is a vote on the X news group issue.
Rich?
Part of what has led me to wonder where everyone has gone is that there have been no postings at all in comp.sources.unix since June. Rich's honeymoon has long since been over, and the last comment from him in regards to the queue of postings is also several months old. This probably explains the increase in traffic in comp.sources.misc compared to before Rich took his extended hiatus.
Slow Reviews
Even comp.sources.reviewed is slow to produce, although from its status reports the problem is in getting corrected packages back from their authors.The only posting was an updated version of deliver, Chip Salzenberg's system to handle incoming electronic mail. It can forward the mail based on content, store it in a set of folders, reply with requested information to the sender, or anything that can be described as a shell script. It is extremely flexible and portable. It runs under almost any UNIX system and even runs on UNIX clones, including Coherent. It does require mail transport software that can support delivery of messages to a process. This includes Smail 2.x, Smail 3.x, Sendmail, or the SCO XENIX mail system. It currently does not support MMDF. F105MIdeliver, Version 2.1.06 is Volume 1, Issues 10-14, with Patch 7 to take it to version 2.1.07 in Volume 1, Issue 15.
Misc Still Abounds
What appears to be happening is that everyone is fed up with the tested source groups, and going to the immediate post source group, comp.sources.misc. Unfortunately, this also leads to more patches being posted, as the testing now occurs in public with everyone seeing the bugs instead of in private with only the author and the group reviewers. However, even the traffic in this group is down. Approximately six megabytes of posting of about 40 packages were made over the past two months. Some of the highlights are:Dave Mack <csu@alembic.acs.com> posted compress v4.1 as Volume 20, Issues 64 and 65. However this started some controversy. It appears that the bug fixes to compress v4.0 never found their way into compress v4.1, and there is a competing version of compress v4.3. Someone is supposed to post a merged version of compress v4.1 and compress v4.3, along with checking for the bug fixes, but it has not happened yet. I'll keep an eye out for it. In the meantime, compress is the main tool UNIX systems use to shrink files via LZW compression. Unlike the MS-DOS arc style programs, it does not keep a directory of what it compresses, it just compresses the file itself. It then renames it to the file name plus a .Z suffix. The compression table size is tunable from 12 to 16 bits to achieve the best compression. compress is portable to many systems, and I use a version on MS-DOS that supports the same 16-bit tables as my UNIX versions. A patch was issued for compress to fix some problems as Volume 20, Issue 74.
Do you need to mix Fortran and C code in the same program? Ever try and call a Fortran routine from C? Burkhard Burow <burow@cernvax.cern.ch> must have had to often enough that he developed a tool to make the task easier and machine independent. His tool, cfortran, was posted as Volume 20, Issues 66 and 67. It includes a header file to allow for easy prototyping of Fortran functions in C and helps generate C wrappers for C functions so they can be called from Fortran. It also includes test and demonstration programs.
In a local area network of machines, it is important that they all keep the same time of day clock. Otherwise, the machine with the slow clock might modify a file, and the machine with the fast clock will think that the file is not new compared to some other file it recently modified. This can cause all kinds of problems with file sharing, NFS, make files, and other tasks that require time stamps for synchronization. On the Internet, we use a special purpose program called ntp (Network Time Protocol) to set the clocks of all machines to within several milliseconds of "standard time." This same program then keeps the clocks tracking to that tolerance the entire time the machines are up and running. Clarence Dold <dold@mitisft.convergent.com> thinks this is overkill for small isolated local networks and has developed a tool that allows for slaving several systems to a master with accuracy of a couple of seconds instead of milliseconds. The master is kept accurate by whatever method is appropriate (nothing, calling NBS on the phone periodically, checking it by hand periodically). The rest use his remtime, Volume 20, Issue 69, to set their clocks at boot time and periodically resync them to the master system while running.
Jonas Yngvesson <jonas-y@isy.liu.se> has provided supp v2.1, a library for rendering scenes with 3-D objects for Volume 21, Issues 26-33. supp v2.1 includes more rendering modes (Phong, Gourard and line), support for rendering into other places than files (including pixmaps), larger oversampling to reduce aliasing, two new object primitives (cone and prism), two new shaders (strauss and wood), a full polygon clipper, and the ability to remove subobjects and surfaces from objects.
Another simple menu system, supporting text menus, was contributed by Ted Wisniewski <ted@oz.plymouth.edu> for Volume 22, Issues 98 and 99. This is an updated release of the PSCmenu package. It replaces one released last month that replaced one that was last released as Volume 16, Issue 99. The menus are kept in simple text flies and can support execution of any UNIX command.
Want to brag about how fast your new computer really is? One of the traditional benchmarks for supercomputers is Lawrence Livermore National Laboratory's Livermore Loops program in Fortran. As part of a research project to compare Fortran and C for numerical computation, Martin Fouts translated the benchmark into C for the NASA Ames Research Center. Cloops was contributed for Volume 21, Issues 36-38. It implements the 24 loop version of the Livermore Fortran Kernels as described in The Livermore Fortran Kernels: A Computer Test of the Numerical Performance Range by Frank H. McMahon (LLNL UCRL-53745).
One of the features of the Berkeley Software Distribution (BSD)-derived UNIX systems is the support in the operating system for a feature that determines which program will execute a shell file by reading the first line of the file. If this line contains #! as the first two characters, then the rest of the line is the name of the interpreter to execute this script. AT&T-derived UNIX systems before SVR4 do not support this feature, but it can be emulated by changes to the exec family of functions. David J. MacKenzie <djm@eng.umd.edu> has done just that with libiexec for Volume 21, Issue 39. He has provided replacements for the exec family of functions that will check the contents of the first two bytes of the file to be executed, and invoke the proper interpreter if the first two bytes match the #! magic characters.
Brandon S. Allbery <allbery@ncoast.org> has updated his malloc debugging package and reissued it for Volume 21, Issue 41. The last release was in 1987. It now catches writes to either side of malloc'd memory, and checks the pool for consistency on each call to malloc, free, realloc, and calloc. It also supports a traceback printout of the stack when a malloc check fails, traps bus and segmentation violations as if they were bad pointer references and dumps the malloc pool, and uses environment variables to control many features of the debugging session.
Warren Tuckers's <wht@n4hgf.mtpark.ga.us> extended call utility package, ECU, underwent extensive changes recently. ECU is an asynchronous communications program for UNIX and XENIX systems. It incorporates a rich procedural language and several file transfer protocols. Revision 3.10 adds support for gcc, non-ANSI consoles, and xterms as well as a better configuration system. It was issued in 37 parts as Volume 21, Issues 53-89. In addition several patches were released. Patch 1, Volume 22, Issues 19-21, enhances the support for ISC UNIX. Patch 2, Volume 22, Issue 22, fixes a problem with the nap () system call. Patch 3, Volume 22, Issues 70-72, adds support for SunOS 4.1 on Sparcs and SVR4. Patch 4, Volume 22, Issues 77 and 78, fixes some SVR4 related problems. Patch 5, Volume 22, Issues 90-94, enhances ECU's portability even further and adds supports for the fas drivers. Patch 6, Volume 22, Issue 101, is just a bug fix for some release problems. A new manual was issued for version 3.10 as Volume 21, Issues 90-93. This manual documents the current version and runs over 100 pages in five chapters. Now at version 3.16, by way of the six patches, ECU now supports many different platforms, not just the SCO UNIX/XENIX platforms. With ECU, your UNIX system can have a telecommunications program to rival those on the PCs.
Oishii Ichigo <whiz@well.sf.ca.us> submitted midilib, a library of routines to read and write files writing in the MIDI Manufacturer's Association standard format. It runs on UNIX, Macs and PCs and may be portable to other systems. It can give a verbose textual listing of a MIDI file, convert format 1 multitrack files to format 0, and assist in writing MIDI files. It was contributed for Volume 21, Issues 96 and 97.
Benson I. Margulies <benson@odi.com> modified the original BSD indent program, which understood only C sources, to understand how to pretty-print C++ sources as well. His modified indent was issued as Volume 21, Issues 98-100.
Making changes to binary files can be difficult. Help is available via the Binary Editor and Viewer from Peter Reilley <pvr@wang.com>. BEAV allows for changes, insertion, and deletion (yes, changing the size of the file). It can enter or display data in hex, octal, decimal, binary, ASCII, or EBCDIC formats. It can group by bytes, words, or long words in either little-endian or big-endian byte ordering. BEAV is Volume 22, Issues 10-18.
A much shorter program is prtscrn from Chip Rosenthal <chip@chinacat.unicom.com>. It captures the screen contents of an SCO Console MultiScreen and sends it to stdout. prtscrn is Volume 22, Issue 27.
I discussed in a prior column the archie service from archie.mcgill.ca. This service provides a database of who is archiving what sources via ftp. Brendan Kehoe <brendan@cs.widener.edu> has written a Prospero client to access the archie databases without using an interactive process on the remote machine. This provides faster, and lower overhead, access to the database for those sites that are on the Internet. Archie, version 1.1, is Volume 22, Issues 35-39.
In my April 1990 column I introduced the popi digital darkroom software from Rich Burridge <richb@aus.sun.com>. Rich has updated the software and re-released it for Volume 22, Issues 40-48. Popi allows arbitrary transformations to be interactively applied to digital images. New to this release are use of the PBM/PGM/PPM graphics formats, use of Floyd/Steinberg dithering for monochrome screens, support for 24-bit color, and many bug fixes.
A new program on the scene is causing many system administrators to pull their hair out. Crack v3.2a is a program that performs dictionary searches on the UNIX password file. It reports all accounts that have passwords that can be compromised by this method. Its intent is twofold. First, to inform the average system manager of which accounts could easily be compromised, and, second, to weaken the complacency among inexperienced and experienced UNIX systems administrators about how secure their passwords are. Crack v3.2a, from Alec David Muffett <aem@aber.ac.uk>, is Volume 22, Issues 49-52.
Raymond Chen <rjc@math.princeton.edu> has contributed wp2x, his program to convert WordPerfect version 2.x files to any text-based formatting language. The distribution includes configuration files for Tex, LaTex, SCRIPT/GML, and troff. WordPerfect 5.x files must be saved in 4.2 format before they can be converted by the program.wp2x is Volume 22, Issues 55-57.
Lutz Prechelt <prechelt@i41s14.ira.uka.de> has developed crefine, a tool to add an additional language construct called "refinement," which allows further decomposition with symbolic names inside functions for C and C++. crefine, Volume 22, Issues 63-66, supports any system that supports C and stdio. It is a translator of C source files.
In one posting, Christian Schlichtherle <chris@attron.ruhr.de> has obsoleted three of his own programs. He has released a new, improved version of his comment-annotated directory listing program. The new one, with a name that is configurable, although he called the package XlsX, obsoletes list, dls, and vls. It allows for tieing long description names to the file names and then displaying those along with the ls output. XlsX is Volume 22, Issues 83-84. Note: this is not an X Window program, even though the name starts with an X.
Patches were also released to prior packages. Mike McGann's <mwm@hasler.ascom.ch> gnuchess 3.1 submission had patch 3, Volume 22, Issue 2, issued to improve handling of the opening book.
Brad Appleton <brad@ssd.csd.harris.com> updated his parseargs package with patch 8, Volume 22, Issue 24, to clean up some comments and fix a couple of memory leaks.
David Skoll <dfs@doe.carleton.ca> has issued patch 3 for his remind package as Volume 22, Issue 102. remind will notify you of events, appointments, or other things you feel you should be reminded about. It can signal you or just send mail. Patch 3 adds support for the -f option to support foreground execution of queued reminders very useful for those running remind from a windowing system.
Parag Patel's <parag@hpsdeb.sde.hp.com> waccoLL(1) parser generator had patch 2 issued as Volume 21, Issue 44. It fixes a bug where code fragments in {} larger than 1024 bytes caused a dump.
The SC spreadsheet, (last release by Jeff Buhrt <prslnk!buhrt>) had two patches. The first, patch 1, Volume 22, Issues 95 and 96, added cell locking, some portability changes, and support for MS-DOS. The second, patch 2, Volume 22, Issue 104, fixed a null pointer dereferencing problem. It also added a high speed data entry mode, new date formats, better support for labels and long strings, saving the last cell accesses for the next access, and several additional functions.
Bill Norcott <norcott@databs.enet.dec.com> again completely reissued his iozone benchmark as Volume 22, Issue 29. The changes in V1.10 were to increase portability to more platforms.
Fred Walter <grwalter@watfun.waterloo.edu> has also re-released his newsbreak program that automatically unpacks postings in the comp.sources and comp.binaries news groups. Version 1.14, Volume 22, Issue 53, now supports 286 systems and ISC UNIX, and fixes several bugs.
Games Quiet
Even the games group is very quiet. Are computers and their usage now getting more serious? Or are the students just too busy studying?Streets and Alleys solitaire, reviewed last time, was patched in Volume 12, Issue 88. John Ramsdell <ramsdell@linus.mitre.org> added two improvements. The first adds command aliases for those without a numeric keypad. The second adds the ability to save and restore games. This allows for trying things and then returning to the saved place if it didn't work.
Not to be outdone by another, Raymond Chen <rjc@math.princeton.edu> also submitted an anagram generator. In October's column I reviewed Morten Ronseth's <morten@dcs.qmw.ac.uk> ag2. Raymond's anagram2 uses a user-supplied dictionary (such as/usr/dict/words) to limit its output to valid words. Both an ANSI C version and a Perl script to convert it to a K&R C version are supplied in Volume 12, Issue 89.
Pacman still lives. Rich Burridge <richb@aus.sun.com> has updated his sidtool, a Pacman like game from SunView to Xview. sidtool allows for specifying alternate mazes, including oneway paths and tunnels. A very complete version, with lots of bells and whistles, sidtool is Volume 12, Issues 90-96.
Previews From alt.sources
Even alt.sources is showing the effects of the decline in postings. It's not down much, but it is down. Once again, only the highlights many more programs were posted.Hinted at in October, with the release of booz, was the upcoming release of a new version of Rahul Dhesi's <dhesi@bsu-cs.bsu.edu> Zoo archiver. Version 2.1 was released on July 10, 1991, in fifteen parts. It includes improved compression, better online help, VAX/VMS file timestamp preservation, faster uncompression, and other features. It works on almost any system that supports C, including VAX/VMS, UNIX, and MS-DOS.
For those with Mac format archives, Dik T. Winter <dik@cwi.nl> has provided a Mac archive unpacker for unpack, PackIt, StuffIt, Compactor, and most StuffItClassic/ StuffItDeluxe archives. It does not deal with password protected archives, multifile archives, or compression methods 6 and 8. Unpack was posted on July 14, 1991, in two parts.
Panos Tsirigotis <panos@cs.colorado.edu> has contributed a small socket programming library that aids in using Berkeley sockets. It takes care of many of the little details in allocating, binding, and connecting sockets. It was posted on July 21, 1991, in one part.
UNIX lacks a queued batch processing system. It has at/atrun and batch, but those don't implement a queued system. Alan Saunders <tharr!alan>has contributed qbatch, a queued system, on July 23, 1991, in four parts.
Want to run a mail server? If deliver, mentioned above, is not to your liking, try mail-server (or even combine its use with deliver). Posted by Jan-Piet Mens <logixwi!jpm> on August 12, 1991, it allows access to a set of files via a mail response program. It includes permission lists to restrict which users can access which flies.
Printing PostalNet bar codes on envelopes and labels is made easier with Todd Merriman's <toolz!todd> barcode program posted on August 13, 1991. It converts zip codes in ASCII to HP Laser Jet graphics commands to print the bar code.
The ever popular UNIX Pcal, a postscript printer calendar generator, has again been updated to version 4.1 by Joe Brownlee <jbr@cblph.att.com> on August 19, 1991, in six parts. It now includes better date functionality, better quality moon phase calculation, better understanding of where to find calendar event files under UNIX, and portability changes.
The changes required to port GCC 1.40, GAS 1.38.1, and GDB 3.5 from the GNU project to SCO XENIX were posted on August 27, 1991, in four parts by Steve Blezard <Steve.Bleazard@robobar.co.uk>. This port works on SCO XENIX 386 and produces files in the native Microsoft/Intel OMF format. The GNU binutils are not used, so the port is compatible with the standard library files.
If you are stuck with a K&R C compiler and need to compile ANSI C source with prototypes, you need unproto from Wietse Venema <wietse@wzv.tue.nl>. Posted on September 1, 1991, it will leave K&R C alone, but de-ansify the prototypes of any C programs it is passed. It is designed to sit as a pass between the C preprocesser and the next stage of the compiler.