Thanks go to the following people, in no particular order:

Tim [tmo], whose ideas prompted the creation of this program's predecessor
(shnlen), and whose diligent testing helped iron out the bugs in that program.

Herschel Gelman, who had the great suggestion that shnlen could check to see
whether the .wav files inside the .shn's were properly cut on sector boundaries.
He also suggested that join mode could write to stdout, so that large amounts of
data could be piped into an external program, such as an mp3 encoder.

Caleb Epstein, for sending patches and helping to debug shntool, as well as
providing documentation and binary packages.  Also, for reporting the fix mode
hang, as well as providing a set of files that helped me reproduce it.
Additionally, for suggesting that info mode could tell whether .shn files were
seekable.

Jeff Kempka, for helping me obtain unruly files to aid in figuring out a rare
bug in the 0.9x series, as well as usability suggestions.

Bill Bumgarner, for suggesting that shntool move to GNU autoconf.  I learned a
lot in the process.  :^)

Paul Mather, for reporting bugs and compilation problems on platforms on which I
currently have no access, as well as testing and verifying their respective
fixes.  Also, for reporting the m:ss.ff rounding bug, as well as providing a
detailed analysis of the problem which expedited its fix.

Mike Kelleher, for contributing toward the design of split mode, as well as
helping to test it.

Mike Vernal, for providing the impetus (and nearly the code) to support AIFF, as
well as testing it.

Scott Brown, for putting the AIFF support through the wringer, helping to iron
out the kinks.  Also, for informing me that sox 12.17.4 now supports sowt-
compressed AIFF-C files.

jelly, for suggesting that join mode be able to join non-CD quality files.

Michael Dougherty, for reporting a bug where shntool would inadvertently include
extra RIFF chunks when calculating audio MD5 fingerprints.

Christian Weisgerber, who provided a Makefile patch.

Boogie Shafer, who was the first to suggest that shntool should support CUE
sheets.  Also, for the idea that split mode could split a file based on multiples
of a given time interval.  Finally, for enduring and reporting a seriously nasty
data-destroying bug in conv mode, which led to the implementation of file clobber
checks and the eventual instatement of 'ask' as the default overwrite action. :-/

John Cook, who was the first of several to ask for the ability to prepad files.
Also, for suggesting that shntool generate split points from an existing set of
files, and for suggesting that info mode show the sector-misalignment of
CD-quality files.

David Loehr, who was the first to report a set of files that could not be read
by shntool, which turned out to be caused by the existence of ID3v2 tags.
These tags are now skipped by shntool, leaving it up to external decoder
programs to handle them.

deep_elem, who reported a situation in which split mode would round extremely
small split points (0:00.001 - 0:00.020) to 0, causing shntool to error out.

Tim Ebben, whose keen eye noticed that the m:ss.ff value on the totals line was
reporting an incorrect value.

Greg Eriksen, for suggesting that shntool have an option not to add predefined
strings (e.g. "-fixed") to files.  This led to the ability to specify arbitrary
user-defined prefixes and postfixes.  Also, for suggesting that md5 mode allow
file reordering, for use with composite md5s.

M Blake, who was the first of several people to request the ability to trim
leading and/or trailing silence from files.

Dave Maley, who didn't like that split mode moved to a three-digit numbering
scheme (split-track001.wav, ...).  This led to the ability to specify your own
number format, in printf syntax (e.g. "%02d").

Krzysiek Wojszko, whose CUE file tripped up split mode so badly that I decided
I better try to support the whole CUE specification.  :)

Mike Harder, who reported a bug in split mode that prevented extremely large
files from being split correctly when using the -l option.

Michael Barnes, for contributing a patch to support natural filename sorting, and
for the idea that shntool can better utilize exit codes.

John, for suggesting that split mode be able to name output files based on TITLE
keywords in CUE sheets.

rob, for reporting a bug that prevented shntool from processing filenames read
from stdin under Windows.

Pierre-Yves, for offering to contribute code to name output files in split mode
based on several fields in CUE sheets.

David Bonde, for suggesting that split mode support user-defined lead-in and/or
lead-out.

Wim Speekenbrink, for reporting a bug where the last line of a CUE sheet that
lacks a newline character was not getting parsed in split mode.

Samson, for reporting a WavPack format detection issue and working with me to
discover the cause, which turned out to be a bug triggered by 64-bit systems.
Also, for providing me with sample CUE sheets that helped make split mode's
CUE sheet parsing more robust.

Thomas Strosslin, for reporting a major shortcoming in shntool's exit code
reporting (especially affecting conv mode), and for providing a patch to
address this issue.

Tom, for suggesting that hash mode use progress indicators, like other modes.

Paolo Saggese, for suggesting that shntool allow user-specified byte-shift
comparison buffer sizes in cmp mode, for those times when DAE is off by more
than the default of 3 seconds.

German Pulido, for reporting an issue in which self-extracting WavPack files
were not being properly detected by shntool.

Albin Larsson, for suggesting that fix mode should handle the case where just
a single file is specified (essentially postpad the file), which is especially
useful when using the -c option to check files for boundary issues.

Robert Rozee, for suggesting that shntool could read input filenames from a
file, instead of listing everything on the command line.

Mark, for reporting multiple issues with cat mode and providing fixes.

-------

Thanks also goes to the developers of the following software, from which I have
taken both ideas and code for shntool:

xmms - shntool's WAVE header parsing algorithm was based on the one in xmms's
       WAVE input plugin

proftpd - shntool's method for gluing modules together was adapted from the way
          proftpd handles it

sox - the WAVE_FORMAT_* defines and format_to_str() function were taken from the
      sox distribution

coreutils - the MD5 and natural filename sorting algorithms were lifted from the
            GNU coreutils distribution

v2strip - shntool's ID3v2 detection was based on the v2strip implementation

==================
Document revision:
==================

$Id: CREDITS,v 1.30 2009/03/30 06:31:13 jason Exp $
