Columns


On the Networks

Relate Your Way Through the Storm

Sydney S.Weinstein


Sydney S. Weinstein, CDP, CCP is a consultant, columnist, lecturer, author, professor, and President of Myxa Corporation, an Open Systems Technology company specializing in helping companies move to and work with Open Systems. He can be contacted care of Myxa Corporation, 3837 Byron Road, Huntingdon Valley, PA 19006-2320, or via electronic mail using the lnternet/USENET mailbox syd@Myxa .com. (dsinc!syd for those that cannot do Internet addressing).

One of the highlights the past few months has been typhoon from Thomas B. Pedersen <zeppelin@login.dknet.dk>. It's a complete, freely available relational database management system for the UNIX and OS/2 environments. He contributed it for posting in comp.sources.misc as Volume 44, Issues 57-65. typhoon was originally inspired by Raima's db_VISTA (today Raima Data Manager) but is relational rather than network based. typhoon lacks some of db_VISTA's features, but also contains a number of nice features not found in db_VISTA.

All relations are defined in a Data Definition Language (dd1) file. You define the database relations like you would write a C structure with chars, ints, strings, multi-dimensional arrays, nested union, and structures, etc. Then you define primary, alternate, and foreign keys for each relation. The Data Definition Language Processor (ddlp) compiles the database definition into a binary file which constitutes the database description. The database relations are accessed via C subroutines which manipulate individual records within a table. typhoon supports the following features:

At present the database has no locking mechanism but it's in the works. Currently the author is working on extending the library to support locking, logging, transactions, and paging (to improve performance).

The library comes with three additional utilities:

dbdview displays the database definitions

tyexport exports tables from a database

tyimport imports tables into a database

Additional tools awaiting release, but being held up due to documentation issues, include online backup, restore, and a replication server.

Continuing on with highlights from comp.sources.misc, I report that an extension to Perl 4 to allow access to Sybase databases was re-released at version 1.011 as sybperl in Volume 43, Issues 46-47 by Michael Peppler <mpeppler@itf.ch>. Features added since the last release (1.009) include dbfreebuf, dbsetopt, support to set the language and character set on the fly via DBSETLCHARSET and DBSETLNATLANG, access to non-ASCII text, extensions to eg/dbschema.pl to extract stored procedures and views as well as tables, casts of data types now performed with DBlibrary typedefs instead of C datatypes, and some bug fixes. Note: This package does not work with the new Perl 5 version, just with the older Perl 4 versions.

Brad Eacker <beacker@sgi.com> contributed a set of tools and library routines to manipulate xbase files for Volume 43, Issues 48-49. dbf includes tools to list all the records in the file, extract a specific record, add or mark as deleted a specific record and to removed marked deleted records from the file. It also includes a utility to create the template file and a basic grammar recognizer for xbase .prg files.

A C++ class library to perform generic processing of gray-scale images was contributed for Volume 43, Issues 51-55 by Kiselyov Oleg <oleg@ponder.csci.unt.edu>. grayimage works on both images or rectangular areas within images, and can perform addition, scalar product, and modification of pixel values, based on equalization, histogram and filtration/convolution. The library implements morphological filtration as well. The package can read/write XWD, Group G TIFF, and PGM file formats selecting the appropriate method automatically.

The latest version of zsh, an extended UNIX shell based on the Bourne shell syntax, was released for Volume 43, Issues 89-107 by Bas de Bakker <zsh-list@sterling.com>. zsh adds lots of features to the standard Bourne shell syntax, including command-line editing, complete with programmable command and file completion; multi-line commands; variable editing; command buffer stack; printing text into the editing buffer; menu completion and inline expansion of variables; and history commands. zsh also adds an enhanced globbing package for wildcard expansion, including recursive globbing (like the UNIX find command) and file attribute qualifiers. It supports an enhanced redirection syntax including tee-like features, named directories, internal integer arithmetic commands, manipulation of array variables, and even spelling correction. zsh runs on almost any UNIX system.

The latest version of Project Info-ZIP's <zip-bugs@wkuvx1.wku.edu> portable UnZip utility was released as Volume 44, Issues 66-85. Version 5.12, is the first post of the 55.1 version and includes a self extraction stub, a rewrite of unshrink to avoid copyfight problems, -C option for case-insensitive filename matching, an added -L option to auto-convert filename case from upper to lower, wildcard support in UnZip itself, extraction to a specified directory other than the current directory, and performance tuning and bug fixes. While compatible with PKUNZIP, UnZip supports UNIX (many flavors), VMS, OS/2, MSDOS (+ Windows), NT, TOPS-20 (partly), AmigaDOS, Atari TOS, Macintosh, and Human68k. UnZip features not found in PKUNZIP include source code; default extraction of directory trees (with a switch to defeat this, rather than the reverse); VMS, Macintosh, and OS/2 extended file attributes; and, of course, the ability to run under most of your favorite operating systems.

