# WorkMan changes

## 1.3.4

- Linux: Patched OSS code (thanks to Bruno Haible) to just warn and not stop if the mixer device is unavailable.
- Disabled CDDB code for release. In the Debian package the CDDB support is improved and reenabled again. In this package it is reliable now.
- Lots of tiny code changes. Includes removing of unneeded code.

## Version 1.3c-BETA 0 aka 1.3.4pre

- Added first CDDB support. Don't expect this to work now.
- Improved the open/close empty drive patch, so that WorkMan won't do nothing on drivers that don't support opening the device if the drive is empty. Note: The Linux sbpcd driver is such a driver. Slowly, I'm getting tired of this. The pcd driver from Zoltan Vorosbaranyi will help out of this. He always had the objective to optimize his driver for use with WorkMan :-). You can find it at the PCD homepage
- Finally, corrected the fuzzy matching. Thanks again to Adam Roach explaining me the idea behind some piece of his code.
  Fuzzy matching will now respect sections of tracks _and_ will find the closest match.
- corrected HTML errors in the (still outdated) documentation
- Several fixes and enhancements supplied by Debian maintainer Volker Ossenkopf
  - Real function to close cd tray
  - Workaround for fvwm window placement bug
  - Workaround for CD-ROM drivers which never return ENXIO (but EIO)
- AIX support added (from ascd distribution)
- Added Solaris suspend/resume awareness (from Casper Dik)
- Added Dan Mick's fixes to make WorkMan usable under Solaris again
- Added audio fixes from Steve McKinty
- first try to handle IDE drives on Sun platform
- Created CVS repository and changed Version numbering. After this writing 1.3c becomes 1.3.4
- Some XView changes (separated icon code)
- Worked around bug where titles of sections aren't displayed correctly

## Version 1.3b-BETA 2

- re-inserted parts of CDDA code
- changed the song position slider to react only after the mouse being released. This gives better responsibility on some systems.
- modified the makefiles to finally address the CERT vulnerability issue CA-96.23.workman_vul. WorkMan no longer is SUID root. Check that your CD-ROM device is world readable.

## Version 1.3b-BETA 1

- split up proto.h
- Added (alpha quality) terminal interface "workbone". Do "make workbone" to initiate compilation. Maybe this compiles and runs on Linux only.
- Added "XV_USE_LOCALE, TRUE" to the call of xv_init(). This should solve any character set problems. Maurizio Codogno <mau@beatles.cselt.it> wrote: "you should use en_US (NOT iso_8859_1) as LC_CTYPE". He is using Solaris 2.6 on an Ultra2.
- Added "delete" button. Counterpart for "insert" below. (In case you inserted one too many).
- Added "insert" button in CD Info Popup for inserting a track into a CD track list. (In case you missed a track during input)
- Fixed empty display of drive type in about box on failed SCSI INQUIRY command
- Bugfix: SIGSEGV ( signal 11 ) on exit.
- Retreated from the idea to use pid in generating pid file name. Why? Well, with the pid in the name, you won't easily find your WorkMan's pid file. Then, I assume you won't run WorkMan twice on the same machine (but /tmp as nfs dir will still be possible).
- Pid filename creation moved to beginning of main() to have it handy for output of the command line help.
- Added fuzzy search on the database. Different pressings of the same CD may now be recognized. New option -f <frames> to set the fuzzy range (execute "./workman -?" for some help).
- Bugfix: Second touch of Eject button closes DEFAULT_CD_DEVICE, no matter if -c option was used

## 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.

- Compile-time configuration has moved from Makefile(s) to config.h
- Eject button's metamorphosis to open/close button is partly done.
- Linux/SBPCD (and MCDX) user's problems are gone. Every CD change will be recognized correctly. Enable SBPCD_HACK for this.
- Generating unique pid file names (experimental)
- OpenBSD support
- Irix support
- "symmetric balance" for the balance slider: One channel's volume is raised while the other channel's is lowered.
- Linux Soundcard Mixer support.

## 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 www.midwinter.com, 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 ftp.cs.berkeley.edu 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 <jtk@kolvir.blrc.ma.us>.

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 <stevep@ctc.ih.att.com>.

Volume control on the Toshiba 3501 is supported. Thanks to Greg Ames <tga@lorax.assabet.com>.

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 <anthony_starks@merck.com>.

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 <hjf@athena.inesc.pt>.)

Fixed a problem with the usage message (thanks to Jeffery Small <quick.com!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 <todd@flex.eng.mcmaster.ca>.

Merged in a preliminary OSF/1 port by R.J. Edwards <rje@escact.ksc.nasa.gov>.

## 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 <jtk@kolvir.blrc.ma.us>. 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 <bcochavy@iil.intel.com>.

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 (nagamatu@sm.sony.co.jp).

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 (dupuy@tiemann.cs.columbia.edu)

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 lingy@rpi.edu.

## 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