Columns


On the Networks

Magic Images via Imagemagick

Sydney S. Weinstein


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 UNX 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).

Highlighting the postings this past two months is Imagemagic (note the lack of the k in the archive name) in comp.sources.x. Contributed for Volume 20, Issues 57-94 (that's about 2Mb of source) by John Cristy <cristy@eplrx7.es.duPont.com>, Imagemagick is a set of utilities for dealing with images on an X display. The set includes:

Imagemagic has a rich set of features, and works with an impressive list of formats, but what is also impressive is how John Cristy makes use of existing packages to extend his own. He uses the existing compress/uncompress utility to read compressed file formats, the GNU ghostscript utility to convert PostScript files to bit-mapped images, the Independent JPEG Group's software library to access JPEG image files, and Sam Leffler's TIFF software to access TIFF format. Archive locations for each of these packages is given in Imagemagick's README file.

The package also uses its own internal image file format, MIFF. The author states several advantages of MIFF:

Converting to and from MIFF format is automatically handled by most of the utilities, and can also be forced by the convert utility.

More X

Other packages appearing in comp.sources.x this time include xroute from Kartik Subbarao <subbarao@concorde.fc.hp.com> in Volume 19, Issue 19 with patches in Volume 20, Issue 9 and Volume 20, Issue 25. Xroute routes X packets from one machine to another. It is typically used to enable programs to run on a gateway, which prevents routing arbitrary packets between "internal" and "external" hosts. It's a handy program to have around when dealing with the increasingly common situation — having to run X programs to and from remote sites across internet firewall gateways.

The X Client for the Archie distributed database system was updated to version 2.0.6 with a re-release for Volume 20, Issues 29-52 by George Ferguson, <ferguson@cs.rochester.edu>. Xarchie is an X11 browser interface to the Archie Internet information system using the Prospero virtual filesystem protocol. Archie provides information about files available for ftp anywhere on the Internet; Xarchie displays this information using an easy-to-use, point-and-click interface. Xarchie allows you to further explore ftp sites by examining directories returned as query matches, and allows you to retrieve files that you located this way.

A simplified version of the many rolodex browsers for X was contributed by Gregg Hanna <gregor@asdi.saic.com> for Volume 20, Issues 96-97. MRolo is a Motif-based card file program. It was designed to be as simple as possible, and was born out of frustration with xrolo's and xrolodex's many menus. Even if you love xrolo or xrolodex, you might want to look at prolo in this distribution, which is a program for generating PostScript versions of a card-file database.

In patches, patch 3 was issued to xblockbuster for Volume 20, Issue 6 from Mark Wedel <master@cats.UCSC.-EDU>. It adds locking to the score file to protect it from getting clobbered.

Volume 20, Issue 7 is a patch to xfig from Brian V. Smith <envbvs@epb10.lbl.gov>. It fixes some problems with the radius indicator for arc-boxes and has a patch for the application defaults file to prevent xfig from using too much memory.

Xephem received patch 1 to fix a problem with "Sky Mark" and to add portability to VMS, OSF/1 and Motif 1.2. It was posted in Volume 20, Issue 10 and was contributed by Elwood C. Downey <ecdowney@hwking.cca.cr.rockwell.com>.

BSD4.4 Dribbles

Since the BSD4.4 release is tangled up in legal issues, it is being released piecemeal to comp.sources.unix. One released part is the new database submitted for UC Berkeley by Keith Bostic <bostic@cs.berkeley.edu>. db-1.6 was posted as Volume 26, Issues 280-288. It is a replacement for the older dbm(3) and ndbm(3) libraries using some interface-compatible stub routines, but they are actually much more general than dbm(3)/ndbm(3) since they can be used to access normal text files (through the "recno" instance), B Trees, dbm(3)-style "hash" files, or new databases of your own implementation.

Another part of the piecemeal release of BSD4.4 is byacc-1.9 submitted for UC-Berkeley by Roger Corbett <robert.corbett@eng.Sun.COM>. byacc is "Berkeley YACC," written by the same person who originally did bison.byacc is smaller, simpler, and faster than bison; it also generates smaller and faster parsers than bison. It is the standard yacc distributed with BSD/386 and other Net-2 descendents as well as BSD4.4. Needless to say, it contains no AT&T/USL code. It is completely compatible with AT&T Yacc's documentation, though it does not necessarily implement any undocumented features of AT&T Yacc.

Larry Broda <lbroda@s.psych.uiuc.edu> contributed ee-1.23 for Volume 26, Issue 242. Easy-edit (or "ee") is a simple text editor designed to be to be usable without any previous instruction. Easy-edit splits your screen into two windows; in one you edit your file and in the other a list of editing commands is displayed. Word wrap is automatic.

A version of the Berkeley tool inetd, enhanced for security and configurability, was contributed for Volume 26, Issues 244-275 by Panos Tsirigotis <panos@cs.colorado.edu>. xinetd is a direct replacement for inetd, the Internet Services daemon. It is also usable by anyone to start servers, not just those users that are listed in /etc/services. Anyone can use it for servers on unprivilged ports. It supports access control based on host address and time of day, extensive logging, prevention of some denial-of-service attacks, and can support multi-threaded and single-threaded services. It also comes with a useful included library which contains many reusable functions.

An otroff-to-HP LaserJet 4 filter was contributed for Volume 26, Issues 294-295 by Arthur David Olson <ado@-elsie.nci.nih.gov>. It supports the old C/A/T style troff and makes use of the scalable font support in the LJ4. Patch 1 was posted in Issue 297 to add a missing file.

On the patch front, the "ultimate mailing kit," kit, received patches 15-28 in Volume 26, Issues 220-233. Contributed by Raphael Manfredi <ram@acri.fr>. These patches fix many problems and add features such as getopt style option parsing, numerous security enhancements, and add.

Guido van Rossum's <guido.van.rossum@cwi.nl> Radio received patches in Volume 26, Issue 234 and Volume 26, Issue 240 bringing it to Patch level 4. Added were changes to support DEC's AudioFile server and LoFi hardware, some bug fixes, support for HP-UX, and support for multiple broadcast processes.

Library Extensions

The highlights from comp.sources.misc this time include several useful extensions for your function libraries.

A generic package for creating and manipulating linked lists was contributed by Anita Eijs <anita@bouw. tno.nl> for Volume 37, Issues 36 and 37, with patch 1 in Volume 37, Issue 88. linkedlist is a package to define, create, update, query and delete one or more (nodes of) linked lists and to sort the linked lists. linkedlist supports singly, doubly, chain (null-terminated) and circular linked lists.

libftp from Oleg Orel <orel@lpuds.oea.ihep.su> is a simple C interface to the FTP protocol. The library provides FtpConnect (host), FtpLogin(user, passw, acct), FtpGet(File), FtpDir(filespec), FtpDebug(handler), FtpFullOpen(remote or local, read or write), FtpError(handler), and many other functions, and should ease adding ftp access abilities to your programs. It was posted as Volume 38, Issue 52.

Chris Thewalt <thewalt@canuck.CE.Berkeley.EDU> has updated his input-edit with a new release in Volume 37, Issue 50 followed by patch 1 in Volume 38, Issue 4. Many interactive programs read input line by line, but would like to provide line editing and history functionality to the end user that runs the program. The input-edit package provides that functionality. As far as the programmer is concerned, the program only asks for the next line of input. However, until the users press the return key they can use emacs-style line editing commands and can traverse the history of lines previously typed.

A more extensive program, which can be used to reach similar goals is newing from Sam Lantinga <slantin@eis.calstate.edu>. Posted in Volume 37, Issues 92-94, newing is designed to provide an interface layer between you and your program. Within this layer you can use a history feature to prevent you from having to retype input to log the output of your program in a similar manner as the program "script;" to send the contents of a file to the program you are running, as though you had typed in the whole file from the keyboard; to detach painlessly from a program that has frozen your terminal or otherwise hung; to enable line editing on a program that normally have no such capability, such as csh or telnet; and to send automatic responses to the output of the program.

Mike Durian <durian@advtech.uswest.com> contributed tclm, an extended version of John Ousterhout's tcl (Tool Command Language) package. The extensions are designed to allow easy manipulation of Standard MIDI Files. The combination of the easy-to-use tcl interpreted language and the MIDI extensions makes it very simple to write your own MIDI applications. Tclm appeared as Volume 37, Issues 43-47. Mike also contributed xdrum, a wishm script that allows you to create and edit drum patterns under X11. You can then save these patterns as Standard MIDI Files for use by other programs, or as ASCII files for text editing and reloading. xdrum, Volume 37, Issues 48-49, requires tcl, tk, and tclm.

John Walker <kelvin@autodesk.com> has contributed a new twist on an old idea with xd. In Volume 37, Issue 56, he has provided a utility, as expected from the name, that dumps a file as hex bytes, showing the same bytes as ISO characters, with nonprinting characters (defined according to ISO 8859/1 Latin-1) rendered as periods. File addresses are shown as hex numbers without leading zeroes. What is new, however, is that if you specify the -l flag, xd will read a dump file in the same format it writes and create a binary file from the hex data. This allows you to dump a binary file with xd, edit it with your favorite text editor, then make a new binary file incorporating your changes. xd supports both in-place changes (not changing the size of the file) and stream mode where the file addresses are ignored and you're free to insert or delete bytes at will. These options effectively turn your existing text editor into a binary file editor without requiring you to learn any new commands.

Version 2 of the lout document formatting system was contributed for Volume 37, Issues 99-128 by Jeff Kingston <jeff@joyce.cs.su.oz.au>. lout offers a wide range of advanced features, including equation formatting, tables, diagrams, rotation and scaling, sorted indexes, bibliographic databases, running headers, odd-even pages, and automatic cross-referencing. lout is easily extended with definitions which are easier to write than troff or TeX macros. New features introduced by Version 2 include optimal paragraph breaking, automatic hyphenation, PostScript EPS file inclusion, ligatures, and many small enhancements and bug fixes.

Marc Wallace <wallace@math.berkeley.edu> contributed the C++ utility syfre for Volume 37, Issue 129. syfre is an encryption/decryption utility. The user inputs two eight-character passwords which are used to determine a sequence of 32 ciphers through which the data is passed. Input is read from stdin or from a file and output goes to stdout or to a file. Other options include using only 16 ciphers, for smaller output, and textual output for use in e-mailing or news.

A new release of procmail, the mail post-processing system, was contributed by Stephen R. van den Berg <berg@pool.informatik.rwth-aachen.de> for Volume 38, Issues 19-30 with patch 1 in Issue 31. New in version 2.90 are improved locking tests, an extended FAQ (Frequently Asked Questions) list, support for POSIX setgid, enhanced local delivery agent support, alternate conditional recipe-line syntax (to avoid counting the lines in the if), and portability and bug fixes as usual. Procmail can be used to create mail servers and mailing lists, to sort your incoming mail into separate folders/files (real convenient when subscribing to one or more mailing lists or for prioritizing your mail), to preprocess your mail, to start any programs upon mail arrival (for example, to generate different chimes on your workstation for different types of mail) or selectively forward incoming mail automatically to someone else.

On the patch front, Chin Huang <acthuang@zerosan.canrem.COM> updated cproto with patch 7 in Volume 37, Issue 87. This patch fixes a problem with string literals, which sometimes confuse the program. In addition cproto now handles #include directives where the file name is itself a #define macro.

Oraperl, version 2, was updated with patch 4 by Kevin Stock <kstock@encore.com> in Volume 38, Issue 9. Changes include fixes to ora_open and ora_do to ignore colons not followed by a digit (this avoiding problems with PL/SQL), and a few other bug fixes.

Long Time Coming

Its been under review since November (and perhaps the review process really helped this one), the latest from comp.sources.reviewed is gnugrep-2.0, from Michael John Haertel <mike@skinner.cs.uoregon.edu> for Volume 3, Issues 39-48. gnugrep is the GNU version of the grep set of utilities. It includes all of the grep features in one program along with the "standard" GNU features, such as long options, help summary built-in, and a readable man page. gnugrep can search for words containing both a sequence of letters, and the reverse sequence; ordinary grep can't. In addition, it's faster in most cases, (often much faster), more flexible, and supports all of the POSIX 1003.2 required constructs.

Another re-work inspired by reviewers comments was the re-release of woman-1.157 by Arne Henrik Juul <arnej@pvv.unit.no>. Appearing in Volume 3, Issues 50-51, woman stands for "Wonderful Online MANuals" for ANSI or POSIX systems. It's an enhanced version of the man command.

Patch 4 to c2man was contributed by Graham Stoney <greyham@research.canon.oz.au> in Volume 3, Issue 38. It fixes several bugs and addresses some portability issues. C2man converts C comments to manual pages.

Nethack Fallout

The largest posting to comp.sources.games was an update patch to nethack31 from Izchak Miller <izchak@linc.cis.upenn.edu>. In 33 parts, Patch 2 was posted as Volume 17, Issues 76-108. (The original posting was 116 parts). Changes: Amiga and Mac ports have again changed the most, both in added user interfaces for the previously existing windowing systems, and in added support for "tty" windowing; the MS-DOS versions may now use direct screen I/O instead of going through termcap routines; the SYSV 386 music driver was ported to 386BSD; the pickup and disclosure options were enhanced — information on the new usage is available from the Guidebook and intra-game options help; and of course, bug fixes.

A two-player board game for X which supports the users on different computer displays is malawi from Johannes Sixt <Johannes.Sixt@risc.uni-linz.ac.at>. Contributed for Volume 17, Issue 74, malawi is modeled after PIATNIK game No. 6104 by Gerhard Kodys.

Damien De Paoli <ddp@deakin.edu.au> released xmpb, a multiplayer space combat game for X displays. Its name stands for X-Multi-Player Blast, which describes it pretty well. It was posted in Volume 18, Issues 1-8.

Andrew Plotkin <ap1i+@andrew.cmu.edu> has extended the old spellcats program to produce an X version. spellcast, Volume 18, Issues 27-33, is a strange little strategy game where two or more players try to vaporize each other with a wide assortment of wizardly spells.

Previews from alt.sources

As usual, there's plenty in alt.sources, so here are just a couple of highlights of what's to come in the mainstream groups.

Thomas Driemeyer <thomas@bitrot.in-berlin.de> posted his X/Motif day planner on June 13, 1993 in eight parts (0-7). It's a schedule that displays a month calander similar to xcal, but the boxes are large enough to show appointments. Clicking on a day box expands it so it can be edited. It also supports various pop-ups on events.

Paul Bauwens <paul@pphbau.atr.bso.nl> posted on July 17, 1993 his fsk-0.91, file system survival kit in eight parts. It extends SVR4 UNIX to support DOS file systems (PCFS) and ISO9660 file systems (cd-rom), to include plain, rockridge and high sierra formats. All of the file systems can be NFS exported. The PCFS system even supports access to DOS partitions on your hard disk.