WorkMan changes


Version 1.3c-BETA 0 aka 1.3.4pre

Version 1.3b-BETA 2

Version 1.3b-BETA 1

Version 1.3b-BETA 0

This version is a sign of keeping alive. No great user-visible changes are done. Most changes concern the change of maintainers. The source code is mostly reformatted to fit the bad taste of the maintainer. I tried to switch from K&R to ANSI style, including prototyping. For several reasons, I centralized prototyping.

Release 1.3

All the documentation is now in HTML format, for (theoretically) easier navigation than poring through a bunch of text files. It's also online on, which is the real benefit; you can jump straight to the latest copies of everything.

Experimental support for fast database lookups using the Berkeley libdb code. Libdb is available on in /ucb/4bsd. See the master Makefile for details if you don't see any mention of libdb in your system's Makefile. You'll want to make "buildindex" and run it over your existing database files to index what's there already. That functionality might be moved into WorkMan at some point.

Various bugfixes to the FreeBSD and OSF/1 ports by John Kohl <>.

On the SPARCstation 5 (and possibly 20), audio is now available through the computer's headphone jack if there is a connection between the CD-ROM drive's internal audio output and the computer's audio hardware. Thanks to <>.

Volume control on the Toshiba 3501 is supported. Thanks to Greg Ames <>.

The bitmap format was changed to be byte-order independent. Previous versions sometimes produced strange-looking controls on little-endian systems (e.g. Linux machines.) Thanks to Jean-Gabriel Dick.

On ULTRIX, if the "CDROM" environment variable is set, it is used as the name of the CD-ROM device file, just like the "cdp" command-line tool. Thanks to Anthony Starks <>.

Updated README.solaris2 to be a bit more helpful, especially in regards to usage with the volume manager.

The "back" button (the upper-left one) goes to the beginning of the track if the track has been playing for more than 2 seconds. If you're less than 2 seconds in, it goes to the previous track as before. You can change the threshold with the "workman.reverseThreshold" resource; set it to something high like 9999999 if you want the old behavior.

Patched plat_hpux.c to work on HPUX 8.07 again (thanks to Henrique Jorge Fonseca <>.)

Fixed a problem with the usage message (thanks to Jeffery Small <!cjsa!jeff>.)

Release 1.2.2a (94/05/22)

The speaker icon in the CD Info popup is now made of two panel items, one for the "None" message and one for the pictures. That should eliminate a problem with the XView 3.0 library on Linux systems (and possibly others.)

Moved the window initialization code below the option parsing code. This should make "workman -s" a lot faster.

Unknown status codes from the generic SCSI-2 module now cause the tool to think the CD is ejected.

Merged in the FreeBSD port by Todd Pfaff <>.

Merged in a preliminary OSF/1 port by R.J. Edwards <>.

Release 1.2.1 (94/02/24)

The vendor and model fields of the wm_drive structure were supposed to be arrays, not pointers. This caused buffer overruns and segmentation faults, and required the -fwritable-strings flag to be used when compiling with gcc. Oops!

Added some code to scsi.c to handle a wider range of status codes from drives, which should make the program more robust on HP-UX and SVR4 systems. Also added similar code to plat_sun.c.

Added a note to the ANSWERS file about where to get the latest version.

Release 1.2 (94/01/29)

Completely revamped the organization of system-dependent code, previously in hardware.c. Now there is a low level platform module for each supported machine type, and there can be drive modules for drives that don't respond to generic SCSI codes. This should make the program much more portable and enable it to support nonstandard drives. These changes should not affect things from the user's point of view at all (though they make user-visible changes possible, such as the next items.) See PORTING for more info.

WorkMan now determines the current volume and balance settings at startup on the Sun CD drive. This renders the workman.initialVolume resource much less necessary, though it is still supported.

The Toshiba XM3301 and XM3401 drives are supported directly. Mainly this means that the volume knob on Sun systems will alter the volume on those drives, and that volume control is now supported under HP-UX.

Merged in BSD/386 port by John T. Kohl <>. Part of the port was making cur_cdmode an enumerated type rather than an int, which will hopefully make the code more readable.

Merged in SVR4 4.0 port by Baruch Cochavy <>.