The latest version of the JPEG image compression software was contributed by the Independent JPEG Group <jpeg-info@uunet.uu.net> for Volume 44 Issues 98-124. This package contains C software to implement JPEG image compression and decompression. JPEG is a standardized compression method for full-color and gray-scale images. JPEG is intended for real-world scenes; cartoons and other non-realistic images are not its strong suit. JPEG is lossy, so the output image is not identical to the input image. The user can trade off output image quality against compressed file size by adjusting a compression parameter.

Version 5 of the jpeg system includes a reusable JPEG compression/decompression library, plus sample applications cjpeg and djpeg, which perform conversion between JPEG JFIF format and image files in PPM/PGM (PBMPLUS), GIF, BMP, Utah RLE, and Targa formats. Two small applications, wrjpgcom and rdjpgcom, insert and extract textual comments in JFIF files. The package is highly portable; it has been used successfully on many machines ranging from Apple IIs to Crays. Version 5 includes user-level improvements over version 4:

The application programmer's interface to the library has changed completely. Some of the most notable improvements for the programmer are as follows:

Version 4.0 of dmake from Dennis Vadura <dvadura@plg.uwaterloo.ca> was released in Volume 45 Issues 1-27. dmake supports significant enhancements over other versions of Make, including:

I am always asked for easy-to-use editors for use by novices with Electronic Mail packages. One that appeared this time was ee (EasyEdit) from Hugh F. Mahon <hugh@nsmdserv.cnd.hp.com>. Posted in Volume 45, Issues 29-33, EasyEdit is intended to be a simple, easy-to-use terminal-based screen-oriented editor that requires no instruction to use. It supports menus and a help window, eight-bit characters and localization, and simple paragraph formatting capabilities.

yorick, a very fast interpreted language designed for scientific computing and numerical analysis, was contributed by David H. Munro <munro@icf.llnl.gov> for Volume 46, Issues 71-138. Its syntax is similar to C, but without declarative statements. yorick provides a very rich selection of multi-dimensional array indexing operations. It also features a binary I/O package that automatically translates floating-point and integer representations on the machine where it is running to and from the format of any other machine. Thus, you can easily share binary files between, for example, Cray YMPs and DEC Alphas, or "teach" yorick to read existing binary databases. yorick also offers an interactive graphics package based on X-Window. X-Y plots, quadrilateral meshes, filled meshes, cell arrays, and contours are supported. Finally, you can embed compiled routines in custom versions of yorick to solve problems for which the interpreter is too slow.

With the rash of WWW servers on the net, checking the pages for proper syntax before publishing them is difficult. Several HTML authoring systems have been released, and now Henry Churchyard <churchh@uts.cc.utexas.edu> has contributed htmlcheck for Volume 47, Issues 48-54. Version 4.0. The program checks for quite a number of possible defects in the HTML (Hyper-Text Mark-up Language) version 2.0 SGML files used on the World-Wide Web. htmlcheck is easy to use, and gives lots of information including advice about many stylistically bad practices. It can do local cross-reference checking and generate rudimentary reference-dependency maps. htmlcheck will run on any platform for which an awk or perl language interpreter is available.

This release of htmlchek also includes a number of supplemental utilities, including htmlsrpl.pl, the HTML-aware search-and-replace program. This utility uses either literal strings or regular expressions; acts either only outside HTML/SGML tags, or only within tags; can he restricted to operate only within and/or only outside specified elements; and can also uppercase tag names. Other utilities are as follows:

makemenu     Makes simple menu for HTML files, based on each
             file's <TITLE>; this utility can also make a simple
             table of contents based on <H1>-<H6> headings
xtraclnk.pl  Extracts links/anchors from HTML files; isolates
             text contained in <A> and <TITLE> elements
dehtml       Removes all HTML markup, preliminary to spell
             check
entify       Replaces high Latin-1 alphabetic characters with
             ampersand entities for safe 7-bit transport
metachar     Protects HTML/SGML meta-characters "&<>" in
             plain text that is to be included in an HTML file.
htmlcheck is a must for checking out your web pages before releasing them to the world.

Another HTML tool posted recently was m2h from Lawrence A. Coon <lac@cs.rit.edu>. Contributed for Volume 47, Issues 3-7, it's a conversion tool for translating documents written using troff/me macros into HTML. All standard me macros and many troff requests are handled, including paragraphs, sections, displays, indexes, delayed text, footnotes, and font specifications. m2h also provides support for user and predefined strings, and equations and tables, but not for user-defined macros. A local extension to me (.FI) allows inclusion of xfig figures that m2h converts to inline GIFs. The special HTML characters '<','>', and '&' are escaped and can be used in the me document without problems.

If you want to be able to perform FIP transfers with a C program, then libftp from Oleg Orel <orel@oea.ihep.su> is what you need. Posted in Volume 47, Issues 29-36, libftp is a simple C interface to the FTP protocol. The library contains 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. Also included is uftp (universal file transfer program), which is a user-interactive and non-interactive program to the ARPANET File Transfer Protocol (RFC959).The uftp client allows the user to transfer files, and groups of files in foreground and background modes.

