Please have a look at the German open Source Center BerliOS at www.berlios.de BerliOS will continue to support free hosting of cryptography projects even when US laws change and don't allow to host cryptography projects in the USA. Also look at sourcewell.berlios.de, the first Open Source announcement service that itself is implemented as Open Source project. ***************** Important news **************************** For the 'Slottable Source Plugin Module' SSPM Features read README.SSPM ***************** Please Test ********************************* NEW features of cdrtools-2.01: All: - Support for the ELF format in BSDi 4.x - Allow floating point printing on OS/2. This has been possible since 11/2001 but OS/2 has been forgotten. - Correct OS/2 ranlib handling - New architecture 9000-831-hp - Include +DAportable in HP-UX cc options - README.hpux enhanced to include hints on how to compile 64 bit binaries. - Support for NetBSD on PPC (macppc-netbsd-cc) - portable getdomainname() replacement now supports to get the domainname from /etc/resolv.conf. This allows usage even on OS/2 - Typo in DEFAULTS files fixed - New generic target for symlinks - New file rename.c for portability part of libschily - Better Next STep support: - Some workarounds for broken unistd.h - -lkvm removed from Next Step config. - waitdefs.h fixed for very old BSD based systems (~ 1980) like Next STep - strdup() moved into portability part of libschily - fixed typo in fctldefs.h R_RDONLY -> O_RDONLY - New file ttydefs.h includes portability phrases from ved and bsh. - Added an autoconf test for buggy termios.h in Next Step. Next STep provides fully functional termios.h but tcgetattt(), ... is missing in libc. - Test for clock_t changed to deal with a bug in Next STep. Next Step illegally needs sys/time.h for clock_t - Make recently introduced symlink install use relative symlinks instead of absolute symlinks. - Change autoconf/statdefs.h to support nanosecond support for SCO UnixWare and FreeBSD - Call conf/mkdep-sco.sh via sh to be independent from 'x' bit. - libschily/rename.c fixed for SCO Openserver fo avoid warning for redefinition of MAXPATHNAME - libschily/usleep.c fixed to avoid SCO Openserver warning about non matchin prototype in system include files - Better Portability for SCO UnixWare - New platforms i486, i586, Pentium III, Pentium Pro - Let strdefs.h also include strings.h for strcasecmp() - Support for missing struct sockaddr_storage - Support for broken wait3() (returns wrong timings) - Changed broken portability Prototype support in libfile to use 'makefiles / prototype.h' based system - Changed fileopen() and filereopen() to avoid fdopen() provlems (does not accept mode string that does not match fd flags) - Catch the case where somebody tries to compile on Solaris with /usr/ucb in PATH before /opt/SUNWspro/bin and when calling 'cc' results in: /usr/ucb/cc: language optional software package not installed - Trying to make the source get accepted by 'cstyle'. - Changes in the general topic 'Stack Scanning' and the software signal system handlecond()/raisecond() that make the software signal system now usable on all platforms. - Trying to support DOS with the DJGPP compilation environment Thanks to Alex Kopylov for the first version of the port and further helping. Note that in order to compile cdrtools on DOS/DJGPP you need smake-1.2a20 or newer. GNU make does not seem to work for a DOS compilation. - New File README.msdos - New RULES for DOS/DJGPP - Make some vars in align_test.c static because Mac OS X creates unneeded name space pollution. - DJGPP has no SIGBUS, use #ifdef in avoffset.c and align_test.c - Several changes with casting Null pointer constants to Null Pointers if they are used as parameters in var arg lists (see below). - New gethostname() fallback emulation using uname(2). - Better rename(2) emulation for Platforms that don't have rename(). - niread()/niwrite()/nixread()/nixwrite() in libschily now resets errno to the old value in case EINTR did occur. - README.msdos has been corrected according to a hint from Alex Kopylov - New macros to platform independently set up integers in little endian format. This is needed to e.g. write PC disk labels from big endian platforms. - Rules extended to support volume management libs - The install-sh script not takes care about UNIX variants like SCO UnixWare and SCO OpenServer that allow to give away files via chown. If this works and /tmp has the sticky bit set, the root test was unable to remove the test files later. For this reason, now a subdirectory in /tmp is used. - Support for the special .PHONY: target ---> needs smake-1.2a21 or newer This helps to deal with files like INSTALL operating systems like Win32 and Mac OS that don't honor file name case and prevents the file named INSTALL to get into trouble with 'make install' - 'make install' now works on operating systems that require a '.exe' suffix for executable binaries - Updated the file README.ATAPI Updated information for Linux, SCO-OpenServer, SCO-UnixWare, Win32 and DOS - mconfig.h now supports make COPTX=-DNO_FORK & COPTX=-DNO_VFORK - snprintf() from libschily now correctly follows POSIX.1-2001 for maxlength == 0 - Workaround for a bug in the C-compiler from SCO-OpenServer. It is not very probable that this causes problems with cdrecord. The function getfp() did not return the correct Frame Pointer when called as first function in another function as the compiler sdoes set up the new stack frame after getfp() has been called. - New function filemopen(char *name, char *omode, mode_t mode) with additional mode_t parameter. - update recent getargs() version from repository. This has been forgotten. - Add a workaround for a SCO OpenServer C-compiler bug. The bug causes the first function in a function to be called before the new stack frame has been established and did cause scanning the stack frame to fail. - Make snprintf() POSIX compliant. - Many typos in the READMEs fixed, thanks to a hint from Stefano Allrath - New global method to handle PATH environment delimiters (":" on POSIX systems and ";" on DOS). - New README.msdos reflecting new features of smake-1.2a23 on DOS/DJGPP - Some minor enhancements to the makefilesystem - Some minor changes for better compilation in SGI IRIX - Trying to start adding support for Win32/Mingw32 - New global #define NEED_O_BINARY to make using setmode() easier - New autoconf test for struct stat.st_fstype - New autoconf test for fnmatch() - New autoconf test for blksize_t/blkcnt_t - libscgily/stdio/io.h renamed to schilyio.h to avoid conflicts with DOS. - Added a Note to README.linux: NOTE for all Linux 2.5.x versions and all Linux versions before 2.6.8: Linux did ship with defective kernel include files starting with 2.5.x. These defective kernel include files did prevent compilation. If you have problems compiling software and see error messages related to include/scsi/scsi.h & include/scsi/sg.h either upgrade to Linux-2.6.8 or newer or remove /usr/src/linux - Support added to the makefile system that allows compilation on AMD x86_64 using non automake aware make programs like GNU make. Note that smake ftp://ftp.berlios.de/pub/smake/alpha/ is able to compile things even on unknown platforms as it includes auto make features. Libparanoia (Ported by Jörg Schilling, originated by Monty xiphmont@mit.edu): - Included a bug fix from the libparanoia Author. Correctly allocate some arrays. Note: on 32 Bit machines, this patch does not result in a different binary but the code is now really correct. - New indentation is better conforming to 'cstyle' - Fixed a bug in libparanoia that prevented the statistics to show up the number of 'skips' (the number of exhausted read retries) when SKIP verification has been turned off. - modified to avoid GCCs shadowed variable warnings. - Try to use page aligned transfer buffers if possible. - Avoid buffer size problems wit non page aligned transfers on FreeBSD. - Avoid freeing pointers that are not from malloc() by copying the data to a second allocated chunk of free()able space. This has been a bug introduced while trying to handle buffer size problems with non page aligned transfers on FreeBSD. Libedc (Optimized by Jörg Schilling, originated by Heiko Eißfeldt heiko@hexco.de): Libscg: - Reordered and restructured scsi-remote.c code to allow compilation on OS/2 and hopefully other OS like BeOS - First attempt to support QNX. Note that the sourcecode comes from QNX and it looks as if it is buggy for commands that cause SCSI commands that result in a Check Condition status. From looking at the source, the stack gets overwritten in this case. - SCSI adaptation layer for SCO UnixWare rewritten to support multiple opens and to better follow the libscg interface standard. - Second attempt to support QNX. Make it compile - Check kernel level error return codes on SCO-UnixWare - Starting to support SCSI reset on SCO-UnixWare - Extensions to libscg related include files to support DVD+RW formatting - Make libscg work on SCO UnixWare if an application like cdrecord has been installed suid root. Before, the called administration programs did not work if euid!=uid - Fixed a problem with possible garbage in the SCSI error string. Thanks to Stefano Di Paola for reporting. - Fixed another printf buffer vulnerability in scsi-remote.c - New version of scsi-amigaos.c from Thomas Langer - Added a work around for a Solaris 9 x86 bug: DKIOCINFO returns a max DMA size of 256 kB but only 68 kB will work. Check max DMA size for a IDE disk to get a correct value.... For more information read the updated file README.solaris and the new files README.solaris-x86-ata-DMA and README.solaris-x86-ATAPI-DMA - Changed scsi-os2.c to allow 'cdrecord -scanbus' to find targets with target ids > 7. - Librscg now uses correct casting to a Null Pointer for execlp() as NULL is a Null Pointer Constant but no Null Pointer. This could make problems with some 64 bit architectures. - New driver scsi-dos.c acting as 16 bit DOS ASPI interface Thanks to Alex Kopylov for the first version of the driver. Check his Web Page: http://bootcd.narod.ru/index_e.htm it contains precompiled DOS binaries. - The driver scsi-dos.c has already been verified with 'scgcheck'. - scsi-os2.c and scsi-wnt.c now correctly return 0 from scg_send() if the target is not valid. - scsi-wnt.c does now support multiple SCSI opens. - scsi-wnt.c does now correctly return SCG_NO_ERROR in case a SCSI command returned CHECK CONDITION. - scg__open() now prints a warning if it has not compiled with the results from a certified autoconf environment. - Introduced a fix to avoid the need for a #define ident prod_ident for SCSI Inquiry data. This #define did cause problems with the latest Sun Studio 8, C compilers - First attempt to support running cdrecord while the volume management is active. - Increased version number to 0.8 - First attempt to work around the problems for suid programs introduced by Sun with Solaris 9. Programs that like to issue a USCSI ioctl() need to be root or get EPERM. Cdrecord did does up root privilleges eraly to avoid security problems. libscg now selectively runs the USCSI ioctl() as root if the program is installed suid root. - Fixed a bug in scsi-mac-iokit.c in scgo_havebus() that caused pxupgrade not to work on MacOS X. - First attempt to support the SPTI Ioctl interface on Windows NT. see also http://www.ste-home.de/cdrtools-spti/ Thanks to Richard Stemmer, Jay A. Key and thomas podkanski This allows to use cdrtools on NT without the need to install ASPI in case you are administrator when yu run a program. Please note that the use of SPTI is default. If you like to force using ASPI, use dev=ASPI:b,t,l or dev=ASPI (in the -scanbus case). If you like to force STPI, use dev=SPTI:b,t,l or dev=SPTI. Currently, the interface does not yet fully matches the scg interface standard. - Try to support the half hearted and badly designed /dev/hd* interface from Linux-2.6 in a more usable way. The only reason for adding this kind of support is that the Linux kernel hackers reject to fix the known DMA bugs in the already existing SCSI transport interfaces in the Linux kernel. Using /dev/hd* is unfortunately the only way to get DMA with sector size being 2352, 2448 or similar. Use cdrecord -scanbus dev=ATA and cdrecord dev=ATA:1,0,0 Note: The Bus mapping function inside the kernel for this interface is a dummy. For this reason, we need to do the mapping ourselves. Busnumber is ("/dev/hd*"[7] - 'a') / 2 Target is ("/dev/hd*"[7] - 'a') % 2 Also note that creating this interface in the Linux kernel was a waste of time. It did need a lot of effort to be created. Instead of first adding a new interface with a new broken DMA implementation and later fixing the DMA bugs, it would have been better to just fix the DMA bugs in ide-scsi.c Adding SCSI transport to something like /dev/hd* on an OS that includes a generic SCSI transport driver is disregarding SCSI protocol layering. A clean way to implement ATAPI on Linux would be to rather introduce a SCSI hostadaptor driver that sends the SCSI commands via the ATA hardware. Linux users should think about buying a CD writer for Linus Torvalds. Maybe this could help to get better SCSI support in the Linux. Currently Linus doesn't know anything about the CD-writing problems on Linux and his contributions to CD-writing related issues in discussions are just guesses that are not related to own experiences and understanding for the matter :-( It seems that the Linux way of dealing with bugs is to implement a new incompatible interface instead of fixing the known bugs from old interfaces :-( - Allow cdrecord -scanbus dev=ASPI and cdrecord -scanbus dev=SPTI to work on win32. - Correct a bug in the Win32 version analyze function that is needed to use the correct SPTI interface. Unfortunately, the interface did change with a NT-4.0 service pack. It is unclear whether the currently used interface type is correct for all possible NT-4.0 variants. - For Win32, default to STPI only if on NT-5.x as there is a bug in some UDMA implementations that causes blue screens. - The Mac OS X SCSI low level transport now roughly meets the interface standard. For this reason, the file scsi-mac-iokit.c now is marked with Author "schily" - Indented according to the cstyle standard. - For win32, dev=ASPI:1,0 and dev=SPTI:1,0 work again - Trying to add a workaround for the Linux problem with USB where the kernel issues a request sense even when there was only a DMA underrun and the drive replies as expected with no-sense. Our problem in this case is that we needed to ad another workaround because sometimes Linux clears the status byte and we did assume a CHECK CONDITION in case sense[0] was != 0. - Enhanced max # of SCSI busses to 256 for the Linux sg driver. This was needed because of the (compared to Solaris) suboptimal way of dealing with instance numbers on Linuux. While Solaris keeps a data base with instance numbers, disconnecting and reconnecting a USB drive results in the USB device getting the same SCSI address as before. As Linux does not have such a data base, disconnecting/reconnecting a USB device has the unfortunate side effect of assigning a new and different SCSI address with every USB connect. This also creates problems when software likes to manage access rights to devices for non-root users. - Win32 SPTI interface now also supports controllers with more than one SCSI Bus. Thanks to Richard Stemmer - Fixed a bug in the Win32 SPTI/ASPI interface introduced with 2.01a28 that caused core dumps because it did try to access data behind the end of the sense data array in the ASPI cmd structure. - Scan /dev/hda../dev/hdz instead of /dev/hda../dev/hdt for dev=ATAPI on Linux. - Trying to write a better warning message for the dev=ATAPI: interface on Linux (the related kernel interface is unmaintained and does not support DMA at all). - Fixed a bug in Win-NT Version string handling in scsi-wnt.c Thanks to Alex Kopylov This caused that libscg did not properly recognize NT-4.x with service pack 4 to be equivalent to NT-5.0 (Win2k). - Trying to avoid using the WinNT-SPTI interface for NT-4.0 - Fixed a security bug in scsi-remote.c (the RSCSI client). Rscsi: - Support for IPv6 - Workaround for missing struct sockaddr_storage on SCO UnixWare - Security update. Forbid to write arbitrary debug files, only allow a debug file name that has been configured in /etc/default/rscsi. Writing arbitrary files with a siud root program could be used to become root on a local machine if you are already logged into that local machine. - README.rscsi typo's corrected. Cdrecord: - Use correct set_mode_params() return value in deflt_writemodes_mmc() - Correct a debug printing to go to stderr instead of stdout. - Workaround for broken Firmware for LG (Lucky Goldstar) drives. These drives have been unable to write Audio in TAO mode because they have an illegal audio pause length default. Thanks to a hint from: Mark Vytlacil - Man page now correctly describes the data formats used with -xa1 & -xa2 - Use Prototypes for functions with enum parameter in fifo.c to avoid warnings on SCO UnixWare - Trying to catch SIGHUP to avoid hung recorders after people close X windows by accident (This in most cases happens because some newer GUIs try try copy bad ideas from Microsoft like the 'x' button on the top bar in the window. - Trying to print hints if the SCSI error core looks like a buffer underrun occurred. - First (still mostly empty) driver for the Matsushita CW-7501 - First TAO writing support for the Matsushita CW-7501 - New option -setdropts to allow cdrecord to set driver specific parameters and exit. - Added support to disable/enable the Plextor PowerRec feature. Use driveropts=forcespeed Be very careful as this will cause in badly readable disks. The only senseful reason to use this feature is to run tests in -dummy mode to check whether the system would be able to record fast enough and to later buy High-Speed Media. Note that documentation for the related SCSI command is not oficially available and thus the information has been "guessed". - Added support to enable/disable the Plextor SpeedRead feature. Use driveropts=speedread to allow the drive to read CDs faster than 40x. Be very careful as this may cause the media to break in the drive while reading, resulting in a destroyed media and drive! Note that documentation for the related SCSI command is not oficially available and thus the information has been "guessed". - Added support to enable/disable the Plextor SingleSession feature. Use driveropts=singlesession This allows to read defective (illegal) media with extremely non-standard additional TOC entries. You need to enable Single Session mode before you insert the defective disk! Note that documentation for the related SCSI command is not oficially available and thus the information has been "guessed". - Added support to enable/disable the Plextor Hide CD-R feature. Use driveropts=hidecdr This allows to make CD-Rs look like CD-ROMs and applications believe that the media in the drive is not a CD-R. Note that documentation for the related SCSI command is not oficially available and thus the information has been "guessed". - Added reading out "real" Burn-Proof counter for Plextor drives. Note that documentation for the related SCSI command is not oficially available and thus the information has been "guessed". - Try to do a more correct job when doing Buffer Underrun estimation counts. - Make the explicit Buffer underrun error checking work for Plextor drives too. - Fixed the command line parser for driveropts= parameters. Before the fix, driveropts=noburnfree,hidecdr would result in assuming: driveropts=noburnfree,nohidecdr - Now also supporting SAO/DAO write mode for the CW-7501 - New option -lock (similar to -load) that loads the media but leaves the drive in locked status. - New driver interface to allow SAO recording for the CW-7501 Simplified: "dummy" and "multi" Parameter information has been moved into the track structure. - Removed the internal implication that -packet is a TAO write mode. Please test! It may be that this did introduce bugs. - Try to avoid ANSI C arithmetic conformance change warnings from SCO C-compiler by introducing proper casting. - Driver interface restructured to support aborting SAO recording with the Sony CDU-948 - "Driver flags" printing corrected - Better behavior with CADDY drives and -load option - Fixed a bug that caused cdrecord not to abort if Tracks with unknown length are present in RAW write mode. - Print extended Power Rec Speed information for Plextor drives. - CUE Sheet handling generalized to allow to implement SAO writing for more drives. - Start supporting the Sony CDU-948 in SAO mode. Currently not yet working: - Multi-session - MCN/ISRC - Grace time handling restructured. The grate time waiting is now done even before the forced blanking and it is made sure that the waiting is done only once. - Several changes in the open source part are visible as a result of the new DVD+RW / DVD+R support. - cdrecord-ProDVD now includes first DVD+RW and DVD+R support. Check ftp://ftp.berlios.de/pub/cdrecord/ProDVD/ on Thursday 24.4.2002 for the first binaries - Do not try to lower the possible number of open files in raise_fdlim() anymore. - Check return code of driver's init function. - Better error messages from main write loop. - Write a hint that a user may have used a "preformatted" CD-RW if read_next_writable_address fails for the "invisible" track and tell him to run cdrecord blank=.... - Fixed a bug that caused cdrecord to prevent a 3rd session on a multi session disk. This bug was introduced with the driver restructuring a few releases before. - Better driver text strings for the driver IDs in the CD MMC drivers. - Move Plextor PowerRec speed info completely to the statistics _past_ the recording activities. - Allow more nonstandard Cue sheets to be accepted by the Sony CDU-924 and CDU-948. - Implement MMC-3 DVD+ Drive/Media recognition to avoid that cdrecord starts to treat a DVD+ as a CD-R because the DVD+ drive identifies as CD-R/RW + DVD-ROM with "no DVD media installed" from a MMC-2 viewpoint. - Added a note to the cdrecord man page how to use mkisofs to allow cdrecord to knoe about track sizes in SAO or RAW mode. - Fixed a multi session bug that has been introduced with the DVD+R/RW restructuring with cdrecord-2.01a11. This bug caused cdrecord to be unable to start a track from a sector number != 0 in TAO mode. - Fixed a problem with cdrecord -msinfo introduced with the the DVD+R/RW restructuring with cdrecord-2.01a11. The unwanted verbose printing has been removed with this version. - New option -xa to create CD-ROM XA mode 2 form 1 sectors with 2048 bytes of user data - New option -xamix to create mixed CD-ROM XA mode 2 form 1/2 sectors with 2332 bytes of user supplied data. - Restructured sector types to make them usable: -mode2 CD-ROM data mode 2 - 2336 bytes -xa CD-ROM XA mode 2 form 1 - 2048 bytes -xa1 CD-ROM XA mode 2 form 1 - 2056 bytes -xa2 CD-ROM XA mode 2 form 2 - 2324 bytes -xamix CD-ROM XA mode 2 form 1/2 - 2332 bytes To write conforming CD-ROM XA multisession disks use cdrecord -multi -xa1 together with mkisofs -XA -sectype xa1 - -cdi is now implemented how it should be: as a flat to change the TOC type of a CD and not as a sector mode. - Track parsing completely restructured to allow new features. One of the features is to write audio CDs from a pipe, other features will follow. - Cdrecord now resets euid to the uid of the caller (if called suid root) before it opens data files. - Fixed a bug that caused cdrecord to insert two grace wait periods if a disk was blanked and rewritten in one call. - Allow cdrecord to copy audio CDs from a pipe from cdda2wav without using an intermediate file on disk. To copy an audio CD from a pipe (without intermediate files), first run cdda2wav dev=1,0 -vall cddb=0 -info-only and then run cdda2wav dev=1,0 -no-infofile -B -Oraw - | \ cdrecord dev=2,0 -v -dao -audio -useinfo -text *.inf This will get all information (including track size info) from the *.inf files and then read the audio data from stdin. If you like to write from stdin, make sure that cdrecord is called with a large enough fifo size (e.g. fs=128m), reduce the write speed to a value below the read speed of the source drive (e.g. speed=12), and switch the burn- free option for the recording drive on by adding driveropts=burnfree. - New option -abort allows you to send a write abort sequence to a drive. This may help if other software did leave the drive in an unusable condition. - New 'xio' module allows to open a file virtually more than once to support CDRWIN CUE sheets in cdrecord. - Run Plextor Speedinfo SCSI command in silent mode as old Plextor drives do not support this command. - Workaround for a Plextor (Premium only???) firmware bug that may result in a B0 pointer A5:A5:A5 instead of FF:FF:FF. This made it impossible to blank a freshly written CD-RW witout reloading the media. Now cdrecord does not check the disk size anymore if the number of tracks to be written is 0. - First CDRWIN CUE sheet support. Cdrecord currently supports what is in the CUE sheet description in the CDRWIN documentation (with a few exceptions). Note that the examples in the rest of the CDRWIN man page are mostly illegal if you compare them against the CDRWIN CUE sheet syntax documentation. These exceptions are currently in effect: - Only one FILE Line per CUE sheet file (This is compliant to the CUE shet format documentation although the examples show CUE files with more than one FILE line). NOTE that the CUE syntax has been ill defined so that it would not make sense to e.g. use more than one FILE line for audio CDs. - The AIFF File type is not implemented (because I have no documentation for this audio file format). - The MP3 File type is not yet implemented. - The CDG data type keyword will not yet work - The CDI data type keyword will not yet work - Only a sector size of 2048 will work with MODE1 - Sectors with sector size 2336 will not yet work - POSTGAP will not yet work. Note that the CDRWIN CUE documentation is bad and it is unclear how formless (non XA) MODE 2 sectors should be made. CDI is not a sector/track property but a disk property. The File type BINARY vs. MOTOROLA is unclear. To use the cue sheet feature call: cdrecord dev=.... -v -dao cuefile=xx.cue The main reason for implementing CUE sheet support was to allow to write VCD/SVCD with cdrecord. It has currently tested with the test SVCD from ftp://ftp.vcdimager.org/pub/vcdimager/examples/test_svcd/ Cdrecord should allow to write audio type CUE sheet based CDs also. - Modified the notes close to the Copyright printing code in cdrecord.c to make clear that this note is not a deviation from the GPL but just a memorandum on how to understand the GPL. - Fixed a bug in file descriptor handling that caused cdrecord not to continue at offset xxx in the file after a new track did start. - Added a forgotten feature in the CUE Sheet parser so it will now know that WAVE files use swapped (intel) byte order. - Restructured the main program of cdrecord so that cdrecord overall behaves similar to before when cue sheets are used. e.g. cdrecord -eject cuefile=xxx did only eject the disk instead of first writing and then ejecting. - Added some hints to the man page to make speed= handling clearer - Fixed some typos in the man page - Added the -format option to the man page - CD-Text handling reworked: CD-Text from textfile= or from CUE CDTEXTFILE wins over CD-Text from *.inf files and over CUE SONGRITER. - CD-Text from CUE file (either CDTEXTFILE or SONGRITER) now needs -text in addition in order to be not ignored. - Fixed a bug in the recognition for cdda2wav | cdrecord *.inf that caused a message WARNING: Stdin is connected to a terminal. if not writing from a pipe. - Small fix in auinfo.c to again allow compilation on K&R systems - Typo fixes for the cdrecord man page - The clone write code is now part of the GPL'd source Note that this part of the code is now more than 2 years old but previously has been excluded from the publically visible part of the source. To understand how to use the clone mode read README.clone - New option ts= to set the SCSI transfer buffer size - Man page corrected to correctly mention current format for /etc/default/cdrecord - call setmode(fileno, O_BINARY) for DOS/DJGPP also - Better check if we use the FIFO to avoid core dumps with too small FIFO sizes. - Switch off FIFO of fifo size is < 2 * SCSI transferbuffer - Fixed a small bug in the man page (..sp instead of .sp). Thanks to Eric Raymond for reporting! - Work around for a problem in the Plextor 708 firmware (at least 1.01..1.02) that caused cdrecord to be unable to recognize that a DVD medium is present instead of a CD medium. - Changed the GPL clarifications text in a way so Debian people still agree with me that cdrecord is free software. The clarifications are needed in order to tell people/companies (like Mr. Rosenkranzer, RedHat & SuSE) who create broken branches from cdrecord that they are not legally publishing their branches because they violate the GPL § 2 Paragraph c) and GPL Preamble Section 6). If would be better if the named persons/companies would rather stay in contact to the Authors, discuss things and contribute to the community instead of creating useless/broken changes and in case of SuSE Linux even creating hacks that introduce security risks. Note that now, RedHat Linux (enterprise server) or the SuSE Linux are even more expensive than e.g. Solaris x86, see: http://www.osnews.com/story.php?news_id=5416&page=5 Small Correction to this web page: Solaris x86 is free again for personal use. - Extended the man page to make it more clear that all CD/DVD-writers ever made use only SCSI commands. - Another change to the man page according to a hint from Eric Raimond in order to get better compliance for troff -> "*ml" converters. - Allow people who cannot provide an e-mail address or who don't like to support their modifications to modify cdrecord - Some CUE sheet modifications in drv_mmc.c now made it into the official SCCS history file. - Several fixes to avoid the need for a #define ident prod_ident for SCSI Inquiry data. This #define did cause problems with the latest Sun Studio 8, C compilers - Hack to work around a POSIX real time priotity design bug that causes us to become root again on e.g. Linux in order to be able to lower the priority of the FIFO background process. - Better documentation and EXAMPLE for -setdropts driveropts= in the man page. - print a help message to direct the user to use -raw96r in case the drive does not accept the cue sheet with -dao. - Mark all drives that cannot be accessed because the volume management is running and no media is in the drive with '?' instead of '*', so they may be distinct from non existing drives. Read README.volmgt for more information - Now works again suid root on Solaris 9 - Fixed a bug introduced in 2.01alpha by a source consolidation. cdrecord -toc did not work anymore for CD-ROM readers - Updated README.audio - Make the CUE Sheet handling search for a file name from a FILE statement also in the directory where the CUE sheet is found (in case there is no slash (/) in the file name from 'FILE'). - Avoid coredumps when cdrecord is called with -xd and there is no known driver for the current drive. - New option -tao is now needed if you like to write in TAO mode. Cdrecord now does no longer writes if no write mode has been specified. - New option -sao as alias for -dao. As the official name for the write mode is SAO, -sao is more correct than -dao. - Fixes for minor typos in cdrecord.1 - Fixed a bug with pad=xxx and pad sizes > 2 GB. - Trying to fix a bug introduced lately with the check for specified write mode options. As a result, only TAO mode writing did work. - Better man page & online help for the ts= option. - Fixed a typo in the man page. - Better error messages when audio size is < 300 Sectors or needs padding. Thanks to a hint from Stefano Allrath - cdrecord -scanbus now checks for 256 SCSI busses - cdrecord -scanbus now checks for 256 SCSI busses This has already been announced for 2.01a28 but forgotten to include - Some Man Page Fixes trying to avoid coding problems for non 7-bit ACSII - Several typos in the man page fixed - Man page enhanced to include a better documentation for the driver= option. - Several other enhancements to the man page - modified to avoid GCCs shadowed variable warnings. - Cdrecord now tolerates the OPC "error code" "Power calibration area almost full" to not a real error. - Fix for a bug that caused cdrecord to be unable to reload the media for some drives. The fix helps with the following problem: Trying to clear drive status. cdrecord: Drive needs to reload the media to return to proper status. cdrecord: Cannot load media with this drive! cdrecord: Try to load media by hand. cdrecord: Cannot load media. - man page enhanced - Print the "Make sure you are root" only if root privilleges are missing. - Avoid warning for not working nice() on DOS Thanks to Alex Kopylov - -clone option documented in the man page. This has been forgotten before. - Several typos in the man page fixed - Do not try to call nice() on DOS/DJGPP - cdrecord now tries to check the DMA speed if the drive supports to read the drive buffer. If the DMA speed is not sufficient, then cdrecord requires that burnfree is activated. If the environment variable "CDR_FORCESPEED" is set or -force has been specified, then cdrecord does not try to enforce that the available DMA speed is 2x the expected write speed. - Make some symbols static to avoid problem with a badly designed libc on OpenBSD that violates POSIX by pulluting the namespace with symbols like 'pl'. Cdda2wav (By Heiko Eißfeldt heiko@hexco.de): - fixed typo in cdda2ogg.1 - Do not use uname() but gethostname() for portability. - include unistd.h for abs() - old Toshiba's usable again - Multisession Non-CD-Extra disks now work again Now also a lot more broken disks are readable again. - not using ioctl in signalhandler any more - trying to support sound on Win32 - Several changes (mostly OS/2 related) for more ask Heiko - bugfix add cdda2ogg manpage,and script and makefile install target - support BeOS shared memory and FIFO - support soundcard output under QNX - windows-users! Cygwin has fixed the bug introduced with 1.3.18. Please upgrade to the new 1.5.3-1 release. - call setmode(fileno, O_BINARY) for DOS/DJGPP also - Now using the major() macro for some Linux duties. WARNING to creators of Linux distributions: It has _always_ been wrong to compile software only once for different kernel versions (e.g. for compile Linux-2.4 and later install a 2.2 kernel on the so created system). Now that Linux-2.6 introduces incompatible changes to kernel/user interfaces, the resulting binaries will not work correctly anymore. - Made CD-Text handling reentrant to overcome a problem triggered by XCDRoast - Now works again suid root on Solaris 9 - Fix for a Bug that prevents paranoia statistics from being printed because the paranoia statistics for the forked version has not been inside the shared memory. - New paranoia sub option paraopts=overlap=xx This is mainly a bug fix for cdda2wav. Cdda2wav previously _always_ did completely deactivate the dynamic overlapping from libparanoia. Instead, it did set the overlapping to the statical value 0. If you omit paraopts=overlap=xx, cdda2wav will now use dynamic overlapping with -paranoia. If you like the old behavior, use: paraopts=overlap=0 - New paranoia sub option paraopts=minoverlap=xx This sets the minimum dynamic overlap - New paranoia sub option paraopts=maxoverlap=xx This sets the maximum dynamic overlap - Better paranoia statistics output - Fixed a Problem with some Linux sound card drivers that caused cdda2wav to be unable to output to the soundcard. - cdda2wav now checks /etc/default/cdrecord and accepts dev=plextor as cdrecord does. - Trying to add verbose output that estimates the read quality with -paranoia - Trying to convert non-ascii characters in user & host names into '_' for better cddb compatibility. - Some Man Page Fixes trying to avoid coding problems for non 7-bit ACSII - New option -scanbus - Removed some "historical junk" that caused cdda2wav to define a compile time default input device. This conflicts with cdda2wav -scanbus and is superfluous and contra productive since cdda2wav reads /etc/default/cdrecord - cdda2wav has signed bitfields of size 1 :-( - Fixed a typo in cdda2ogg.1 - Bug fix from Heiko for index lists that contain offset values of -1 in the middle - Trying to handle interface setup more carefully if SCSI Generic is not used. - Better Debug Code in setuid.c - Trying to fix a bug in UID handling on FreeBSD Thanks to the bugs reports and help from Fabian Keil - Try to workaround a bug in GCC that caused incorrect warnings for "strict-aliasing rules" Readcd: - First (hacky) implementation of a way to meter the read speed as a function of the disk location modeled after a idea from Markus Plail Call: readcd dev=b,t,l meshpoints=1000 > outfile then gnuplot gnuplot> plot "outfile" w l or gnuplot> replot "outfile" w l if you like to overlay graphs. - New option fs=# (same syntax as with cdrecord fs=#) to allow the user to set the maximum transfer size even in non-interactive mode. This may help is the OS (as it has been the case for Solaris 9 x86) reports a wrong maximum DMA size or there is a bug in libscg. - Speed printing with meshpoints=# now is based on 1000 bytes == 1 kb as documented in the SCSI standard. - Stop reading if the OS replies with a DMA residual count != 0 - New option -factor will cause the read speed values to be printed be based on the single speed of the current medium. This is only possible if readcd is able to find out the current medium type. - The clone read code is now part of the GPL'd source Note that this part of the code is now more than 2 years old but previously has been excluded from the publically visible part of the source. Clone writing has been designed to allow to copy complex structured media like e.g. SVCDs without the need to first do a sector by sector analysis on the source media. To understand how to use the clone mode read README.clone - New option ts= to set the SCSI transfer buffer size - call setmode(fileno, O_BINARY) for DOS/DJGPP also - Now works again suid root on Solaris 9 - Better man page & online help for the ts= option. - New option -scanbus - Fixed a bug with -scanbus (did not work correctly if /etc/default/cdrecord exists). - Added an allocated list of defective sectors, that is printed to the end of a read operation. Scgcheck: - Trying to check if multiple scg_open() requests result in usable interfaces. - Send more outout to stdout instead of stderr. - More correct test for max sense count. - Eject CD _after_ asking for it. - Abor further DMA residual tests if a basic DMA residual test fails. - Second open test enhanced. - A small fix to prevent a core dump caused by a problem on Mac OS X. Scgskeleton: - New Skeleton program as sample and template for programs that like to use libscg. This template has been included to help people like the Author of the BTC firmware flash program to write simple portable applications that send arbitrary SCSI commands to arbitrary drives. Mkisofs (By Jörg Schilling and James Pearson j.pearson@ge.ucl.ac.uk): - First attempt to support ISO-9660:1999 (Version 2) via -iso-level 4 This allows 207 chars in filenames if Rock Ridge is not used ans 197 207 chars in filenames if Rock Ridge is used. Note that this as an absolutely nontrivial change. Problems may even occur when not using -iso-level 4. Please test and report problems. It is not clear whether mkisofs should characters in the range outside 7-Bit ASCII. Currently, mkisofs allows any 7-Bit ASCII character except '\0' and '/'. - Second attempt to support ISO-9660:1999 (Version 2) via -iso-level 4 This allows 207 chars in filenames if Rock Ridge is not used and 197 207 chars in filenames if Rock Ridge is used. In version 2.01a01 the extended VD used the wrong signature 1. This has been corrected. - isoinfo is now able to recognize ISO-9660:1999 - Enhanced the filename length for graft points to 2x PATH_MAX - Abort with a warning message if the total size of the image data created by mkisofs would differ from the size printed by -print-size - udf.c indented according to hints from the program 'cstyle' - UDF now uses the same 'now' timestamp as the ISO-9660 part of the FS. - New Stream File feature and new options: -stream-file-name -stream-media-size This feature has been implemented after an idea from M.H. Voase. Mkisofs had to be heavily modified to allow this feature. A typical usage would look like this: star -c . | mkisofs -stream-media-size 333000 | cdrecord dev=b,t,l -dao tsize=333000s - The maximum size of the tar archive is 332800 sectors. Note that only plain vanilla ISO-9660 is possible in this mode. - The final padding that is added by default is now 150 sectors which is the required size of the track post gap on a CD. - Inter partition padding is now only chosen to make the next partition start on a sector number that is a multiple of 16. - isoinfo now also prints root directory extent # in debug mode - First step to allow mkisofs to support Kodak Photo CD and Kodak Picture CD format: Try to correctly support associated files in multi-session mode. - Diagnostic programs modified to use ttydefs.h and to have better portability for the built in "stty" features. - isoinfo now prints the ISO-9660 directory flags. - Make mkhybrid a symlink to mkisofs instead of a hardlink - getopt.h/fnmatch.h changed to use 'makefiles / prototype.h' based system instead FSD junk system - Removed FSF junk from getopt.c that either created problems with SCO Unixware or did not compile on AIX - Prototype for DVDOpenFile() to avoid warning on SCO UnixWare related to enum function parameter - Fixed a bug with split symbolic links found by Klaus Kopper with the new debug messages introduced with mkisofs-2.01a04 - Changed #if __STDC__ to #ifdef PROTOTYPES for better portability - Now using character code translation for 8 Bit characters that are used with -iso-level 4 (ISO-9660-1999). - Fixed a typo in the on-line Usage information for isoinfo - New options -XA & -xa -XA Generate XA iso-directory attributes with original owner and mode information. -xa Generate XA iso-directory attributes with rationalized owner and mode information (user/group == 0). In the first phase of the implementation you need to specify -R in addition. - Try to support files >= 2 GB. Note that mkisofs is not yet written cleanly so there may be problems if files >= are used. In such a case, please report. - Create XA "CD-XA001" signature in PVD with -XA or -xa In the first phase of the implementation you need to specify -R in addition to -XA or -xa or no XA signatures will be written. - Removed a debug statement that has been introduced to implement support for filees >= 2GB. - This version of mkisofs allows to create sectors with 2056 bytes if the option -XA or -xa has been used together with -sectype xa1. This is 2048 bytes + sub-header. - -apple does no longer include -R or -r. If you like to use -apple, you need to use -R/-r or -XA/-xa in addition. - New option -sectype SECTYPE / -s SECTYPE Possible parameters are: data 2048 bytes per sector - the old and current default xa1 2056 bytes per sector - this is what you need for a conforming CD-ROM XA multi session CD. Use -sectype xa1 together with -XA - Fixed a bug in the Rock Ridge symlink handling with Continuation records triggered by '/../' filename components. Thanks to jmmikkel@bbn.com (Joanne M Mikkelson) for the fix. - man page corrected - Moved Eltorito PVD before ISO-9660:1999 enhanced PCD to allow bootable CD with ISO-9660:1999 - -sort file handling fixed: mkisofs now looks for SPACE/TAB whatever comes last (as documented in the man page). - Better error message in case of a stat(2) buffer overflow (too long filename). This release now prints the file name that caused the problem. - call setmode(fileno, O_BINARY) for DOS/DJGPP also - Added a NOTE regarding the SILO boot program for Linux sparc to the man page. - Added support for Solaris x86 boot CDs. This includes the following new options: - -sunx86-boot to create a fdisk & SVr4 partition table - -sunx86-label to set the "disk label" name for the SVr4 partition table. - New file README.sunx86boot - The file README.sunx86boot has been reworked to make it more correct and contain less typos. - Fixed a Rock-Ridge length handling bug in update_nlink()/increment_nlink() (tree.c) that may have caused an endless loop. - "Total extents including sparc boot" Message is now correctly "Total extents including %s boot" sparc/sunx86 - mkisofs now checks /etc/default/cdrecord and allows e.g. "mkisofs -C 0,1234 dev=plextor ...." as cdrecord does - Unclean message ....extents written (%d Mb) changed to ....extents written (%d MB) to avoid "MegaBit" confusion. - Minor change for old UNIX versions like SCO OpenServer to get smooth compilation on system where mode_t is a short. - Fix for a bug in RockRidge name handling for long file names that need to be split into more than one sector. Thanks to Patrick Ohly - Trying to fix a bug in the multi session time stamp comparing functions. CE records have not been handled correctly here. - Support for PowerPC CHRP Boot added, thanks to "Leigh Brown" - Support for -uid/-gid for UDF Filesystems added - isoinfo now is able to list ElTorito Boot information with -d - isoinfo now correctly shows long RR filenames from CE Extension records. - Fixed a bug in the PowerPC CHRP Boot, thanks to "Leigh Brown" - New options -root & -old-root from Patrick Ohly This allows mkisofs to be used for "incremental backups" where each backup is put into a separate directory tree on the CD. - Default to System ID "UNIX" for unknown platforms instead of uning LINUX. - Support System ID "SCO-OPENSERVER" and "SCO-UNIXWARE" - Better error message when a user tries to create a multi session image out of a multi-volume image. - When doing malloc(), include Null Byte at end of TRANS_TBL data to avoid memory size conflicts. - Fix for a core dump caused by a double free() when doing: echo bar >/tmp/bar echo foo/bar=/tmp/bar > /tmp/pathlist env LD_PRELOAD=libumem.so.1 UMEM_DEBUG=default UMEM_LOGGING=transaction \ mkisofs -hfs -graft-points -o /tmp/foo.raw -path-list=/tmp/pathlist Thanks to Jürgen Keil jk@tools.de - Fixed a typo in write.c "Padbock" -> "Padblock" Thanks to Richard Dawe - Trying to fix a problem with comparing relaxed ISO-9660 file names that contain a ';' which normally is a separator for the ISO-9660 version number. The fix is in hash.c, please test! - Avoid GCCs shadowed variable warnings. - Added a comment is in hope to prevent silly people from e.g. SuSE (who did not yet learn C but believe that they need to patch other peoples code) from changing a valid cast into an illegal lhs cast expression. The cast in the unodified version of write.c is the correct way to handle the problem. It would save a lot of time if people from companies like SuSE would remember the Open Source software development model and contact the Author for help rather than introducing proprietary changes that result in worse and incompatible software variants. The way, companies like SuSE deal with Open Source software just proves that Jonathan Schwartz from Sun is not wrong when he calls SuSE and RedHat proprietary software companies. Users from Open Source software expect that companies like SuSE and RedHat are in close contact with the software developers but they unfortunately are not. They prefer to create proprietary variants that are usually much worse than the original software. The only explanation I have for this behaviour is that SuSE likes to deviate from RedHat and RedHat likes to deviate from SuSE in hope to get customer retention this way. While the last 150 years did prove that this proprietary method to tie up customers works for a limited time, it did always fail after some time. - Removed verbose output for Eltorito boot method when called with -quiet - The Eltorito boot catalog and the Eltorito boot files are now by default sorted to the beginning of the filesystem image as sime BIOS versions don't boot from locations beyond 512 MB. - All programs from mkisofs/diag now support libscg so you may now use e.g. isoinfo to list end extract from CDs directly on platforms that do not support a usual driver interface (like on Win32). - Set default SYSID to "DOS" for DJGPP Thanks to Alex Kopylov - devdump isodebug isodump isoinfo isovfy now include libscg and allow to use SCSI devices as input - devdump isodebug isodump isoinfo isovfy now implement a new option dev= to force to use the SCSI interface from libscg. - isoinfo now correctly sets the filemode of stdout to O_BINARY on DOS alike Platforms like Win32 & DJGPP This affects the '-x pathname' option Thanks to Alex Kopylov - The options -H/-L/-P from mkisofs have been marked "outdated" as they are reserved by POSIX.1-2001 for other purposes. Mkisofs-2.02 will start to implement the POSIX.1-2001 semantics for these options. - The max. length for the strings in the Primary volume descriptor is now also documented in the options section of the man page. - Speed up by 30% in the case that a directory contains many (> 5000) pathological file name entries (that _all_ do not differ in 8.3). - A minor speed up in devdump & isodump was made by no longer calling strlen() in the end condition of a for loop (this still was old code from Eric). - fixed a bug with -dvd-video The bug caused mkisofs not to find the IFO file when VIDEO_TS was not the first entry in the unsorted source directory. Thanks to a hint from Johan Borg borg@morth.org - The option -volset-size does no longer accept numbers > 1 This change was needed because Eric Youngdale did completely missunderstand the ISO-9660 standard with respect to Volume Set Sizes. A Volume Set is not a numbered set of CDs but a set of CDs that contains a coherent directory tree that would not fit on a single volume. - Fixed a typo in the mkisofs man page - man page enhanced to make clear that the options -no-split-symlink-fields & -no-split-symlink-components are most likely not needed as they have been introduced by Eric Youngdale when serious bugs have been in mkisofs. - Changelog updated - Try to workaround a bug in GCC that caused incorrect warnings for "strict-aliasing rules" TODO: - read Joliet filenames with multi-session if no TRANS.TBL or RR is present. I am looking for a volunteer for this task! Note that this can never be 100% correct as there is no relation between the names on the master (UNIX) filesystem, the ISO-9660 names and the Joliet names. Only the Rock Ridge names are untranslated with respect to the original files on the master (UNIX) filesystem. - add libecc/edc for CDI and similar. CYGWIN NT-4.0 NOTES: To compile on Cygwin32, get Cygwin and install it. For more information read README.win32 The files are located on: ftp://ftp.berlios.de/pub/cdrecord/alpha ... NOTE: These tar archives are 100% POSIX compatible. GNU tar may get some minor trouble. If you like a 100% POSIX compliant tar, get star from ftp://ftp.berlios.de/pub/star/ WARNING: Do not use 'winzip' to extract the tar file! Winzip cannot extract symbolic links correctly. Joerg