Made special note of the XView "-scale" command-line argument in the manpage.

Added the workman.autoPlay resource. If it's set to "always", WorkMan will always play CDs when they're inserted. If it's "never", WorkMan will never autoplay a cd, regardless of settings in the .workmanrc file. The default setting is "normal", which uses .workmanrc to determine whether or not to autoplay.

If there was a big enough hole at the start of the .workmanrc file, after the global settings, and the Play Unknown CDs mode was selected, new entries weren't being written to .workmanrc.

On Suns, the status indicators would stop updating sometimes. This was due to a workaround for a volume manager problem. The workaround is more careful now and the status indicators shouldn't stop any more.

Release 1.1 (93/11/24)

Added small icons for the main panel controls (stop, play, etc.), which looks much better with -scale small, and better with -scale normal. The big icons are used with -scale large and -scale extra_large. This is determined by font size and controlled by a resource as described below.

WorkMan now reads X resources (finally!) to control certain behavior. The resources are as follows: workman.smallButtons If true, use small (16x16) icons for the main panel buttons. If false, use the old 32x16 icons. If undefined, the program will try to use the right size depending on how big the rest of the window is. workman.db.personal workman.db.shared These are just like the WORKMANRC and WORKMANDB environment variables, respectively; the resources override the variables. Use these to set database locations if you're using the Solaris 2.2 volume manager to start WorkMan. workman.initialVolume A percentage value indicating how high the volume should be set when WorkMan starts up.

New -D option allows specification of shared database location(s) on the command line. Overrides environment variable and resource settings.

Merged in Sony NEWS-OS port by Tatsuo Nagamatsu (

The -c option now works even if find_cdrom() doesn't (mainly affects ULTRIX)

Database files can't be directories or devices or pipes.

The track listing in the CD Info popup should be lined up properly when using monospaced fonts now. Alexander Dupuy (

New -C option forces the CD device to be closed after each eject, mostly for my flaky Sun CD drive which needs power cycling every so often.

Split the HPUX SCSI definitions into a separate headerfile, and made some other changes, to make hardware.c a little more readable.

Moved some code around in workman_stubs.c to make it more readable.

Fixed a bug that caused WorkMan to crash if you used "@//" in a track title when the previous track didn't have the artist redefined.

Some tweaks to database.c for use in the repository server.

hardware.c was missing an include file on Solbourne machines.

Changed the binary search algorithm in unscale_volume() so it can reach full volume no matter what the maximum value is.

The program now has minimal functionality under ULTRIX 4.3. Further support may be added in a future release (and patches are, of course, welcome.)

Changes to workman_stubs.c and hardware.c for Linux compatibility.

Release 1.0.2 (93/06/12)

Fixed a database-writing bug. WorkMan didn't always fill up available holes with entries that were small enough.

Added three new signals to control WorkMan from the command line. SIGTTIN goes back one track, SIGTTOU goes forward one track, and SIGEMT ejects the CD.

Added a "-s" option to send signals to a running WorkMan. Valid parameters are back, play (or "go"), fwd, pause (or "mute"), stop, and eject. The first letter of a command may be used (except pause and play, which require two letters.)

Added support for the Solaris 2.2 volume manager. The program will now locate and use the correct device on Sun systems (it tries /vol/dev/aliases/cdrom0, /dev/rdsk/c0t6d0s2, and /dev/rsr0, in that order) regardless of which OS version it was compiled under. You should be able to share a SunOS 4.x binary with Solaris 2.x systems without worrying about device names. If the "eject" program is used to eject the CD, the volume manager will spit out a message about loading an unnamed CD into the drive; there's nothing WorkMan can do about the message, as far as I can tell. This change shouldn't affect systems other than Suns, although some code was reorganized slightly.

Eliminated Solaris 2.x compiler warnings in hardware.c and display.c.

Eliminated compiler warnings resulting from returning NULL from an int function. Patch supplied by

Release 1.0.1 (93/03/04)

Support for Linux systems added.

Release 1.0 (92/12/24)

Rearranged the manual page to make it more useful.

Beta releases

Mail me if you really want to see this.

To the WorkMan home page