On the patch front, dist-3.0, the Perlbased configuration script generator and related toolset received several patches over the past few months. As usual these patches added modules to the configuration library, fixed some bugs, and extended the portability of other modules. It also added support for the use of Perl 5.0 to the dist toolset. The six patch sets covering patches #27-48 appeared in the following: Volume 43 Issues 9-11, 42-43, 46-49, Volume 45 Issues 41-48, 55 and Volume 47 Issues 20-23.

mailagent, the Perl-based mail thrower, received several patches during this interval. Included are Patch 12-16: Volume 44, Issues 66-69, Patch 17-19: Volume 44 Issues 135-137, and Patch 19-22: Volume 45 Issues 49-53, Patch 23: Volume 45, Issue 56, Patch 24-26: Volume 47 Issues 9-11, Patch 27-29: Volume 47 Issues 55-57. The list of new features and bug fixes is too long to mention in the space I have available but the biggest are the switch to Dist 3.0 and Perl 5 support.

Shell Menus Revisited

A commonly recurring theme in UNIX utilities is a menuing system to make tasks easier for users. Mike Howard <how%milhow1@uunet.uu.net> contributed simple_menu-3.1 to comp.sources.unix for Volume 28, Issues 125-133 with patches in Issues 202-204. simple_menu makes it easier to create, maintain, modify, and extend menus of common operating system tasks for users. Typically users need to run fairly complex pipelines and/or shell scripts. Command-line execution is not a viable option, especially for clerical personnel and even more so for executive personnel. (This is especially true for infrequently executed tasks.)

Writing menus in shell script is problematic for a variety of reasons. For example, writing the prompt-request-response-execute/error loop for the zillionth time is a drag. Modifying a shell script menu often breaks the code, and the shell menus become excessively large, so it's difficult to even read and understand the old code in order to make modifications.

This program greatly alleviates such problems by introducing the following modifications/additions:

One new concept in computer communications is messenger-based systems. Messengers are protocol-unspecific instruction sequences that replace the protocol-specific messages on which ordinary computer communication protocols are based. Christian Tschudin <tschudin@cui.unige.ch> has contributed m0 for Volume 28, Issues 51-62. m0 (M-Zero) is a new high-level prograrmming language and execution environment designed for the messenger-based provision of computer communication services. As a language, it's very much analogous to PostScript. This experimental package contains a complete m0 interpreter and a 30-page report on m0, providing a brief introduction to the concept of messenger-based computer communications, and containing the m0 language manual and format definition.

If you need to perform syslog like functions, but you are not running TCP/IP, Arnold D. Robbins's <arnold@skeeve.atl.ga.us> simple-syslog is for you. It's a complete BSD-4.4 compatible syslog, but instead of using IP, it writes to stderr. This new update uses ANSI C and stdarg.h, and appears in Volume 28, Issue 63.

The UNIX utility from is very limited. Johnson Michael Earls <darkfox@netcom.com> has contributed a new version of his frowmho utility for Volume 28, Issues 92-93. Instead of just listing who your mail is from, fromwho tells you the total number of messages received; how many are new; and for each person who sent you mail, how many messages they sent, how many of those are new, and the subjects of the messages. fromwho supports both sendmail and MMDF-style mailboxes.

TCP/IP networks introduced a BOOTP server to allow diskless nodes to download their configuration and boot images. Over the years many extensions to the original BOOTP server have been written by various OS vendors. Gordon W. Ross <gwr@mc.com> has combined all of the extensions and bug fixes into a single server and contributed that server, bootp-2.4.0 for Volume 28, Issues 115-118 with a patch in Issue 119. It combines BOOTP, a bootp gateway program, NetBSD, Columbia, Solaris, SVR4, and HP extensions along with full support for names as well as IP numbers.

X has xlock to lock the screen from unauthorized use and to provide a screen saver. Now standard terminals can have slock-1.1 from Wes Bachman <wbachman@chop.isca.uiowa.edu>. Contributed for Volume 28, Issue 154, slock locks a user's terminal on a UNIX system, using the curses capabilities as an interface. Unlike the standard lock command, this package includes a number of enhancements, including incorrect password entry logging and a screen saver to enhance security when the user is away from his/her computer.

The output of ls -lR is not very useful when searching for files. It only provides the file name on the detail lines with directory lines preceding each new directory. This format is hard to use with grep. Dennis O'Neill <denio@scubed.scubed.com> solves this problem with fullpath-1.1.0 in Volume 28, Issue 146. full path-1.1.0 converts the standard ls-lR output format

/home/denio/fullpath-1.1.0:
-rw-r--r-- 1 denio         5945 Jun 23 11:08 fullpath.c
to

1992/06/23     5945  /home/denio/fullpath-1.1.0/fullpath.c
allowing grep once again to find the files. This is especially useful with the ls -lR files retrieved from ftp sites.

Out of Space

I am out of space for this month, but I've caught up on a large part of the backlog. Next time I'll highlight what's new and catch up on the backlog in the X sources group.