All:
- Better lint make rules
- Better autoconf rules for ACLs
- Better support for Linux on IBM-390
- Better support for Linux on AMD x86-64
- Better conforming to lint warnings.
- Now using "makefiles-1.6"
- Compilation on OS/2 should work again (-Zexe -> -o xxx.$(EXEEXT)
- The sleeptime to allow reading a GNU mmake related warning was reduced
to 2 seconds.
I am still waiting for GNU make to fix the bugs I did report in 1999.
- Support for 'make DESTDIR=xxx install' added
- Workaround for a Shell Bug on BSDi
- Install workaround for the fact that BSDI has chown(1) in /usr/sbin/
- cc-config shell script reworked
- Better configure tests for procfs include files
- Configure tests for fchown, chmod, fchmod, lchmod, futimes, lutimes
- Configure tests for fdopendir
- Configure tests for broken ext2fs includes files in Linux kernel
- Better SRCROOT search function in makefiles shell scripts
- New autoconf tests for broken , &
on various Linux systems
- astoull*() new in schily.h
- utypes.h now has MAX_ and MIN_ value definitions for all basic
system types.
- Support added to compile in 64 bit mode on Solaris Sparc.
Use: smake CCOM=cc64
- Support added to compile shared libraries with version
numbers for interface levels and make inofficial "interfaces"
static
- Prevent gmake to go into an enless loop on Solaris
in case that /usr/ucb/tr is before /usr/bin/tr in PATH
- Better autoconf error message in case that the expected
C-compiler could not be found.
- Mac OS X now installs files as root:wheel
- Supply linker mapfiles for all libraries. This allows cdrtools
to be compiled using shared libraries only and to properly
hide inofficial interfaces on Solaris (using ls)
Note that this feature is not yet available for GNU ld
- Support for DragonFly BSD added, thanks to joerg@britannica.bec.de
- Default Cygwin install uid/group adapted to use available ids.
- New program btcflash added. Thanks to David Huang
-
If you like all users to be able to call cdrecord root-less, you need
Solaris 10 or newer.
Edit the file /etc/security/exec_attr and add:
All:solaris:cmd:::/opt/schily/bin/cdrecord: privs=file_dac_read,sys_devices,proc_lock_memory,proc_priocntl,net_privaddr
All:solaris:cmd:::/opt/schily/bin/readcd: privs=file_dac_read,sys_devices,net_privaddr
All:solaris:cmd:::/opt/schily/bin/cdda2wav: privs=file_dac_read,sys_devices,proc_priocntl,net_privaddr
If you like to allow only specific user to use cdrecord,
use something like:
CD RW:solaris:cmd:::/opt/schily/bin/cdrecord: privs=file_dac_read,sys_devices,proc_lock_memory,proc_priocntl,net_privaddr
instead and make the related users members of the profile "CD RW"
by adding a line like:
joerg::::profiles=CD RW
into /etc/user_attr
Note that you either need to call cdrecord via "pfexec cdrecord ....."
or by using a profile aware shell (e.g. /usr/bin/pfksh)
- Better support for BeOS/Zeta in the makefile system
- Support for armv5teb-linux-cc was added to the makefile system
- Autoconf script added to 'conf' directory
- On May 15th 2006, I happily announced new features and the release of
the DVD-code into the OpenSource. After long discussions with various
people on OpenSource Licenses and their effects on interproject usage
and the effect on the authors themselves, I contacted the authors of
included parts in this software suite and got, in most cases their
support and grant on selecting the CDDL as the new license. Although
this took some time, it was worth reading the different OpenSource
licenses completely with some support of people working in that field.
Now I know why it took Sun so much time to offer OpenSolaris under
an OpenSource license...if you take a license change seriously, it is
a real hard job.
- The file "CONTRIBUTING" has been updated.
- The makefile system has been completely rewritten to be more reusable
and to not replicate code.
- The makefile system now supports to compile under "Services For Unix",
now called "Subsystem for UNIX-based Applications (SUA)",
a free POSIX add on from Microsoft (identifies as "Interix").
Note that you need the latest 'smake' relase smake-1.2a36 or never
from ftp://ftp.berlios.de/pub/smake/alpha/
Note that there is smake-1.2.1 available on
ftp://ftp.berlios.de/pub/smake/
Currently, cdrecord is not able to send SCSI commands from this
environment. I am looking for help from experienced users.
- The makefile system now supports to compile using the Microsoft
C-Compiler "cl".
Note that you need the latest 'smake' relase smake-1.2a36 or never
from ftp://ftp.berlios.de/pub/smake/alpha/
This compilation currently may only be cone from a "Cygwin" environment
using smake with the Environment variables set up in a way that allows
"cl" to work (find it's include files and libraries).
Run "smake CCOM=cl" for this kind of compilation.
Cdrecord has not yet been verified to compile in this environment.
Note that I am interested in feedback for these new compile possibilities.
- New function strlcpy() for better portability.
- New function strncpy() for better portability.
- Enhanced Makefile system for better MSVC support
- Enhanced Makefile system for C++ support
- Fixed some typos in dirdefs.h
- New functions getvallargs()/getvargs()/getvfiles()
allow to have a vector based interface to the
advanced argument parsing library functions.
Currently used by mkisofs.
- getargs.c is now at up to date again and libschily
from cdrtools is 100% complete and may be used
as a shared library to be used by e.g. star too.
- Added a workaround for a core dump problem with
running avoffset.c on FreeBSD/sparc64 (gcc)
- libschily now includes a fallback fnmatch() for better portability
This fnmatch() implementation has been taken from th BSD project.
- Fixed a bug in getvargs() that caused mkisofs -joliet-long to be
declared as illegal option.
- Several small format enhancements for getargs()
- getavrgs() is now (like getargs()) able to correctly handle
combinations of single char boolean flags
- include file system completely restructured to avoid future name conflicts.
The include files now have completely moved to include/schily/.
This also allows to make all include files available in /usr/include/schily/
in the future.
- fixed a type in include/schily/termios.h thanks to Steven M. Schweda for
reporting.
- All libraries now include support for compiling the code as shared library.
The code has been tested on Solaris but should also work in *BSD and Linux.
In order to compile with shared libraries, either call:
make LINKMODE=dynamic
or change the line
DEFLINKMODE= static
to
DEFLINKMODE= dynamic
for your OS in DEFAULTS/Defaults.
I am interested in feedback for various OS platforms........
- The order for compiling the libraries has been changed to make the
compile process insensitive against old static libraris in the
library search path.
- New Schily autoconf test for gettext() and libintl
- include/schily/nlsdefs.h now also checks for the existence of HAVE_GETTEXT
- #undef SIZE_T_MAX in utypes.h for better FreeBSD support
- make file system restructured: all Schily include files are now located
in ..../include/schily/
- Now using new definitions from Steven M. Schweda in
include/schily/xmconfig.h
VMS users: in future, you need to specify cc -DUSE_STATIC_CONF
in order to get the old static configuration.
- new file schily/errno.h
- Fixed some files that did include instead of
- Trying to make the floating point printf() support functions work
on systems that implement C99 only with no fallback.
As this change is a result from a report from a person that does not like
to cooperate, I was not able to test on the reported AIX-5.x platform.
Also note that this change may result in problems on other platforms.
Please test and report!
- The Schily Makefilesystem now includes environment definitions
for the Microsoft Studio 8 compiler. If you like to edit these
definitions, check the DEFAULTS directory
- Next step in supporting Microsoft C-compilers: build in environment
set up for the MS compilers. To compile with the MS C-Compiler,
set up a Cygwin environment and compile a Cygwin 'smake'.
Then use this smake to compile with the MS C-compiler by calling:
smake CCOM=cl
This defaults to VC7. If you like to use VC6, call:
smake CCOM=cl VC=6
Note that smake itself (if compiled with "cl") will not work, as
MS does not implement a reliable way to pass a quoted arg vector
to a new program.
Note that cdrtools do not yet completely compile with MSVC. This
is mostly caused by missing standard compliance in the MS C-compilers.
- A small restructuring of the include file structure:
new file include/schily/xconfig.h
include/schily/xmconfig.h now only contains manual static configuration
for VMS
- The Makefilesystem now includes links for sparc64 (Fujitsu-Siemens)
- Schily includefiles are now installed with "make install".
- Try to avoid a program exception with a call to access(".", E_OK|F_OK)
caused by a libc bug from the Microsoft C-compiler "cl".
- The makefile system now supports the Winsock library
- Correctly cast all open(name, oflag, 0666) calls to:
open(name, oflag, (mode_t)0666) as open is a vararg function.
- "libvms" new from Steven M. Schweda sms@antinode.org
- -I. removed from standard c-compiler include path
- /usr/src/linux/include is no longer included if it contains
broken include files.
Please send a bug report to the Linux Kernel maintainers in case
that the makefile system reports broken Linux kernel include files.
- Support for WIN-NT-5.2 (MS-Windows 2003) added to the makefile system
- No longer using -ztext linker option for creating shared libs with GCC
as GCC does not create 100% correct binaries and this would abort
the process of creating a shared library.
- Better setup for the environment variables that are needed for the
Microsoft "cl" compiler.
NOTE: The current setup is for "english" versions of MS-WIN.
You may need to edit the files DEFAULTS/vc6-setup or DEFAULTS/vc7-setup
depending on your locale version and the "c"-compiler version you
are using.
- Prevent MSVC ("cl") from creating silly messages
like: "... Consider using strerror_s instead."
- Prevent MSVC ("cl") from complaining about deprecated
option "-ofilename"
- New autoconf tests for POSIX compliant time functions in libc
- GCC Warning setup no longer includes -Wtraditional
- Dynamic libraries are now supported for Mac OS X
- smake CCOM=xx will now result in writing DEFCCOM=xx into incs/Dcc.
if this is done on the initial make run.
conf/cc-config.sh now has one additional parameter
- Include $(DEFLTSROOT)/$(DEFLTSDIR)/$(VCSETUP) from
DEFAULTS/Defaults.cygwin32_nt already to allow the script
conf/cc-config.sh to detect that "cl" is working.
- DEFAULTS/vc7-setup & DEFAULTS/vc6-setup now set
.NOWARN: := to tell smake-1.2a41 or newer not to warn
about a nonportable assignment (we do
not have a UNIX "make" in Cygwin).
- smake COPTX=-DNO_LARGEFILES now allows to compile in non-largefile mode
- New targets "html" and "htmlx" for Manual page makefiles
allows to convert man pages using "man2html"
- New include file schily/wchar.h
- New include file schily/schilyp.h
- Typo in schily/param.h fixed
- schily/jmpdefs.h now includes support for sigsetjmp()
- configure now checks for ctime cftime ascftime strftime and
for libresolv and whether /bin/sh is bash
- remove libxxx.so link before trying to create it
- Allow a mixture of static and dynamic libraries to link against
a program
- Now using cdrecord/version.h for the global version number
- New autoconf test for struct timeval in sys/time.h
- New autoconf test for struct timezone in sys/time.h
- Changed include/schily/time.h to depend on the
new autoconf #defines HAVE_STRUCT_TIMEVAL and
HAVE_STRUCT_TIMEZONE
- The Schily makefile system is now also passing OS
specific #defines to "configure".
- New Schily makefile system Target "shell" allows to
call "make shell" in order to get a shell with exactly
the same environment as the compilers will see from
the makefile system. This helps testing.
- New autoconf test checks whether we need to call
"xx.exe" on a platform. This is needed in order to
be able to call the Microsoft compiler from the
SFU (Services for UNIX) environment.
- It is now possible to call the Microsoft compiler
from SFU. In order to do this, call "smake CCOM=cl"
If this does not work, you may need to change the
file DEFAULTS/vc7-interix-setup
- Trying to better deal with MS winsock2.h oddities in schily/time.h
- #undef iswalnum ... in schily//wchar.h before defining non wchar fallbacks.
- config.guess now knows about i386 Darwin (Mac OS X on Intel)
- Schily makefilesystem enhanced to check for extended
fields in struct utsname as seen e.g. in MS SFU (Interix).
- New predefined macro OSVERSION in the makefilesystem is needed
for SCO OpenServer 6.x support (because this uses a UnixWare
kernel
- Trying to support Compilation on SCO OpenServer 6.x
- New macro $(CC_OUTPUT_FILTER) allows to filter away the
unwanted file name echo from cl.exe.
- Interix now uses uname -m instead of uname -p for $(OARCH)
- Makefile support for pentium-4-unixware-cc.rul and
pentium-4-unixware-gcc.rul was added.
- New autoconf test for libiconv
- The Schily makefilesystem now by default searches in /usr/local/include
and /usr/local/lib if on FreeBSD. This is needed in order to find
libintl and libiconv.
- make html and make htmlx now works even on the top level directory
and creates html versions of the man pages
- fixed a typo in the autoconf test for C99 isinf/isnan
- Support for SunStudio 12 on Linux was added.
Call "make CCOM=suncc", but note that you then
will not be able to compile Linux specific functions like
support for ext2 file flags. This does not work because the
related include files are not written in clean C.
Note that nearly all programs from cdrtools depend on libscg
which uses platform specific code for every OS. As the Linux
kernel include files are not written in clean C, you cannot
compile libscg using Sun Studio. If someone from the Linux kernel
team would rewrite the Linux kernel include files to only use clean
C based constructs, cdrecord could be compiled with Sun Studio
compilers.
- Added a workaround to config.guess to get correct
platform names from "configure" even though suncc
does not #define __ELF__
- Linux specific autoconf tests are now only executed on Linux
based platforms
- Some make rule definitions for Cygwin restructured to allow
compilation with more Cygwin releases. The -D_WIN32_WINNT=
definitions are now only in effect if the selected compiler
is the Microsoft compiler.
- New include file schily/ioctl.h
- Added Support to create Blastwave SVr4 packages.
To create a Blastwave package, call:
.clean
smake -f Mcsw
You need the program "fakeroot" and will find the results
in packages/
Note that this source tree will allow you to create the package
CSWcdrtools but not the packages CSWschilybase and CSWschilyutils
on which CSWcdrtools depends.
WARNING: libsiconv.a and it's character translation tables (located in
/opt/*/lib/siconv) are not part of CSWcdrtools but of CSWschilybase.
If you do not update CSWschilybase to include the character translation
tables used by libsiconv, mkisofs will not work correctly.
NOTE: the SVr4 package specific rules are approx. 10 lines of make rules.
It should be simple to create rule definitions for other package systems
found on platforms other than Solaris. Volunteers who like to help
to develop support for other packaging systems are welcome!
- Added a note to README.compile on how to work around a problem
in /usr/include/linux/types.h that prevents to compile cdrtools
on Linux using the Sun Studio compiler.
- A workaround against non autoconf friendly code in Cygwin has been
fixed in include/schily/iconv.h (a typo).
- Compilations with static configuration are now also possible on HP-UX
- All profiles libraries now have the same name as the non-profiled variants.
To create a profiled version of a command, do something like this:
cd cdrecord
smake clean
smake COPTX=-xpg LXOPTX=-xpg LINKMODE=profiled
For GCC use:
cd cdrecord
smake clean
smake COPTX=-pg LXOPTX=-pg LINKMODE=profiled
- More locale related autoconf tests (see mkisofs)
- Handling non-large file aware systems is now more correct
- Autoconfiguration documentation changed to make clear that $(LIB_ACL_TEST)
is sufficient for "test only" acl applications.
- New rules ip35-irix-cc.rul/ip35-irix-gcc.rul
- New rules i586-linux-suncc64.rul x86_64-linux-suncc.rul x86_64-linux-suncc64.rul
- New autoconf test HAVE_SYS_SIGLIST_DEF checks for sys_siglist[]
definition in signal.h Thanks to Tatjana Heuser for reporting
- Possibly double #defines HAVE_ICONV HAVE_ICONV_OPEN HAVE_ICONV_CLOSE
in include/schily/iconv.h fixed. Thanks to Tatjana Heuser for reporting
- The Schily Makefile system has been enhanced to install
the profiled version of the archives in a sub-directory "profiled".
This is done via a new macro SUBINSDIR=
- New autoconf test checks sizeof(time_t)
- New autoconf test for the existence of stack_t and siginfo_t in signal.h
- In order to allow better dealing with Solaris linker Mapfiles,
a getfp() function (calling abort(3)) is created when it is not
possible to implement this function because of compiler constraints.
- Many other enhancements of the autoconfiguration have been a result
of porting the Bourne Shell into the Schily Makefilesystem.
- added a make rule to automatically create the directory
./incs/
- A CSWscdrtools Blastwave package may be automatically
created from this source. Simply call:
smake -f Mcsw
and check the directory packages/ for the resulting package.
- Several fixes for the Blastwave compile (smake -f Mcsw):
- CSWcdrtools now depends on CSWpxupgrade, this allows
to either use a dummy (source) package for CSWpxupgrade
or the binary original package that is under NDA.
- smake now compiles without /opt/csw/ string in the binary
this makes smake100% relocatable.
- The sccs package is now a non-relocatable packet
because of /$INS_BASE/ccs/bin/* and because of
$INS_BASE/ccs/lib/locale/
- RULES/rules.csw now supports to create non-relocatable
packets by adding PKG_RELOC=no to the leaf Makefile
- Added an autoconf test for SIZEOF_FLOAT & SIZEOF_DOUBLE to allow
to compile the Bourne shell in 64 bit mode.
- several modification have been made to fix warning messages from
a "coverity" test run.
- config.guess now supports the "free" Apple Darwin variants
- New directory autoconf/ contains the complete Schily autoconf system.
It is based on GNU autoconf-2.13, the latest GNU autoconf that worked
correctly even on older systems.
- Sources and makefilesystem restructured to allow all needed files to be
retrieved from the SCCS repository and to call "make" later. To achieve
this, all symlinks have been removed from the tarball.
- The Schily Makefile System now includes rules to recreate the file
"configure" by calling "autoconf". This is needed in order to allow the
complete source tree to be extracted from the SCCS repository.
- Added a workaround for a GNU make design bug that causes the rules
to create file "foo" to be evaluated _past_ the "include foo"
statement in a Makefile has been evaluated. Note that you still need
GNU make 3.81. GNU make 3.80 and before will still fail to compile
cdrtools because of other unfixed GNU make bugs.
Note that the basic GNU make design bug has been reported to the
GNU make maintainers and accepted as bug by the GNU make maintainers
in 1998 already. It is still unfixed in GNU make although smake and
SunPro make verify that there is no problem to do it right.
- New autoconf test AC_CHECK_DLIB() checks for lib members while using
specified include files. This is a workaround for the autoconf hostile
gettext() and iconv() implementations on Linux.
- The gettext()/iconv() tests have been rewritten to use AC_CHECK_DLIB()
- The autoconf test AC_FUNC_VFORK from Paul Eggert was not written in
clean C and thus failed on a ANSI-C compiler, assuming that vfork()
is not available in the ANSI case.
- README.compile fixed to refer to READMEs/README.gmake instead of
README.gmake
- Symlink support in RULES/MKLINKS added for ia64-hp-ux-cc.rul and
ia64-hp-ux-gcc.rul, thanks to a hint from Steven M. Schweda
- DEFAULTS*/Defaults.dragonfly added
Thanks to a hint from Thomas Klausner
- Added a workaround for a Sun make bug
- Next attempt wo work around the non-autoconf friendly implementation
of GNU gettext and GNU libiconv.
- A new autoconf test allows to check whether the installed system shell
(/bin/sh) properly aborts with failed commands in "sh -ce 'cmd'".
If failed simple commands in "sh -ce 'cmd'" do not abort complex
commands, "make" will not stop on errors in the build process.
Note that this is a definite POSIX incompatibility.
The most well known defective shell with respect to this problem is "bash"
but /bin/sh on HP-UX-10.x (a Korn Shell modification) does not work
correctly either. If your system (Linux, HP-HX, ...) suffers from this
problem, I recommend to fetch the Schily Source consolidation from
ftp://ftp.berlios.de/pub/schily/
Use a version that has been published past September 1st 2008, compile
and install the contained Bourne Shell as "/bin/bosh". Then call
"./.clean" and compile again. The resulting "smake" will then
automatically call "/bin/bosh" instead of "/bin/sh" in order to
execute commands.
- Several Makefiles have been modified to support not only "make all"
but also "make install" without calling "make all" before. This was needed
after the change that omits the symlinks from the tar archive.
Thanks to a report from Klaus Ditze
- Extended the file COPYING to mention that the GPL used by the "mkisofs project"
requires to publish the full source for all parts of mkisofs in case that you
publish mkisofs binaries.
- Added a new Changelog file for the changes since cdrtools-2.01
- RUlES/rules.prg no longer includes a line with SHELL=/bin/sh.
This is needed to allow to implement a workaround for various bash
bugs that affect makefiles in case that /bin/sh is linked to bash.
If your platform installs bash in /bin/sh (Linux, ....) or in case
that your platform offers a broken variant of the Korn Shell in /bin/sh
(like HP-UX), fetch the "Schily source consolidation" from
ftp://ftp.berlios.de/pub/schily/, compile everything and install the
original Bourne Shell, that comes with this packet, into /bin/bosh.
If you then call ./.clean and re-compile everything, you get a "smake"
that calls /bin/bosh instead of the broken system shell.
- Added an autoconf test for POSIX violations found in POSIX.1-2008.
The official POSIX rule is not to define "new" interfaces that
are in conflict with older interfaces of the same name.
Our interfaces fexec*() have been defined and published in 1982.
The new POSIX interfaces define a different interface and the
new POSIX interfaces even use names that are not compatible with
POSIX rules. The new POSIX interfaces in question should be called
fdexec*() to follow the rules of other similar POSIX functions.
Similar problems exist with getline()/fgetline().
We try to automatically rename our functions in case that the functions
could be found in the local libc.
- Config.sub now supports NetBSD on AMD64
- The email addresses in many files have been updated.
- config.sub and config.guess now support ATARI MiNT
- All needed definition files for ATARI MiNT are now in RULES/*
- configure now checks whether shmget() works (needed for ATARI MiNT)
- The GNU linker on Linux now seems to support -R to set the LD_RUN_PATH
Added support for -R
- Added definitions to allow dynamic linking with the Sun Studio compiler
on Linux
- Added a new #define (NO_ACL) that allowed to disable ACL support via
command line when compiling
- include/schily/libport.h split into include/schily/libport.h and
include/schily/hostname.h to allow to avoid to include netdb.h for
applications that do not need gethostname() and getdomainname()
- include/schily/prototype.h now includes the definitions for const...
- new autoconf test to check whether the Sun Studio compiler needs
-xarch=generic64 or -m64 for 64 bit compilation.
- Default install user changed from "bin" to "root".
- The install-sh script now complains if an attept was made to install
a program suid or sticky and the install user has no root privileges
- The makefile system has been modified to allow a separate set-up
for the install path of the configuration files to e.g. /etc/
via the DEFAULTS variable INS_RBASE
- New autoconf test to distinguish between the free of charge
"Bundled" cc on HP-UX and the commercial cc. Only the commercial cc
supports ANSI C and the Bundled cc complains when the ANSI Options
are used:
(Bundled) cc: warning 480: The -A option is available only with the C/ANSI C product; ignored.
(Bundled) cc: warning 480: The -O option is available only with the C/ANSI C product; ignored.
These warnings are no longer present.
- schily/schily.h now auto-includes stdio.h in case that the platform
supports the new POSIX.1-2008 getline()/fgetline() functions that
violate against general POSIX rules and thus overlay our implementation
that exists since 1982.
- schily/stkframe.h now uses Intptr_t for the fr_savp member to make it
work correctly on 64bit systems without OS supplied stkframe.h.
- New autoconf test on whether unistd.h defines extern char ** environ.
- New file schily/stdio.h to simplify layering.
- New Make rules for Syllable. Syllable is a fork from AtheOS.
- New make rules for Haiku
- New include file schily/sysexits.h is needed for Haiku
- New autoconf test for sysexits.h
- Autoconf tests for os2.h and os2me.h moved from cdda2wav to
global
- config.guess and config.sub now have support for Haiku
- New rule support for linux on "sh3", "sh4" and "sh4a" platforms.
- autoconf now acts more reliable and more orthogonal with AC_CHECK_TYPE() vs.
AC_CHECK_SIZEOF() and carefully includes include files separately based on
fine grained tests.
- Changed schily/dirent.h to correctly set up NAME_MAX on ATARI MiNT
- Changed schily/maxpath.h to correctly set up NAME_MAX on ATARI MiNT
- Add -D_GNU_SOURCE to the standard include flags for Linux in order
to unhide needed extensions.
- Trying to add support for compilation on WIN64 using cl and gcc
- Adding support for NT-6.0 (Win Vista) and NT-6.1 (Win 7)
- Several typo corrections
- New include file include/schily/wctype.h
- New autoconf test that checks for the differences between the original
iconv() implementation from Sun and the deviating POSIX standard.
This allows to avoid compiler warning messages for mkisofs.
- Trying to work around nasty Linux distributions that try to fool autoconf
function tests and thus may result in incorrect results for the functions
fexecl fexecle fexecv fexecve fspawnv fspawnl fspawnv_nowait getline fgetline
- New include files include/schily/dlfcn.h and include/schily/shcall.h
- New autoconf tests for dlopen() and similar functions
- Fixed a typo in include/schily/fnmatch.h that prevented compilation on BeOS
- Fixed a typo in include/schily/libport.h that prevented compilation on BeOS
- New makefile "Mocsw" allows to create packages for "opencsw"
- RULES/rules.csw enhanced to allow to overwrite EMAIL= and HOTLINE= from
the make command line.
- New autoconf test for getprogname()/setprogname()
- Support for using Microsoft "cl" to compile 64 bit binaries from Cygwin now
has been finished
- Support for 64 bit compilation on mac OS X was added.
Call make CCOM=cc64 as on other platforms.
- $OLIBSDIR is no longer in the RUNPATH
- New include file include/schily/limits.h
- Make sure that all include files in include/schily/ include
include/schily/mconfig.h
- wide character support new
- New makefile "Mocsw" sets defaults for "opencsw" instead of Blastwave.
Mcsw for Blastwave of course continues to exist
- New defaults directory DEFAULTS_CSW includes special defaults that
compile e.g. for Sparc-V8 in order to get working binaries for older
Sparc non 64 Bit hardware.
- New autoconf test HAVE_SETBUF and HAVE_SETVBUF
- Several modification in hope to better support MINGW
- New include files include/schily/ctype.h, include/schily/pwd.h
and include/schily/grp.h
- All programs are now using schily/stdio.h
for orthogonality.
- Haiku default install dir is now /boot/opt/schily
- New rules RULES/os-cygwin_nt-6.0-wow64.id and
RULES/os-cygwin_nt-6.1-wow64.id support Cygwin on 64bit
installations of Win Vista and "Win 7".
- New rules for compiling 64 Bit binaries on cygwin_nt-wow64
NOTE: You need to have a 64 bit aware gcc on Cygwin to use this!
- TEMPLATES/temp-gcc.rul and TEMPLATES/temp-xcc.rul
now correctly include cc-gcc.rul and cc-dumb.rul and thus
make the automake feature working again for completely
unknown platforms.
- Fixed RULES/rules.inc to make sure we install xx.h instead of
xx.h.exe
- Workaround an infinite hang in an autoconf test on 64 Bit Vista
with Cygwin
- Include limits.h in schily/hostname.h for Linux
- Several "%s" formats have been introduced in order to make gcc-4
happy even though the original strings have been pointer to constant
and well known strings
- Change the option order in the autoconf test for calling the linker
in order to avoid problems with the microsoft linker.
- include/schily/wait.h now includes process.h on DOS systems
- include/schily/resource.h new include file
- include/schily/select.h new include file
- Now all sources use schily/systeminfo.h instead of sys/systeminfo.h
- Now all sources use schily/assert.h instead of assert.h
- Now all sources use schily/priv.h instead of priv.h
- Now all sources use schily/procfs.h instead of profcs.h
- Now all sources use schily/syslog.h instead of syslog.h
- Now all sources use schily/float.h instead of float.h
- Now all sources use schily/ipc.h instead of sys/ipc.h
- Now all sources use schily/sem.h instead of sys/sem.h
- Now all sources use schily/shm.h instead of sys/shm.h
- New autoconf test for "#pragma weak"
- The schily makefilesystem now by default sets all locale related environment
variables to "C" in order to avoid problems.
- Make the makefile emulation mode for "non-automake aware" make programs
like SunPro Make and GNU make more immune against oddities in the tr(1)
program that are seen with a locale that differs from LC_ALL=C
Another step to prevent some tr(1) oddities was to replace the call to
tr(1) by a call to sed(1).
- Added GMAKE_NOWARN=true to allow to disable the gmake warning with nested
make files
- Enhanced include/schily/priv.h to distinct Solaris and AIX process privileges
- New include file include/schily/math.h
- Try to workaround a problem with GCC on newer AIX versions. It seems that
e.g. gcc on AIX is not C99 compliant and does not support isnan().
Note that the current solution may compile and run on newer AIX versions
but does not seem to be the optimal solution as it cannot check whether
a float is a number or not.
- *BSD comes with a broken sed(1), so we need to go back to tr(1) based
code for GNU make in the Schily Makefilesystem.
- Added support for amd64-netbsd-cc.rul to the Schily Makefilesystem
- Added support for DragonFly BSD to config.guess and config.sub
- Added support for 64 bit compilation on HP-HX using "cc".
Use make CCOM=cc64 as usual to switch to 64 bit compilation.
- Prevent a compiler warning when compiling 64 bit binaries on HP-UX
using make CCOM=cc64
- Some files in include/schily/*.h have been enhanced to better support VMS
- config.guess now knows about OpenVMS
- Changed bash test to use --version instead of -version as bash on OpenVMS
is bash-1.x
- include/schily/xmconfig.h (containing a "static" configuration for VMS
because "configure" does not work on VMS) was enhanced.
- Trying to add support for OpenVMS to RULES/*
- New autoconf tests for the type "long double" and a new "max size" type.
- VMS rules for libraries not create an archive XXX.olb instead of libXXX.a
- schily/utypes.h enhanced to allow to define maxint_t which is
missing on VMS
- Better autoconf test for union wait vs. int for platforms that
define union wait but use int as wait() parameter.
- schily/vfork.h now includes unistd.h as the related definitions
are there on Solaris
- Fixed a configure bug with opendir() inherited from GNU autoconf
- Enhanced the vfork() autoconf test to avoid a hang on VMS
- Support for 64 Bit compilation was added for IRIX.
Call smake CCOM=cc64 or smake CCOM=gcc64 as usual.
- C++ compilation support fior IRIX was added to the makefile system
- Schily Makefile rules no longer contain Simple Suffix Rules.
All default rules are now based on Pattern Matching Rules.
This speeds up smake.
- Added autoconf test to distinct Linux ACLs from IRIX ACLs
- Added support for Hurd on i686 to the Schily Makefilesystem.
- Modified conf/mkdir.sh to work around a deviation found in
/usr/xpg4/bin/sed on Solaris
- Modified conf/src-get to include conf/src-get in PATH to make
recursive calls to src-get work.
- include/schily/stat.h now supports nanosecond timestamps in struct stat on AIX.
- New autoconf test for nanosecond time stamps on AIX.
- conf/mkdir.sh
- conf/mkdep-aix.sh was changed to avoid warnings for #pragma weak a = b
as the IBM C-compiler calls a non "#pragma weak" cpp when called with -E
- Added support for DragonFly/x86_64
- Support for "pcc" on Solaris x86 was added as a first step.
The C-Compiler "pcc" http://pcc.ludd.ltu.se/ is based on the
Portable C-Compiler from AT&T from the late 1970s. It is
under BSDl and thus offers compilation with a really free
build environment.
Note that due to a pcc bug, the autoconf results for
Large File support are incorrect. Unless you edit the file
incs/i386-sunos5-pcc/xconfig.h and manually correct the
file to contain this:
#define _FILE_OFFSET_BITS 64 /* # of bits in off_t if settable */
You will not get working large file support.
Support for more Operating system will follow after the issues
in the compiler have been resolved.
- New autoconf test checks whether fnmatch() has a working FNM_IGNORECASE
- New autoconf test for strlcat() wcslcat() strnlen() wcsnlen()
- Trying to add support for 32 bit compilation on newer Mac OS X
version via smake CCOM=cc32
This only works if 32 Bit development support is installed on Mac OS X.
- Trying to add support for 32 bit compilation on newer Linux
version via smake CCOM=cc32
This only works if 32 Bit development support is installed on Linux.
- include/schily/wchar.h now includes support for the mbr*() multi-byte
character handling routines.
- include/schily/regex.h added
- include/schily/libgen.h added
- New autoconf tests for basename() dirname() strndup() wcsndup()
mbsinit() mbrtowc() wcrtomb()
- New autoconf tests for wctype_t mbstate_t
- A new make macro STRIPFLAGS allows to install stripped binaries by calling
smake STRIPFLAGS=-s install
- Conf-files in /etc/default are now installed 0644 by default
- Man pages are now by default installed in $(INS_BASE)/share/man
The base directory "share" may be changed by calling
smake DEFMANBASE=something
- README.compile now mentions:
INS_RBASE= Set different "root" install path
DEFMANBASE= Set different man base directory
STRIPFLAGS=-s Strip all binaries with "make install"
RUNPATH= Overwrite ELF RUNPATH
DEFUMASK= Set different default permissions for
creating directories
DEFINSUMASK= Set different default permissions for
creating directories in the install path
Libschily:
- Fixed a typo in fconv.c that caused problems on IBM AIX5.
- mem.c moved from libfind/ to libschily/
- getnum()/getllnum() & gettnum()/getlltnum() have been moved to libschily
- printf()/fprintf()/sprintf()/snprintf() have been removed from libschily
we now use js_*printf() instead via -DSCHILY_PRINT
- Workaround for a Mac OS X linker bug
- New set of functions: __jmalloc()/__jrealloc()/__jsavestr()
- New set of functions: __fjmalloc()/__fjrealloc()/__fjsavestr()
- New set of functions: fcomerr()/fcomerrno()/ferrmsg()/ferrmsgno()
- getargs() now allows '+' to appear in strings like "longopt="
- __fjmalloc()/__jmalloc() now allow to specify JM_EXIT to exit() instead
of calling siglongjmp()
- New function file_getraise() to get the current file "raise value".
- getargs() enhanced to fully support POSIX Command line rules
- snprintf() is again compiled into libschily in case that the function
is missing on the current platform.
- Fixed a bug in checkerr.c that was caused by the fact that errflags()
did try to modify it's string argument.
- The schily *printf routines now correctly support the %j format (intmax_t)
- getargs now first checks whether an argument can be a combination of
several single char flags before starting to set values.
- changed __malloc() -> ___malloc() for the ongoing ATARI Port
- changed __realloc() -> ___realloc() for the ongoing ATARI Port
- changed __savestr() -> ___savestr() for the ongoing ATARI Port
- Added sleep.c and gettimeofday.c that emulate sleep() and gettimeofday()
when using MSVC
- Try to rename ecvt()/fcgt()/gcvt() in case that one of these functions
does not work and the libc implementation does not allow to overwrite the
function.
- New functions eaccess() and findinpath()
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
- format() now supports %z for size_t and %t for ptrdiff_t
- fexec now correctly works on Haiku and BeOS
- Code in libschily/fexec.c cleaned up for better readability
- libschily/checkerr.c now correctly handles the "WARN" directive.
- wide character support new
- several str*.c functions new for orthogonality with the new wcs* code.
- Added a wide character patern matcher with: patwcompile(), patwmatch(), patwlmatch()
See files:
libschily/matchw.c and libschily/matchwl.c
- libschily/stdio/*.c fixed to use size_t as length parameter for
read*()/write*() operations.
- libschily now is thread aware and uses the thread specific errno
value on Solaris, Linux and FreeBSD.
- libschily/fconv.c reworked to deal with non-C99 compliant systems and to deal
with the constraints found in HP-UX-11.11.
- libschily/*bytes.c now support 64 bit compilation and use a "ssize_t"
typed count parameter instead of "int".
- libschily/spawn.c now uses vfork()
- libschily/fexec.c now supports IO redirection on VMS
- Removed some GCC warnings from libschily/getargs.c
- Schily fnmatch() now supports FNM_IGNORECASE
- New files strlcat.c wcslcat.c strnlen.c wcsnlen.c
- fnmatch.c now supports multi byte characters.
- New files basename.c and dirname.c
- New files strndup.c and wcsndup.c
- A new algorithm in
strncat.c strncmp.c strncpy.c strnlen.c wcsncat.c wcsncmp.c wcsncpy.c wcsnlen.c
makes the code faster and smaller.
Libparanoia (Ported/enhanced by Jörg Schilling, originated by Monty xiphmont@mit.edu):
- Changed from GPL to LGPL with permission from Monty.
- paranoia_init() interface change to work around a deficit
in the Mac OS X linker.
- "make install" now also installs the READMEs and other documentation to
..../share/doc/libparanoia/
- Fixed some minor problems with K&R compilers
- Set a useful default for the dynamic sector overlap start sector
in case that the dynamic sector overlap limits are manually changed
- Plenty of new comments taken from cdparanoia-III-10.2
This doubles the size of the code!
Thanks to Monty (xiphmont@mit.edu)
- i_paranoia_overlap_r() does not longer increment beginA/beginB after the
match was found searching backwards. Taken from cdparanoia-III-10.2
- paranoia_free() now also frees p->cache and p->fragments taken from
cdparanoia-III-10.2
- Some numerical values used in paranoia.c have been replaced by
FLAG_* definitions.
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
- Some #define inline definitions removed as "inline" is already
handled by schily/mconfig.h
Libedc (Optimized by Jörg Schilling, originated by Heiko Eißfeldt heiko@hexco.de):
- Changed from GPL to CDDL with permission from Heiko
- New Reed Solomon decoder from Heiko allows to repair defective
CD-ROM sectors. Note that this code is from ~ Y2000 and note that
I did discuss OpenSource activities for the Reed Solomon Decoder
and the Cdrecord DVD support code with Heiko at that time.
We did agree in 2000 to make both OpenSource at the same time.
- #define memmove() to movebytes for libedc_dec if memmove is missing.
- Fixed array index overrun in L1 coder. Thanks to Heiko Eißfeldt.
The problem was reported by the coverity test. Note that the L1 coder
is not used by cdrtools.
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
- Avoid some GCC warnings
Libcdrdeflt:
- This is a new library that has been introduced as many programs like
to parse the content of /etc/default/cdrecord
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
Libdeflt:
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
- lbdeflt needs to be compiled before libcdrdeflt when creating
dynamic libs
Libfind:
- The libfind code (developed as part of the sfind(1) command) has been added
in order to support "mkisofs -find ..."
- libfind no longer uses static global data. This version of libfind
is the first real library version that even allows to implement
the find(1) program in less than 200 lines of code.
- -perm now correctly recognises argument parsing errors by
dealing with the fact that mode_t is unsigned.
- Is now quiet on NFSv4 ACLs (ZFS) although it still does not support them.
- getnum()/getllnum() & gettnum()/getlltnum() have been moved to libschily
- Using js_*printf() instead of *printf() via -DSCHILY_PRINT
- Avoid a core dump caused by probably uninitialized data
when using -exec ... {} +
- Workaround for a Mac OS X linker bug
- find_parser() now does no longer call exit() on errors.
- New funtion b_find(int argc, char ** argv, vound * dummy)
implements the ksh93 builtin function interface
- b_find() sets the flag WALK_NOEXIT for treewalk to make sure that
the complete find implementation does not call exit() anymore.
- new function walkinitstate()
- Libfind is now close from the final state
- Added README file to the directory libfind/ that help to learn how
to create a complete find(1) command, a "bsh" find builtin and a
ksh93 find builtin using libfind.
- libfind has been restructured to allow it to be used as builtin function
inside shells like e.g. "bsh" and "ksh93".
- libfind now allows I/O redirection (needed for shell builtins).
- libfind now may be told to check for abort situations (needed for
shell builtins in order to check for abort on ^C).
- New function find_free()
- Libfind no longer leaks memory if called with a commandline with
syntax errors.
- find_list.c now #ifdefs names like S_IFLNK
- -size now understands things like -size +10m
- the function getperm() has been moved to libschily
- find_main() now supports to propagate a different environment
(e.g. with a different PATH) to fexec())
- libfind (used by sfind, bsh, star, mkisofs) fixed the -exec {} +
implementation. Before the fix, it could core dump if the built-in
xargs(1) would exactly fill up args to the size of ARG_MAX.
- This is the final step to make libfind a "real" library
- find.h walk.h fetchdir.h idcache.h moved to include/schily/
- A bug in libfind was fixed that causes
find . -size -20k -ls
to check for files smaller than 20480 Blocks instead of
looking for files smaller than 2084 characters.
- & before some functions removed
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
- libfind now correctly deals with ARG_MAX in case that
the bitness of the libfind executable differs from the bitness
of the executable called by -exec name {} +
- Fixed a typo in idcache.c
- let libfind deal with the differences between Linux ACLs and IRIX ACLs
- Added $(LIB_ACL_TEST) to the libs for libfind to allow a shared libfind
with ACL support on Linux.
- Fixed a bug in libfind/walk.c (calling strcatl() with last parameter 0
instead of (char *)0)
- New file libfind/find_tok.h to separate the token names from the rest of the implementation.
- Moved token definitions from find.c to find_tok.h
- The primary -perm now implements a new feature:
-perm +mode will evaluate as true if any of the bits set in mode are set in the
permission bits fro a file.
- New primary operators:
-amin deprecated - only for GNU find compatibility
-cmin deprecated - only for GNU find compatibility
-mmin deprecated - only for GNU find compatibility
-empty TRUE zero sized plain file or empty directory
-execdir program [argument ...] \\;
-fls file list files similar to 'ls -ilds' into 'file' (always TRUE)
-fprint file print file names line separated into 'file' (always TRUE)
-fprint0 file print file names nul separated into 'file' (always TRUE)
-fprintnnl file print file names space separated into 'file' (always TRUE)
-ilname glob TRUE if symlink name matches shell glob
-ilpat pattern TRUE if symlink name matches pattern
-iname glob TRUE if path component matches shell glob
-ipat pattern TRUE if path component matches pattern
-ipath glob TRUE if full path matches shell glob
-ippat pattern TRUE if full path matches pattern
-okdir program [argument ...] \\;
-print0 print file names nul separated to stdout (always TRUE)
-executable TRUE if file is executable by real user id of process
-readable TRUE if file is readable by real user id of process
-writable TRUE if file is writable by real user id of process
- Libfind Version is now 1.5
Libfile:
- Workaround for a Mac OS X linker bug
- Using js_*printf() instead of *printf() via -DSCHILY_PRINT
- Better portability for strerror() in file.h
- The license has been changed from a license (similar to a BSDl 4 clause)
to a new BSDL 2 clause license with permission from all involved authors.
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
- Some changes for better VMS support
Libhfs_iso:
- Workaround for a Mac OS X linker bug
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
- Removed a warning from the HP-UX C-compiler about a possible endless loop
Libsiconv:
- New library libsiconv replaces libunls.
The new concept for libsiconv saves ~ 130 kB of executable space in
mkisofs and allows to use iconv() if it is present on the current
platform.
- sic_open() now allows to be called with a NULL pointer argument
- sic_list() now returns the number of listed translations
- Deactivate TAB_SIZE check for K&R compilers. They cannot
do complex math in cpp.
- Changed sic_nls.c to allow compilation on SCO OpenServer-5.x and
other compilers that set __STDC__ to 0 and are not at least
fully C89 compliant.
- libsiconv/sic_nls.c modified to allow compilation with older GCC
versions.
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
- Fixed a copy/paste error from libsiconv. Libsiconv now correctly
initializes duplicated data structures to prevent core dumps.
Thanks to Jörg Sonnenberger for reporting.
- Fixed a problem in libsiconv in case that the the locale is specified as
"iconv:name".
- Add the VMS C-compiler to the list of exceptions for not fully C99 compliant
compilers to allow compilation.
- libsiconv now supports sic_close()
Libscg:
- Modified the remote SCSI library stuff that has been changed due
to a security problem on order to make it compile again on HP-UX.
- Trying to introduce a workaround for broken &
on various Linux systems.
- Trying to introduce a workaround for the changed SCSI generic Linux
Kernel interface from Linux-2.6.8.1 and newer.
Be very careful with testing. The Linux adaption layer for libscg
is already full of workarounds for bugs, unstable interfaces and
unwillingness of the Linux Kernel maintainers to give access to the
needed information for libscg. I am not sure whether this workaround
will not have problems. It has been tested on a Pegasus PPC running
Linux-2.6.8.1
- Autoconf test for broken Linux sg.h headers added
- if libscg is compiles on newer Solaris systems, the warning:
"Warning: Volume management is running, medialess managed drives are invisible.\n"
is no longer printed.
Since Solaris 11 Build 21, vold no longer hides empty drives
that are under volume management. This now allows cdrecord to be even
used to close the tray while vold is running.
The criteria used to decide whether Solaris is "recent enough" is
#ifndef SEEK_HOLE
The definition SEEK_HOLE has been added with Solaris 11 Build 14
while the fixed vold appears in Solaris 11 Build 21.
- Support for root-less cdrecord using fine-grained privileges.
Remote SCSI not tests for PRIV_NET_PRIVADDR instead of (geteuid() == 0)
If you like all users to be able to call cdrecord root-less, you need
Solaris 10 or newer.
Edit the file /etc/security/exec_attr and add:
All:solaris:cmd:::/opt/schily/bin/cdrecord: privs=file_dac_read,sys_devices,proc_lock_memory,proc_priocntl,net_privaddr
All:solaris:cmd:::/opt/schily/bin/readcd: privs=file_dac_read,sys_devices,net_privaddr
All:solaris:cmd:::/opt/schily/bin/cdda2wav: privs=file_dac_read,sys_devices,net_privaddr
If you like to allow only specific user to use cdrecord,
use something like:
CD RW:solaris:cmd:::/opt/schily/bin/cdrecord: privs=file_dac_read,sys_devices,proc_lock_memory,proc_priocntl,net_privaddr
instead and make the users members of the profile "CD RW"
by adding a line like:
joerg::::profiles=CD RW
into /etc/user_attr
Note that you either need to call cdrecord via "pfexec cdrecord ....."
or by using a profile aware shell (e.g. /usr/bin/pfksh)
- Support for root-less cdrecord using fine-grained privileges.
Remote SCSI not tests for PRIV_NET_PRIVADDR instead of (geteuid() == 0)
This is now active since the needed autoconf code is out.
- BeOS/Zeta libscg low level adoption code fixed.
The code now is passing a "scgcheck" test.
- Changed from GPL to CDDL
NOTE: The libscg code may only be used together with other
code that is under an approved OpenSource license,
see http://www.opensource.org/.
- scsi-apollo.c & scsi-hpux.c indented properly to follow Cstyle
- scsi-linux-ata.c cast added to avoid strange warning from GCC
caused by bad coding style in the Linux kernel.
- scsi-linux-ata.c trying again to add workarounds for new Linux
Kernel self-incompatibilities: Adding the same uid workaround
as for scsi-linux-sg.c. Note that I am not sure if this is the
only incompatibility that has been added with Linux-2.6.16, it may
be that they did also break the behavior of seteuid().
Please help me with further testing and debugging.
- Warn Linux users to prefer dev=ATA: over dev=ATAPI:
- Print correct error message (using the right errno) in case that
libscg tries to open more than one file on Solaris.
- Bumped libscg version to 0.9
- Trying to support FreeBSD Kernel under non-FreeBSD (GNU) userland
- New interface function scg_numbus() returns the number of SCSI busses.
- Trying to work around a Linux design problem that has been introduced
about 3 years ago when Linux stopped to support an orthogonal SCSI
Kernel transport for all SCSI devices. Since then, ATAPI drives are
handled different from other SCSI devices. The problem is that
the linux maintainers intentionally reduce the information that
is available in the kernel and this way prevent to allow libscg to
only show only unique drives.
libscg now tries to map ATAPI drives to SCSI bus numbers >= 1000.
cdrecord -scanbus should now show even ATAPI drives. This allows
cdrecord/readcd/cdda2wav to implement the auto-target feature even
on Linux.
- Try to deal with broken Linux distributions that do not provide a "HZ" macro
in /usr/include/sys/param.h
- Use USER_HZ in favor of HZ (if available) for computing SCSI timeout values.
- Disable automatic ATA (dev(hd*) integration and scan on pre-Linux-2.6 systems.
- Try to skip non-POSIX compliant EROFS error codes when opening /dev/hd*
- Trying to implement a workaround for a Linux USB DMA size problem by implementing
support for a new ioctl proposal from Alan Stern
UPDATE: It seems that the final fix in the Linux kernel will take some time
and will be incompatible to the current patch. For this reason, I decided to
make the intermediate patch available at:
ftp://ftp.berlios.de/pub/cdrecord/alpha/Linux-USB-DMA-Size.patch
- Using js_*printf() instead of *printf() via -DSCHILY_PRINT
- add the new scg_numbus() to the Solaris linker map file
to allow again dynamic linking
- scg_numbus() function for FreeBSD corrected to make cdrtools work again.
Thanks to a hint from Joseph Terner
- Better help message for Mac OS X with dev=help
- Detect & correctly handle SCSI send permission problems with USCSI and Solaris
- scg/scgcmd.h upgraded to be sharable with the "scg" Solaris kernel driver
- scg/scgio.h upgraded to be sharable with the "scg" Solaris kernel driver
- Allow libscg to correctly compile in 64 bit mode on amd64 Solaris
platforms
- "make install" now installs the libscg include files into $(INS_BASE)/include/scg/
- aspi-win32.h and spti-wnt.h now in SCCS
- Included a patch for the CAM interface from the FreeBSD people.
The patch sets up the CAM data structures in a way that allows
SCSI bus and target scanning.
- Unneeded code from libscg/scsierrs.c removed
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
- Avoid some GCC warnings
- New SCSI low level transport for ATARI FreeMiNT has been added.
Thanks to Yvan Doyeux
- A first version of the SCSI adaptation layer for Syllable has been added.
Thanks to Kristian Van Der Vliet for the first
implementation.
- Haiku is a BeOS clone and thus uses scsi-beos.c as SCSI adaptation layer.
IMPORTANT NOTICE: if you like to compile libscg with some Haiku releases
you may first need to copy a file:
cd /boot/develop/headers/os
cp device/CAM.h drivers/CAM.h
CAM.h was at /boot/develop/headers/os/drivers/CAM.h in BeOS and as CAM
has no own hardware, it seems to belong into /boot/develop/headers/os/drivers/
- Added a workaround for the type disaster in the Appls IOKit include files
in order to support 64 bit binaries
- Raised the SCSI Bus-number limit from 256 to 500 for Linux as a workaround
for a resource leak bug in the linux kernel. The workaround lets the problem
happen much later but cannot completely avoid it. If you are hit by the Linux
kernel resource leak bug, you need to reboot.
- The low level SCSI transport code for Mac OS X has been reworked.
The code now supports cdrecord -scanbus
The code now supports cdrecord's autotarget mode
The code now supports to communicate with BluRay drives
The code now prints a longer help text that instructs what to do in order
to work against the "diskarbitrationd" program on Mac OS that tries to
steal us our hardware.
If someone is able and willing to help, please send mail!
I like to be able to tell "diskarbitrationd" to give up specific drives
and to set up shared access.
- Added a hack to liscg to allow cdrecord -scanbus to work on NetBSD
- Added a hack to liscg to allow cdrecord -scanbus to work on OpenBSD
libscg now supports -scanbus and cdrecord's autotarget feature on the
following platforms:
SunOS (SunOS-3.x & SunOS-4.x)
Solaris (SunOS-5.x)
AmigaOS
ATARI MiNT
BeOS
FreeBSD
NetBSD
OpenBSD
DragonFlyBSD
Cygwin on win32
Cygwin on win64
Max OS X
Haiku
HP-UX
IRIX
Linux
NextSTep
OSF-1 (Digital UNIX)
OS/2
SCO OpenServer
SCO UnixWare
VMS
Zeta
- Make libscg deal with the new error code from HP-UX that
is returned for a non-existing ATAPI slave.
- Some minor changes in libscg to make scgcheck report less problems
with HP-UX
- changed a include path in libscg/scsi-mac-iokit.c to allow
compilation on "Snow Leopard"
- Removed some GCC warnings from libscg/scsi-sgi.c
Libscgcmd:
- This is a new SCSI command library
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
Libmdigest:
- New library
Rscsi:
- Changed from GPL to CDDL
- New interface function scg_numbus() returns the number of SCSI busses.
This is implemented via the new emote function "N".
- "make install" now also installs the READMEs and other documentation to
..../share/doc/rscsi/
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
- Raise the SCSI bus nubmer limit to 1024 to allow the new Linux ATA mapping.
- the configuration file "rscsi" is now by default installed into
/etc/default/rscsi
- First complete version of a man page for rscsi.
- Makefile.dfl now detects whether /etc/default/rscsi already exists
Cdrecord:
- Support for the Plextor GigaRec feature.
Use driveropts=gigarec=1.2 to increase CD capacity by 20%.
- Allow the -shorttrack option for RAW mode, thanks to a report
from Sebastian Trueg
- Enhance the minimal grace time from 2 to 3 seconds to make sure
that cdrecord will not get out of sync with locks from the
Volume management system.
- Better checks and better error messages for /etc/default/cdrecord
- Correct verbose print mode for old pre-MMC TEAC drives.
- Added support for Ultra speed+ CD-RW media recognition and a check
whether the drive supports Ultra speed+ CD-RW media.
(Thanks to Alexander Noé).
- Correctly evaluate the write speeds for Ultra speed+ CD-RW media.
This prevents wrong warnings that the "drive does not support Ultra speed+"
- Fixed a typo in the driveropts=help messages
- Trying to work around a noncompliance (modified interface) present on newer
Linux kernels that causes cdrecord to be unable to allocate a SCSI transfer
buffer.
Newer Linux kernels do not honor a contract from mlockall(MCL_FUTURE)
after cdrecord turned off euid == 0 from a suid root installation.
Instead of honoring mlockall(MCL_FUTURE), Linux checks each mmap()
and compares against getrlimit(RLIMIT_MEMLOCK
- Explicit fine grained privileges support for Solaris.
Cdrecord now switches off all privs that are no longer needed.
- Adjust some timeouts to prevent that the drive buffer of
newer Pioneer DVD writers empties when writing high speed DVD
media.
- Support for BeOS/Zeta shared memory was added
- New tag CDR_MAXFIFOSIZE= in /etc/default/cdrecord allows to
limit the size of the FIFO cdrecord is using. This helps the
sysadmin to prevent other people from locking up the system.
- Fixed a bug caused by an uninitalized variable when handling
CDR_MAXFIFOSIZE= and no file /etc/default/cdrecord exists
- Changed from GPL to CDDL
- Moved the DVD support code to the OpenSource part.
Note that this has been planned in 1998 already. The plan
was to make the DVD support code OpenSource at the time when
the successor of the DVD becomes ready.
In case you do not know the reason why the DVD support
code has not been OpenSourced before....Cdrecord is the 3rd
program that did start supporting DVD-R. This was in February 1998.
A company from the MS-WIN area did steal my libscg code
in a way that made it hard if not impossible to sue them.
This company did implement DVD support very late (not much
more than a year ago) and I did not like to "help" them again.
- Fixed a typo in defaults.c & scsimmc.h
- Introduced a better DMA speed test that now hopefully notices
all cases when the SCSI read buffer command does not work.
- Print the physical drive buffer size in addition to the logical
drive buffer size when both differ.
- Added a workaround for a NEC DVD firmwarebug that caused cdrecord
to use the CD write speed instead of the DVD write speed.
- Added a workaround for the fact that some NEC writers return a too
small size for half written DVD+RW (use end_lba from GET PERFORMANCE
in this case).
- Better error messages in case of no track options that are called
together with file type arguments.
- Added new Mt.Fuji6 profile texts for HD-DVD and Blu ray writers.
- Avoid a GCC warning in the code that works around a Linux DMA residual bug.
- Replace nice(-20) by nice(-NZERO)
- cdrecord now supports to set the layer break for DVD+R/DL.
This reduces the write time but as there is currently no way
to specify the layer break by hand, dual layer DVD-Video does
not yet work.
- cdrecord -atip now also prints the rzone info for DVD+ media
- cdrecord -atip now prints more information for DVD-R/DL media
- cdrecord now also supports to write to DVD-RAM
- New test for DVD-R/DL layer jump write capability
- Starting to implement a new default write mode that is not always TAO
but fits best to the current writer and medium.
- New option driveropts=layerbreak switches DVD-R/DL into layer jump mode
- New option driveropts=layerbreak=value sets manual layer break
- cdrecord -prcap now also prints the MMC4 profile list and the feature list
- SCSI MMC4 print feature codes enhanced
- SCSI MMC4 print feature now knows more recent feature numbers
- "gconf" debug code removed - no longer needed
- print formated capacity values with cdrecord -atip
- Renamed getdelim() to getworddelim() to avoid a name clash in Cygwin.
Note that there is still a name clash on Cygwin with getline(). As this
is a hard POSIX violation caused by Cygwin, you need to edit Cygwin's
/usr/include/stdio.h and remove the non-conforming Cygwin getline()
if you like to compile cdrtools. Please also make a bug report against
Cygwin. Tell the Cygwin people that libschily's getline() is compliant
to a commercial interface published since 1982. Cygwin needs to use a
different name if they don't like to follow the official getline()
prototype.
- Cdrecod now default to the write mode "-sao" in case that no write mode
has been specified. Cdrecord -multi continues to default to -tao.
If your drive does not support -sao, or if cdrecord does not support -sao
for your drive, you should now call cdrecord -tao.#
- If no dev= option has been specified or of dev= only contains a SCSI transport
specifyer but no address, cdrecord now searches the SCSI address space and
if exactly one CD-ROM drive is found, this drive is used.
Note that this will not work on user unfriendly platforms that do not allow
SCSI address scanning or that do not allow to scan for SCSI drives in a single
address space (like Linux) this new feature does not work.
The two modifications from above now allow dummies to call "cdrecord iso-image"
in case they are on a user-friendly OS that allows "cdrecord -scanbus" without
any further parameters to find all CD-ROM drives.
- Calling "cdrecord file file" now works.
- The atip information now includes enhanced rzone information
with dual layer values.
- struct rzone_info now includes the DVD/DL enhancements from MMC
- print_diskinfo() enhanced for DVD support
- New option -minfo/-media-info to print Media information/status
- prdiskstatus() which is supporting cdrecord -minfo is now a globally implemented
function.
- cdrecord -minfo extended to print TOC related media info.
The new option -minfo is now almost complete.
- cdrecord -scanbus now defaults to scan 1024 SCSI busses in case that the "numbus"
function is not yet available on a remote RSCSI server.
- Make cdrecord -msinfo print the right values for "multi-session" (multi-border)
DVD-R and DVD+R.
- cdrecord -atip output for DVD media enhanced and updated for DVD+R/DL & HD-DVD
- Enhanced CUE sheet parser to allow writing the new Zeta CD from
http://www.zeta-os.com/cms/custom/lcd/indexe.php
- Supporting -raw/-raw16/-raw96r in CUE sheet mode (with cuefile=).
Please test and report as I am not able to test all possible cases.
As it seems that this new mode works now properly, it it possible
to write SVCDs on Pioneer writers that refuse to write SVCDs in -sao mode
because Pioneer implements a silly internal memory management that
reserves memory for 99 tracks with not more than 2 indices each.
In RAW mode, cdrecord takes care of subchannel data and is able to work
around this deficit in Pioneer drives.
- Correctly reset CDRWIN CUE sheet state at the beginning of a new track
- Added some small changes to help compiling on VMS
- getnum -> libschily
- Using js_*printf() instead of *printf() via -DSCHILY_PRINT
- Some %d -> %u changes in printf() formats.
- Fixed MMC-4 Profile 0x14 name to "DVD-RW sequential recording"
- A typo in the man page has been fixed (mkisofs does not have a -q but
a -quiet option).
- A debug message in the DVD+ driver hav been updated to make cdrecord
again compile in -DDEBUG mode.
- Trying to work around a Pioneer firmware bug that causes cdrecord to write
DVDs at lowest speed.
- Reset SCSI silent mode after cdrecord did use the auto-mode (no dev= parameter)
to find the drive. This again gives visible error messages.
- Let cdrecord check the available transfer size for more SCSI
commands.
- "make install" now also installs the READMEs and other documentation to
..../share/doc/cdrecord/
- New function verify() in high level code.
- Some small typo fixes in the man page
- Speed values are now also displayed as multiple of Blu Ray 1x
- First support for Blu Ray media.
- The read disk structure command has been enhanced to support the
media type field for Blu ray.
- Speed values are now also displayed as multiple of Blu Ray 1x
- Cdrecord now aborts with DVD+R if -dummy has been specified as there is
no -dummy mode for DVD+R. This has been forgotten for years....
- cdrecord -pad cue=file now works as people expect.
Thanks to to Bernd Eggink for reporting
- Workaround for new Solaris behavior for Console users if hald
is active. Give error message and abort instead of useless messages.
- Print Linux 2.6.8 warnings only if there really was a problem.
- Blu Ray driver now supports "cdrecord -atip" to read manufacturer IDs.
- Several MMC-3+ Text strings for profiles and media codes have been added.
- New code to better print speed performance values
with cdrecord -prcap
Note: The 'MATSHITA' 'BD-MLT SW-5582 ' seems for unknown
reason not to support to retrieve the current read/write speed
values via get_performance.
- cdrecord -minfo now prints "Mounted media class" and
"Mounted media type" name.
- Added support to unlock the free firmware for the Plextor 755 and 760
drives. Thanks to a hint from Alexander Noé.
This makes the following features available again:
GIGAREC SINGLESESSION HIDECDR
Note: You need to install free firmware in the drive first to make this
work.
If you like, you may turn the feature off using "driveropts=plexdisable"
- Added support for enhanced gigarec found in newer Plextor drives.
The gigarec values 0.9 anf 1.1 are now supported. Cdrecord now supports:
0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4
Note that not all values are supported by all drives.
- Added support for Yamaha AudioMaster in the Plextor Premium 2.
Thanks to a hint from Paolo Saggese. Original Yamaha audiomaster
is like gigarec 0.85, Plextor implemented 0.8666 which still looks
like a useful additional intermediate value.
- Make the man page more obvious that gigarec with values < 1.0 is _very_
similar to audiomaster except for pit sizes.
- Code restructured from a CD/DVD only program to a program that
writes multiple different similar media.
- New simulation driver "bd_simul"
- Trying to make the text in cdrecord.c that forbids incompatible changes
to be published under the name "cdrecord" more user friendly.
- Better code structure for dvd/bd driver recognition.
- Allow to disable all speed limitations by setting the environment variable
CDR_FORCESPEED to "any". This is needed to allow full write speed on drives
with defective firmware (like e.g. the Plextor PXW-716) that do not enable
DMA with the "read buffer" command.
- Changed the drive buffer size recognition so that cdrecord now shows
correct size values even for the LG GSA-H55N
- Take more care with calling SCSI read buffer while trying to find the
DMA speed of the drive
- Allow to blank DVD-RW/DL. There are no known drives yet, but it seems that
the media is already sold.
- Add a format-type value column to the formatted capacity table to allow
for better identification of the various entries.
- New wording for some comment to make clear that the name "cdrecord" cannot be
used after specific parts of the code have been changed.
- Cdrecord now correctly recognizes unformatted BD-RE media.
- cdrecord man page now mentions the "lofi" driver for Solaris
- Cdrecord now re-checks the media after a "blank" or "format"
operation has been issued. This prevents problems with incorrect
media size assumptions.
- cdrecord now implements a simulated "blank" feature for media that
itself does not support blanking: currently DVD-RAM + DVD+RW
- cdrecord/readcd/cdda2wav now support an enhanced /etc/default/cdrecord file
with an additional parameter to specify the max. transfer size for a device.
- CDR_FORCESPEED=any now works for cdrecord to switch off DMA speed test results
- Make cdrecord compile again with a K&R compiler
- Add a "blank emulation" layer to the BluRay driver too.
- Reduced the minimal write speed of a ultraspeed CD-RW capable drive
from 16x to 10x.
- cdrecord now correctly writes DVD+R/DL media with all drives.
Before, there have been problems at the layer break with some
drives.
- The cdrecord DVD multi-border code from May 2007 has been made OpenSource.
Multi-Border is the DVD multi-session equivalent. It allows to write
up to 1024 sessions on a single DVD.
The code currently covers the most important case of writing to DVD-R/DVD-RW
media.
You need to specify -multi for every session.
- The cdrecord man page now mentions -multi with respect to DVD multi-border.
- Make sure that the DVD and BluRay drivers do not lower the default timeout.
cdrecord timeout=# now always allows to raise the default timeout to a larger
value.
- Added a workaround to prevent the Lite-ON BD B LH-2B1S/AL09
from hanging up when trying to write a BluRay Medium.
- Cdrecord now by default tries to set up a DMA Size of 126 kB.
If non-MMC drives are found, we fall back to the old value of 63 kB
- Converted to use libcdrdeflt
- Converted to use libscgcmd
- Man page now includes many small modifications that mention BluRay media.
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
- New driver "mmc_bdrom" is used for profile 0x40 and allows to
retrieve the ADIP data for BD-R media that is reported as BD-ROM
by some drives.
- Added a workaround for a firmware bug in the drive
'HL-DT-ST' 'DVD-RAM GH22NP20'
that reports DVD-R media as media with zero size.
- Added a workaround for a firmware bug in many 'HL-DT-ST' drives
(e.g. 'HL-DT-ST' 'DVD-RAM GSA-H55N') that return unreliable data
with READ BUFFER and makes it impossible to get the drive DMA
transfer speed.
- Added a workaround for frequent kernel/driver bugs in FreeBSD and Solaris
that prevent the DMA residual count to work.
- Try to call scg_close() before exiting cdrecord.
- Default Transfer Size reverted from 126 kB to 63 kB.
Sorry FreeBSD guys - it seems that FreeBSD is the only OS that
correctly deals with larger DMA sizes.
FreeBSD people may add a line with CDR_TRANSFERSIZE=126k
in /etc/default/cdrecord to raise the default.
The current problems are:
- On Solaris 10 Sparc fs=126k causes a kernel panic
- On Solaris 11 the drivers partially return incorrect
max DMA sizes that may cause cdrecord to fail.
- On Linux with USB fs=126k may not work at all
- On Linux with other interfaces, fs=126k may reduce
the DMA speed to a value that always causes buffer
underruns.
I hope to find a better solution in the next development cycle
after the current code has been release as stable version.
Expect the next stable release to appear very soon.
- Cdrecord is now by default installed suid root in case that the caller
of make install has root privileges
- the configuration file "cdrecord" is now by default installed into
/etc/default/cdrecord
- Some unused variables and functions have been commented out
- Avoid some GCC warnings
- Some small typos in error messages have been fixed.
- Workaround for 'TSSTcorp' 'CDDVDW SE-S224Q ' 'TS01' firmware bug.
The drives does not return SES_UNDEF for unformatted DVD+RW media.
- Do not install by overwriting /etc/default/cdrecord in case an earlier file
exists.
Please give feedback on what you like to see in future.
Do you like to see a sample file installed?
- README.cdplus has been renewed
- Fixed a minor typo in cdrecord
- Some better warnings with cdrecord in case that the environment variables
'CDR_FORCERAWSPEED=' or 'CDR_FORCSPEED=' have been specified.
- Better error messages when the media size is unknown
- Try to work around a firmware bug in the drive:
'HL-DT-ST' 'DVD-RAM GH22NP20' '1.02'
that is in effect with DVD+R media.
***** ATTENTION *****
The algorithm to fetch the size information from a DVD+R/RW medium was changed with this
release. Please check for and report problems.
- cdtext.c now checks for empty CD-Text files to prevent a later endless loop in cdrecord
while writing the TOC. Thanks to Sebastian Trüg for reporting.
- Man page corrected some problems from hyphen -> minus
- Cdrecord now calls read_format_capacities() in silent mode in order to
check whether the current drive supports this SCSI command.
- Correctly abort the FIFO in cdrecord on BeOS and Haiku
in case that the clone ara cannot be made shared.
- Correctly abort the FIFO in cdrecord on BeOS and Haiku
in case that the clone ara cannot be made shared.
- The cdrecord man page now mentions that the -clone mode is a bad idea to copy
audio CDs.
- Better man page with repect to dev=
- The cdrecord man page has been restructured.
- Fixed a bug in the workaround code for a firmware bug for DVD+R
media in HL-DT-ST drives.
- Added a workaround for a firmware oddity with DVD+RW on
'_NEC ' 'DVD_RW ND-3500AG' with media written from other drives.
- Work around a bug in the firmware from drives
developed by PIONEER in November 2009. This affects
drives labelled "Pioneer", "Plextor" and "TEAC".
Do no longer call cdr_buffer_cap() before the drive
buffer was not at least filled once to avoid that
the the drive throughs away all data.
- Man page reworked
- Cdrecord now defaults to -sao in case that cuefile=something was specified
- man page restructured
- Cdrecord now is able to use -isosize even in case that the image data
is read from stdin. This makes it easier to use "mkisofs | cdrecord".
- The CDRWIN cue sheet parser has been enhanced to give better error messages:
- There are now hints on what is missing in the CUE file
- The error message now also contains the column where the problem was detected
- Allow cdrecord to compile again on a pre-C99 compiler (there was a variable declaration
past a statement in a function.
- A description for the *.inf file fomat was added to the cdrecord man page
- New (previously missing) CD-Text tags have been added to auinfo.c (*.inf file parser):
Albumsongwriter=
Albumcomposer=
Albumarranger=
Albummessage=
Albumclosed_info=
Note that these tags do not appear in the CDDB database.
- The *.inf file parser now supports a new tag "Track=" that
is intended to carry the absolute track number from the original disk.
- Cdrecord now supports to copy CDs with hidden track if there are *.inf files
created by cdda2wav. In order to copy a CD with hidden Track with optimal
quality, call:
cdda2wav -vall -B -paranoia paraports=proof cddb=0
cdrecord -v -sao -useinfo -text *.wav
- cdwrite@lists.debian.org removed from man page
please use the official mailing lists for cdrecord that exist since 10 years:
http://developer.berlios.de/mail/?group_id=5
- Hidden Track support is now complete:
- Added support for writing Hidden Audio Tracks before Track #1
in the Mtsushita CW-7501 device driver.
- Added support for writing Hidden Audio Tracks before Track #1
in the Sony CDU-924 / CDU-948 device driver.
- Added support for writing Hidden Audio Tracks in RAW mode.
- Added support for Track #1 having a different number than 1 into
the CUE file parser.
- The CUE file parser now prints much better error messages in case that
a keyword is seen out of the permitted order.
- The CUE file parser now supports hidden tracks.
- Fixed a bug in the CUE file parser that caused "pregap size 0" (missing
INDEX 00) to be replaced by the default pregap size of 150 sectors.
- Added a workaround for a firmware bug in the drive:
'HL-DT-ST' 'BD-RE BH10LS30 ' '1.00'
That causes the drive to return zero media size for BluRay media.
- cdrecord now aborts if the cuefile= option was specified with a non-CD
media in the drive.
- CDRWIN CUE files now may refer to several data files where each data file
contains less than the whole disk but more than a single track.
- The CUE parser now correctly sets the sector size information for the
lead-in area.
- The CUE parser now by default only accepts CDRWIN CUE compliant files
but may be switched into an enhanced mode by introducing a special comment
"REM CDRTOOLS"
- The CUE parser now supports a FILE command between INDEX 00 and INDEX 01.
This is needed in order to write CUE sheets from Exact Audio Copy.
Note that cdrecord needs to be switched into the enhanced CUE parser mode
by either specifying "REM CDRTOOLS" or by specifying:
REM COMMENT "ExactAudioCopy v0.99pb5"
Also note that cdrecord currently does not support more than one FILE
command per TRACK. For this reason, hidden audio tracks only work if
the hidden audio data is in the same file that also contains data for
track 1.
- New commands "ARRANGER", "COMPOSER" and "MESSAGE" for adding CD-Text information
in CUE files. Note that these commands are cdrecord specific extensions that
re unknown by CDRWIN and thus need "REM CDRTOOLS" to be enabled.
- The CUE file format is now documented in the cdrecord man page.
- Fixed a bug with INDEX 00 support for CUE files from
ExactAudioCopy
- Cdrecord no longer tries to close a session on a BD-RE media.
This is not supported in the recent MMC Standard and most drives
return a SCSI error when attempting to close such a session.
- Cdrecord now auto-formats unformatted (maiden) BD-RE media.
Unformatted BD-RE media is rare but it exists. This function
completes the BluRay support in cdrecord.
- Cdrecord now prints progress messages when formatting DVD+RW media
and called with -v.
Cdda2wav (Maintained/enhanced by Jörg Schilling, originated by Heiko Eißfeldt heiko@hexco.de):
- Added a workaround for the _POSIX_PRIORITY_SCHEDULING behavior
on MacosX: defined but not supported
Thanks to: Emanuele Giaquinta
- Bugfix: cdda2wav did previously chose to ignore the result of realloc(3)
This prevents core-dumps.
- Explicit fine grained privileges support for Solaris.
Cdda2wav now switches off all privs that are no longer needed.
- Write correct error info in case that BeOS/Zeta *_area() calls
fail.
- As Heiko did not work on cdda2wav since September 2004,
Heiko did hand over the SCCS history for cdda2wav in February 2006
- Autoconf test for added (FreeBSD)
- Added some missing FreeBSD related changes from Heiko done in 2004
IMPORTANT: I need testers for FreeBSD and DragonFly BSD as
a result of the merge with the complex changes
from Heiko.
- Started to make cdda2wav Cstyle compliant.
- Avoid to shutdown the whole system when kill(getppid(), SKGINT)
would result in kill -INT 1 because the parent cdda2wav is
dead and the child is orphaned and cdda2wav has been called by root.
- __FreeBSD_version >= 600021 have devmajor == 0 for all devices.
Thanks to Marius Strobl for reporting.
- General #ifdef structure related to FreeBSD in mycdrom.h now
corrected, thanks to Marius Strobl.
- Try to fix some FreeBSD/DragonFly related problems that have been
introduced with a06 when Heiko's changes from 2004 have been integrated
IMPORTANT: I need testers for FreeBSD and DragonFly BSD as
a result of the merge with the complex changes
from Heiko.
- Changed from GPL to CDDL with permission from Heiko
- Code now has been completely reindented to follow the "Cstyle"
rules. As this did result in touching more than 50% of the
code, and as some of the code is platform specific I cannot grant
that I did not introduce bugs. Please test, in special on
platforms other than Solaris.
- Some modifications needed because of the restructured makefiles.
- Replace nice(-20) by nice(-NZERO)
- Renamed Inquiry() by ScsiInquiry() for better VMS support
- Fixed an unsigned comparison with zero in resample.c
- Fixed a printf format string with short argument.
- Fixed a typo in scsi_cmds.c thanks to Steven M. Schweda for reporting.
- New Option ts= # similar to cdrecord's and readcd's options.
This allows to work around a Linux kernel bug that prevents
cdda2wav to be usable with USB drives. To work around this
Linux bug try cdda2wav ts=128k or less.
- If no dev= option has been specified or of dev= only contains a SCSI transport
specifyer but no address, cdda2wav now searches the SCSI address space and
if exactly one CD-ROM drive is found, this drive is used.
Note that this will not work on user unfriendly platforms that do not allow
SCSI address scanning or that do not allow to scan for SCSI drives in a single
address space (like Linux) this new feature does not work.
- Trying to support FreeBSD Kernel under non-FreeBSD (GNU) userland
- The messages for the auto-target function are now printed on stderr
to avoid problems with merged output from stdout.
- cdda2wav -scanbus now defaults to scan 1024 SCSI busses in case that the "numbus"
function is not yet available on a remote RSCSI server.
- Added some small changes to help compiling on VMS
- getnum -> libschily
- Using js_*printf() instead of *printf() via -DSCHILY_PRINT
- Use the new paranoia_init() interface
- Let cdda2wav print the -version output to stdout and in a similar form
as other cdrtools programs do.
- "make install" now also installs the READMEs and other documentation to
..../share/doc/cdda2wav/
- Added some casts to interface.c and ioctl.c in order to prevent warnings
from the Sun Studio 12 compiler.
- The man page has been restructured to correctly use bold and italic
with option descriptions.
- Workaround for new Solaris behavior for Console users if hald
is active. Give error message and abort instead of useless messages.
- cdda2wav now includes a copyright message and a year number
with the -version output.
- Add a workaround for a definition in on SunOS-4.x
- Fixed some minor problems with K&R compilers
- Fixed a +- 1 problem in realloc() for TOC handling.
Thanks to a report from Joshua Reuben Roys
- New option start-sector=sector allows to set an absolute sector number
where to start audio extraction.
This option has been added as a first step to allow to write a
wrapper for cdda2wav to create a "GStreamer plugin". This helps
to:
- avoid license problems in libcdio
- allows to call a privileged programs like cdda2wav from a GUI
to grant full audio extraction quality that needs generic SCSI
commands.
- Cstyle indentation changes
- Man page now includes some forgotten options
- Man page now describes the paraopts= sub option list
- Man page now describes the statistic output from the paranoia code
- New option out-fd=descriptor allows to set redirect informational output
to a different file descriptor than stderr.
- New option audio-fd=descriptor allows to set redirect audio ("-") output
to a different file descriptor than stdout.
This option has been added as a further step to allow to write a
wrapper for cdda2wav to create a "GStreamer plugin". This helps
to:
- avoid license problems in libcdio
- allows to call a privileged programs like cdda2wav from a GUI
to grant full audio extraction quality that needs generic SCSI
commands.
- Explain that libparanoia is not a different Media access method but a filter
between the lower and the upper layers of cdda2wav.
- Fixed a typo in the man page according to OpenSolaris bug ID 6489402
- cdrecord/readcd/cdda2wav now support an enhanced /etc/default/cdrecord file
with an additional parameter to specify the max. transfer size for a device.
- New option -no-fork tells cdda2wav to run in unbuffered mode.
- New option -interactive
The first test implementation supports the following interactive commands:
stop stop reading
If you like to empty the internal buffers,
send "stop" read everything you get from the output pipe
repeat this until no further data is available.
cont continue reading
read trasks Start reading from new trackno
read sectors Start reading from new sector number
exit
quit exit cdda2wav
This new option is a result from a collaboration with the GNOME
developers to make "sound-juicer" legal. Sound-juicer suffers from
license problems from libcdio which is usually loaded as a
"gstreamer" plugin.
The option -interactive together with the related new libgstcdda2wavsrc
gives better quality of the extracted audio-data and does not cause license
violations.
- Interactive mode for corrected to allow new tests
for replacing libcdio in GStreamer.
- child_pid variable moved into global var structure.
- The new -interactive option has now been stabilized for a first integration that
allows to replace libcdio for sound-juicer to come to an implementation without
license violations.
- The MD5 implementation (although currently unused) has been
changed from the RSA variant (that requires advertizing for RSA)
to a "public domain" implementation from Colin Plumb used
in OpenBSD.
- The new MD5 implementation has been made portable.
- Converted to use libcdrdeflt
- Converted to use libscgcmd
- The -M/-md5 option now finally works.
Cdda2wav now computes MD5-sums for the audio data and writes the result
into the *.inf files.
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
- Suppress some incorrect warnings from GCC by doing a double cast.
- Allow longer path names for *.inf files.
- SCSI *scgp is now a clean parameter to all SCSI transport functions.
- toc.c changed to support the new schily/hostname.h
- Cdda2wav is now by default installed suid root in case that the caller
of make install has root privileges
- Some unused variables and functions have been commented out
- struct tocdesc has been restructured to prevent struct tail padding on MC-680x0 systems.
Thanks to Yvan Doyeux for reporting this for the ATARI port.
- The drive 'HP ' 'CD-Writer+ 9600 ' '1.0a' does not like to read SCSI FULL TOC
with a too long transfer lenght. First retrieve the available data count.
- New options -debug -debug-scsi -kdebug -kdebug-scsi -kd to set SCSI low level
debugging in libscg
- The option -v not also supports "!" and "not" to invert the list
of "verbose" options (e.g. -v!indices for everything but indices).
- Avoid some GCC warnings specific to HP-UX
- Added a workaround for gmake < version 3.81.
Older gmake versions evaluate dependencies in the wrong order.
- Prevent a core dump from hitting ^C while cdda2wav tries to call
scg_open() to open the SCSI devices.
- A buggy address computation that caused problems with 64 bit binaries
has been fixed.
- Cdda2wav now correctly deals with longer CD-Text information.
Thanks to Yvan Doyeux for creating a related test CD...
- Cdda2wav now uses an autoconf test to decide whether BEOS clone areas
can be used. This gives Haiku compatibility.
- Fixed a bug introduced with introducing support for MD5 Sums.
Cdda2wav now disables the MD5 sum output in case -no-infofile has been specified
- Autoconf tests for os2.h and os2me.h moved from cdda2wav to
global
- cdda2wav now supports new parameters for the -output-endianess option.
"host" or "machine" represent the actual byte order of the host CPU in the current OS.
- Fixed a man page bug that did hide some text from the visible result. Thanks
to Michael Prokop
- Man page corrected some problems from hyphen -> minus
- Removed some Copyright hints to people who did never really enter code into mkisofs
- Removed a Copyright hint for RSA that is no longer valid.
- cdda2wav now gives better readable text with cdda2wav -help
- BeOS has a /boot/develop/headers/be/support/ByteOrder.h that also defines
_BYTEORDER_H and thus interferes with our cdda2wav/byteorder.h
- The -interactive option is now mentioned in the -help output and the man page.
- Call unit_ready() before retrieving the TOC data in order to work around a Solaris
scsa2usb (SCSA to USB Driver) bug.
- Cdda2wav is now using the sha1 implementation from libmdigest
- Try to avoid an endless loop while parsing ISO-9660 directories
from rotten CD+ sessions.
- Better man page with repect to dev=
- The cdda2wav man page has been restructured.
- cdda2wav now correctly deals with the case when no sound device
was specified. Thanks to Robert Grimm
for reporting.
- Man page reworked
- Removed some (int) casts before the SNDCTL_DSP_* ioctl()s
- The default outout format is now .wav for all platforms.
Before, the default for Solaris was .au.
- man page restructured
- New arg "all" to -t option.
cdda2wav -B extracts all audio tacks into separate files
cdda2wav -tall extracts all audio tacks into a single files
- cdda2wav now by default writes a file "xxx.cdtext" with raw binary
CD-Text data in case cdda2wav was told to retrieve CD-Text.
- A new option -no-textfile allows to disable the creation of the file "audio.cdtext"
This version of cdda2wav creates a file "audio.cdtext" or similar (depending on
the set up file name base) in case that there is CD-Text on the medium and that
the drives supports to read the CD-Text data with MMC SCSI commands.
- Fixed a bug in cdda2wav that caused cdda2wav to set up the file name base too late.
This results in the files "audio.cdindex" and "audio.cddb" always to have this name
while the *.inf files use the name base from the cdda2wav arguments. Now all
files created by cdda2wav honor the file name base.
- Cdda2wav by default fills empty track specific CD-Text data with the Disk global
value (if present). A new option -no-textdefaults allows to disable this fallback
and leaves the related fields empty if they are empty on the master CD.
- Fixed a problem with cdda2wav -interactive (used by GNOME GSTREAMER CD-DAE plugin)
that could cause cdda2wav to dump core in case that there is a data
session past the last audio track.
- New (previously missing) CD-Text tags have been added to the *.inf files:
Albumsongwriter=
Songwriter=
Albumcomposer=
Composer=
Albumarranger=
Arranger=
Albummessage=
Message=
Albumclosed_info=
Closed_info=
Note that these tags do not appear in the CDDB database.
- Cdda2wav now permits to use "max" for the endtrack number. This
allows to specify e.g. -t2+max for a list of tracks from track #2
to the last audio track on the disk.
- New option -cuefile allows to tell cdda2wav to create a CDRWIN CUE
file. This currently only works together with wither -tall, or with
-t0+max or -t1+max.
Note that due to a misconception in the CDRWIN CUE file definition,
it is impossible to create 100% correct CD-audio copy by 100%
following the CDRWIN CUE file definition and having separate audio
files for each track at the same time. For this reason, it is currently
impossible to create CDRWIN CUE files while using cdda2wav -B.
- Cdda2wav now only writes a binary *.cdtext file in case that this
file would contain more data than a header that tells that there
is no further content.
- Cdda2wav no longer removes the Index0 entry from a longer Index list
if Index0 is -1.
- Cdda2wav now automatically scans for hidden audio tracks. This is a
complex task as there are drives that do not allow to read the
hidden data before track 1.
- New option -no-hidden-track allows to prevent cdda2wav from scanning
for a hidden audio track.
- Cdda2wav now writes the new tag "Track=" into the *.inf files that
is intended to carry the absolute track number from the original disk.
- A shortcut for paraopts=sectors-per-track-1,retries=200 was introduced.
The name of the shortcut is "proof", so just use "paraopts=proof" for
selecting the most stringent paranoia mode.
- Cdda2wav now automatically selects paranoia mode in case that the
paraopts= option was used.
- Cdda2wav now again works in suid root mode on Solaris 11. It seems that
the development versions from Solaris 11 did change the behavior with
fine grained privileges in a way that was incompatible with the way
cdda2wav did try to handle both suid root and fine grained privileges.
- Fixed a small bug that made cdda2wav with hidden track support not fully
compatible to earlier versions. In case that only one track is to be extracted,
this is again always track #1 regardless whether the CD has a hidden track.
- Fixed a bug with CDRWIN CUE file support. Cdda2wav used the tag "WAV" instead
of "WAVE" for the data type specifier in the FILE tag.
- cdwrite@lists.debian.org removed from man page
please use the official mailing lists for cdrecord that exist since 10 years:
http://developer.berlios.de/mail/?group_id=5
- Hidden Track support is now complete:
- Fixed a bug in the cdda2wav track loop control that caused cdda2wav
not to write the *.inf file for the last track in case of an audio CD
with a hidden track.
- Introduced an alias "isrc" and "ISRC" for -vtrackid
- Introduced an alias "mcn" and "MCN" for -vcatalog
- cdda2wav now emits a "PREGAP" keyword in the CUE file for a CD without
hidden track if it starts with a sector number > 0.
- New cdda2wav option -vaudio-tracks
- Make cdda2wav -q silent again (even with CDs with hidden track) to
make it compatible again with scripts.
- cdda2ogg and cdda2ogg.1 added to standard install
The script cdda2ogg was enhanced to work seamlessly.
- cdda2mp3 and cdda2mp3.1 added to standard install
The script cdda2mp3 was enhanced to work seamlessly.
- the scripts cdda2ogg and cdda2mp3 now allow to forward options to
cdda2wav.
In order to enable "paranoia mode", call:
cdda2ogg -paranoia
In order to enable the most proof "paranoia mode", call:
cdda2ogg -paraopts=proof
- The cdda2ogg man page was completely reworked
- The SYSvr4 pkg definition now includes cdda2ogg and cdda2mp3
- Added a workaround for a broken ASPI that hangs with
odd transfer counts.
- Makefile.dfl now detects whether /etc/default/cdrecord already exists
Readcd:
- Allow readcd to work correctly in -scanbus mode
Thanks to Fabian Keil for reporting.
- Explicit fine grained privileges support for Solaris.
readcd now switches off all privs that are no longer needed.
- Support for BeOS/Zeta shared memory was added
- -scanbus behavior corrected
- Changed from GPL to CDDL
- New experimental option -edc-corr.
- readcd meshpoints=# -factor now prints correct CD speed factors
as it now correctly computes sector size.
- If no dev= option has been specified or of dev= only contains a SCSI transport
specifyer but no address, readcd now searches the SCSI address space and
if exactly one CD-ROM drive is found, this drive is used.
Note that this will not work on user unfriendly platforms that do not allow
SCSI address scanning or that do not allow to scan for SCSI drives in a single
address space (like Linux) this new feature does not work.
- The messages for the auto-target function are now printed on stderr
to avoid problems with merged output from stdout.
- readcd -scanbus now defaults to scan 1024 SCSI busses in case that the "numbus"
function is not yet available on a remote RSCSI server.
- Using js_*printf() instead of *printf() via -DSCHILY_PRINT
- Speed values are now also displayed as multiple of Blu Ray 1x
- readcd -factor meshpoints=100 now also displays the speed as multiple
of Blu Ray speed if the medium is a BD
- Added support to read C1/C2/CU errors from Plextor and NEC/Optiarc drives.
Thanks to Alexander Noé for the code.
If you run the test with:
readcd -cxscan
you will only see summary output. If you add one -v, you see the error
information for every second that does include errors. If you add -vv,
you see information for every second in the data range.
Note that the output format will change in future to support GNU plot.
I am looking for suggestions for a useful output format.
- Added support for pisum8 tests for DVDs on drives made by Plextor
If you run the test with:
readcd -pi8scan
- Added support for pif tests for DVDs on drives made by Plextor
If you run the test with:
readcd -pifscan
Fall all three new options, you will only see summary output. If you
add one -v, you see the error information for every second (CD)
8 * 32 KB (pisum8) or 32 KB (pif) that does include errors. If you add
-vv, you see information for every interval in the data range.
Note that the output format may change in future,
I am looking for suggestions for a useful output format.
- New option -plot allows to modify the outputformat for the options
-cxscan, -pi8scan, -pifscan
To plot a list of pisum8 and pif errors, call:
readcd -pi8scan -plot > pisum8
readcd -pifscan -plot > pif
gnuplot
gnuplot> plot "pisum8" w l
gnuplot> replot "pif" w l
To plot a list of C1/C2/CU errors call:
readcd -cxscan > cx
awk '{ print $1 " " $2 }' < cx > c1errs
awk '{ print $1 " " $3 }' < cx > c2errs
awk '{ print $1 " " $4 }' < cx > cuerrs
gnuplot
gnuplot> plot "c1errs" w l
gnuplot> replot "c2errs" w l
gnuplot> replot "cuerrs" w l
- Man page now mentions -edc-corr
- cdrecord/readcd/cdda2wav now support an enhanced /etc/default/cdrecord file
with an additional parameter to specify the max. transfer size for a device.
- Converted to use libcdrdeflt
- Converted to use libscgcmd
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
- Readcd is now by default installed suid root in case that the caller
of make install has root privileges
- Try to exit(excode) instead of exit(0) in case that siginificant
problems occurred.
- Prevent readcd from dumping core via raisecond("file_write_err")->abort()
in case that the target filesystem fills up.
- Added a workaround for gmake < version 3.81.
Older gmake versions evaluate dependencies in the wrong order.
- Man page corrected some problems from hyphen -> minus
- "readcd" no longer dumps core if the C2Scan function is selected from the
interactive interface.
- Fixed a problem in the man page. Some nroff versions abort under
some conditions if "Heiko Eißfeldt" is correctly written with "ß".
- The readcd man page now mentions that the -clone mode is a bad idea to copy
audio CDs.
- readcd now only send the Plextor specific SCSI commands for the -cxscan
option in case that the drive identifies as Plextor.
- Better man page with repect to dev=
- Man page reworked
- man page restructured
- cdwrite@lists.debian.org removed from man page
please use the official mailing lists for cdrecord that exist since 10 years:
http://developer.berlios.de/mail/?group_id=5
- Added a workaround for a broken ASPI that hangs with
odd transfer counts.
Scgcheck:
- Fixed DMA overrun test. BeOS/Zeta did pass the test but
scgcheck did complain before.
- Changed from GPL to CDDL
- Using js_*printf() instead of *printf() via -DSCHILY_PRINT
- Fixed a typo in the -version output
- Make clear that "scgcheck" has been written to verify the interface
for libscg. The name "scgcheck" cannot be used if the code has been
changed.
- New option -auto for fully automated tests
- Restructured for better results
- Converted to use libcdrdeflt
- Converted to use libscgcmd
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
- Avoid some GCC warnings
- Added a workaround for gmake < version 3.81.
Older gmake versions evaluate dependencies in the wrong order.
- Man page corrected some problems from hyphen -> minus
- Better man page with repect to dev=
- Man page reworked
- cdwrite@lists.debian.org removed from man page
please use the official mailing lists for cdrecord that exist since 10 years:
http://developer.berlios.de/mail/?group_id=5
Scgskeleton:
- Allow readcd to work correctly in -scanbus mode
Thanks to Fabian Keil for reporting.
- Explicit fine grained privileges support for Solaris.
Scgskeleton now switches off all privs that are no longer needed.
- -scanbus behavior corrected
- Changed from GPL to CDDL
- Using js_*printf() instead of *printf() via -DSCHILY_PRINT
- New merged code from the "sformat" and "cdrecord" consolidation.
- Bumped to version 1.2
- Converted to use libcdrdeflt
- Converted to use libscgcmd
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
- Added a workaround for gmake < version 3.81.
Older gmake versions evaluate dependencies in the wrong order.
- Better support for large files (using ftello()/fseeko())
- A man page was created for scgskeleton.
Btcflash:
- -scanbus behavior corrected
- man page added
- Changed from GPL to CDDL
- Using js_*printf() instead of *printf() via -DSCHILY_PRINT
- Make btcflash compile on K&R compilers (like on HP-UX)
- Workaround for new Solaris behavior for Console users if hald
is active. Give error message and abort instead of useless messages.
- Converted to use libcdrdeflt
- Converted to use libscgcmd
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
- Added a workaround for gmake < version 3.81.
Older gmake versions evaluate dependencies in the wrong order.
- Better support for large files (using ftello()/fseeko())
- Better man page with repect to dev=
- Man page reworked
- cdwrite@lists.debian.org removed from man page
please use the official mailing lists for cdrecord that exist since 10 years:
http://developer.berlios.de/mail/?group_id=5
Mkisofs (Maintained/enhanced by Jörg Schilling since 1997, originated by Eric Youngdale):
- Better error messages with wrong Eltorito boot options
- Man page is now more explicit about requirements for DVD-video
directory trees.
- Better warning text for missing Rock Ridge in multi.c
- Bugs in README.sunx86boot corrected
- Multi Volume code for reading old image now gives different
error messages on read errors and short reads.
- Diagnostic programs isodump, isoinfo, ... no longer dump core
when called with dev= parameters.
- mkisofs now detects if a file grows or shrinks while being
read by mkisofs.
- try to work around a GCC trigraph problem
- man pages for diag commands added
- Replaced GNU getopt_long() by getargs(). This has been done for
several reasons:
- Get rid of the annoying oddities/bugs of GNU getopt_long()
- Use a unique option parser for all programs from cdrtools.
- Find a way to better deal with historic badly planned
options. These problems are caused by the fact that
several options that take arguments start the same way.
With GNU getopt_long, there is no clean way to deal with
the resulting problems. getargs() allows to specify
whether an option needs to have a space between the option
name and the argument or not.
- Make the code easier to understand and to maintain.
- Segregation of option parsing and option conflict checking.
- Code size reduction.
Note that the intention is that all options still behave as documented
in the man page. If you have problems with scripts, first check whether
your usage is aligned with the the documentation or whether you did
depend from a side effect from GNU getopt_long before sending a bug
report.
- Fixed an Eltorito Boot bug that happens together with
ISO-9660:1999
- Added some patches for better VMS portability from Steven M. Schweda
sms@antinode.org
- mkisofs now includes libfind and allows to use the find(1) command line
syntax to be used.
The new -find option acts as a option separator. To the right of the
-find option, find(1) syntax is used. No other mkisofs option may
appear anymore.
Files are considered to be taken into the .ISO image in case that the
find(1) expression used on the command line yields TRUE.
In addition to the find(1) utility, libfind allows to modify the stat(2)
data for each file before it is included in the .ISO. The following
find(1) primaries are implemented for this feature:
-chmod mode/onum Modify the permissions for a file using the
chmod(1) syntax.
This primary always yields TRUE
-chown uname/uid Modify the owner for a file.
This primary always yields TRUE
-chgrp gname/gid Modify the group for a file.
This primary always yields TRUE
The command line: "mkisofs -o image.iso -R -J somedir"
may be written as: "mkisofs -o image.iso -R -J -find somedir"
to give the same results as before.
The command line:
mkisofs -o image.iso -R -J -find somedir -chmod a+r -chown root -chgrp 0
will ensure that all files will have at least read permission for all users
and set the user/group to 0.
The command line:
mkisofs -o image.iso -R -J -find somedir ( -type d -chown root ) -o -true
will change the owner of all directories to root, leaving other file
types untouched.
- removed fnmatch.c
mkisofs now uses the fnmatch() implementation from the OS if present
and the fallback version from libschily if fnmatch() is missing in the OS.
- man page extended to include a description for the -find
option.
- Added $(LIB_ACL) tp the mkisofs Makefile to allow the code from
libfind to link properly on all OS.
- Fixed several small problems with option parsing caused by the
change from GNU getopt_long to getvargs()
Thanks to Ä°smail Dönmez & scdbackup@gmx.net & Sebastian Trüg
- Changed '%' option format specifier to '%0' to reflect a small
enhancement in libschily.
- Better checks and better error messages for mkisofs -dvd-video
Mkisofs now correctly checks for the existence of a directory
"VIDEO_TS" in the root directory of the media.
- mkisofs -find now allows to use -graft-points
- mkisofs -find now allows to use -path-list
- Fixed a buggy error message (a result from the option parser
rewrite, thanks to Steven M. Schweda for reporting.
- Makefile now uses $(LIB_INTL) because of gettext() in libfind
- Fixed some typos, thanks to Vitezslav Samel
- Cstyle fixes
- Abort writing in case the function xfwrite() gets called with size 0.
- isodebug now finds debug descriptor even when the medium includes a
UDF Filesystem.
- Fixed a bug that could cause mkisofs to core-dump in multi session
mode. Thanks to Fukuhara Kazuhiko <00kazuhiko@bb.excite.co.jp>
for reporting the bug.
- Implement a new "correct inode number" algorithm for zero length files.
- Implement a fingerprint that allows to check whether a ISO-9660 file
system image has been created by a new mkisofs and implements the
new "correct inode number" algorithm.
- Implementing the new Rock Ridge (rrip) protocol version 1.12 from 1994.
Mkisofs before implemented the old rrip version 1.10 from 1993.
- New option -rrip110 to disable the "new" 1994 Rock Ridge version.
This option may be needed if you know of a system that does not deal with
RRip V-1.12. Currently no such system is known.
- Using better (more portable) values for some special "inode" numbers.
- Implement correct hard link counts for directories and files with Rock Ridge
- Mkisofs cannot live without libschily anymore. For this reason, the
#ifdef USE_LIBSCHILY code has been removed.
- Better & faster hashing:
- Better hash function in hash.c for more balanced hash tree
- Number of hash root entries enhanced from 1024 to 16*1024
- Avoid string compare in find_file_hash()
- Corrected check algorithm, for non-zero-length files that are assigned
to a zero extent
- Avoid uncached entries to clash with real inode numbers.
- Print correct number of written extents in multi session mode.
- All ISO-9660 numbers now correctly use the type UInt32_t
- Convert type of all extent number related variables to UInt32_t
- Use inode caching by default on newer Cygwin releases that use
64 bit inode numbers.
- Deep directory abortion now happens from the right place, so
mkisofs will allow files but no sub-dirs inside the last
permitted directory nesting level.
- Mkisofs will now correctly ignore deep directory nesting
in no Rock Ridge mode with mkisofs -find
- mkisofs -find dir will now correctly deal with Rock Ridge deep
directory relocation.
- Some small compile problems on Cygwin (caused by a unsigned int
vs. UInt32_t clash) have been fixed. Thanks to Uwe Büdel for reporting.
- Symlinks now work in mkisofs -find mode too.
- ".." directory in rr_moved now gets the correct mode
- graft dirs now work even if they cause Rock Ridge deep
directory relocation.
- Print "correct inode" info on stderr in order to avoid problems
from mkisofs | cdrecord in multi session mode. Thanks to a report
from Oliver Valencia.
- Hide /rr_moved by default.
- Do not count /rr_moved for the link count of /
- Trying to support FreeBSD Kernel under non-FreeBSD (GNU) userland
- Now correctly default to "mac-roman" coding with Apple HFS.
- Trying to better handle overlapping directory names.
Thanks to a hint from Thomas Flock
- New options -posix-H/-posix-L/-posix-P implement the -H/-L/-P options
defined by POSIX.1-2001 for descending commands like ls/chmod/chown/find/pax/...
Future versions of mkisofs will implement these options under their original
names -H/-L/-P. The current version of mkisofs cannot implement them as
previous versions did implement different functionality with -H and -P.
- mkisofs called without any parameters or called with an illegal option
now prints a short overview of the most important options in 80x24 chars.
- The option -stream-file-name has been implemented to allow
setting a user defined file name with -stream-media-size
When using -stream-file-name, mkisofs always uses "-iso-level 4"
- A bug has been fixed, that caused mkisofs to archive a wrong
time zone offset in case that it was used on a timezone east
to GMT and the local time was already in e.g. Y-2007 while
GMT was still at Y-2006.
- Several printf format changes from %d -> %u to reflect the changes
that recently made the blocknumber related variables unsigned.
- Some small typo corrections in the man page
- getnum()/getllnum() & gettnum()/getlltnum() have been moved to libschily
- Using js_*printf() instead of *printf() via -DSCHILY_PRINT
- added a better error message from Helios in volume.c
- mkisofs -J no longer implies -l as done incorrectly after
converting from GNU getopt_long() to getargs()
- "make install" now also installs the READMEs and other documentation to
..../share/doc/mkisofs/
- The change from libunls to libsiconv fixes a lot of bugs in the
character translation tables. libsiconv now uses the official tables
from Unicode.org. Any other "single char" -> UNICODE table from
Unicode.org may be taken unmodified and copied to /opt/schily/lib/libsiconv
to become usable by libsiconv.
If you use the same character set names as with old mkisofs, you get
the character translations from the tables in /opt/schily/lib/libsiconv,
if you use ICONV based locale names and iconv() is available on your
platform, then mkisofs used iconv() to translate the character encodings.
If you like to force to use the iconv() code, use something like:
mkisofs -input-charset iconv:8859-1
****** IMPORTANT ********
You need to install the table files from libsiconv to make mkisofs
behave correctly.
- Thanks to the new libsiconv, mkisofs now supports to run in a UTF-8 locale.
As long as no automatic locale support is present, call
mkisofs -input-charset UTF-8
- Completed the Symlink implementation for UDF. The code was 20% ready
from Helios.de from the includes from the Helios variant of mkisofs.
- New option -no-udfsymlinks to turn off support for UDF symlinks.
The UDF standards requires any OS to implement symlink support, but
you never know...
- New option -UDF implements non-anonymous UDF support.
The relation between -UDF vs. -udf is the same as with -R vs. -r
- Integrated a larger code drop from Helios.de, thanks to Helmut Tschemernjak
from helios.de. We did integrate the following new features from Helios.de:
- Support for UID/GID in the UDF file meta data
- Support for permissions in the UDF file meta data
- Support for Mac OS X "/..namedfork/rsrc"
- Avoid Mac OS X syslog entries when "/rsrc" is used.
- Support for UDF based Mac OS extensions (type/creator and
resource forks).
- New option -no-hfs allows to turn off creating a ISO9660/HFS hybrid
when UDF based Mac OS extensions are used.
- Do not cache resorce fork files in the inode cache anymore.
We did not include the following code from the Helios.de code drop:
- Helios UNICODE unification (always tries to create "complete"
characters if e.g. a 'ö' is written as 'o'+'"', this is translated
into a 'ö'.
The reason for not integrating this code is that it did violate
constraints from mkisofs. The translation was done based on UTF-8
regardless of the current locale of the user. It could only work
in a UTF-8 based locale but mkisofs did not yet support UTF-8 an
based locale. The correct implementation would be in most cases
based on UCS-2 characters as used by Joliet and UDF.
- Helios code that did prevent mkisofs to abort on certain kind of
read errors.
The reason for not integrating this code is that it did not work
as expected for all possible cases and that such code should use
a similar mechanism as "star"s error control feature.
- The Helios option -nolimit-pathtables has not been included as the
implementation did cause the PATH table to contain random data in
case that a PATH table overflow was allowed.
- The Helios code drop did modify the libfind callback function to
implement Mac OS extensions. This is not correct as all the Mac OS
related stuff should already in the functions that are called
by the unmodified libfind callback.
Another problem with this code is that it would introduce an
otherwise non-existent path length limitation with "mkisofs -find "
- Helios did remove the artificial limit for UDF files > 2 GB.
This is currently not done for consistency between ISO-9660 and
UDF. Mkisofs will implement multi-extent files soon and then
the UDF file size limitation will be removed.
- Avoid a core dump with mkisofs -new-dir-mode XXXX caused by a bad
getargs() option format string. Thanks to Thomas Flock
for reporting.
- Some small typo fixes in the man page
- Fix mkisofs to no longer dump core in case that a non-existing locale
is used. Thanks to Dirk Paehl for reporting.
- mkisofs now warns in case that /opt/schily/libsiconv/ is missing
or not populated.
- mkisofs no longer requires the Mac OS extension related locale
translations to be present in case that no Mac extensions are requested.
- diag/isoinfo also has been fixed to correctly use iconv.
Thanks to Kai Raphahn for reporting.
- mkisofs now sets up -input-charset to the locale read from the
environment in case that no -input-charset has been specified.
To disable this automatic set up, use -input-charset "".
- more than 65535 parent directories. Note that this makes the filesystem
violating ISO9660 and the filesystem will not be usable on DOS.
- New option errctl=name or errctl=control-spec similar as in star.
This option allows e.g. to tell mkisofs not to abort if a file
did grow or shrink while mkisofs was reading it.
Currently only OPEN, READ, GROW, SHRINK are implemented more to come
later...
- mkisofs now includes a copyright message and a year number
with the -version output.
- New option -no-limit-pathtables allows to create filesystems with
more than 65535 parent directories. Note that this makes the filesystem
violating ISO9660 and the filesystem will not be usable on DOS.
- Support for ISO-9660 multi extent files added, thanks to
Frederick Bruckman for sending some experimental sample code
that helped to find the right ideas for a final implementation.
This allows mkisofs to support files > 4 GB.
- If you only use ISO-9660 (that may include Rock Ridge) or Joliet,
mkisofs is able to support single files up to a size of 8 TB.
- If UDF is included, files > 190 GB will not appear in the UDF
file tree.
IMPORTANT: You need to specify mkisofs -iso-level 3 or
mkisofs -iso-level 4 to allow mkisofs to archive
files > 4 GB. Also note that if you specify -hfs,
mkisofs will not archive fiiles larger than 2 GB.
NOTE:
Linux currently does not allow to read the complete content of
multi-extent files and will return EIO at some offset.
Solaris currently does not allow you to read multi-extent files at all.
It will return EINVAL and print a kernel message
- New options -hide-udf and -hide-udf-list allow to selectively exclude
files from the UDF tree. Note that mkisofs currently still binds the
UDF tree to the Joliet tree. All files that have been excluded from
the Joliet tree currently are also excluded from the UDF tree.
- Always hide the Trans table (from mkisofs -T) files from the UDF tree.
- Avoid warnings when compiling tree.c with some compilers.
- Do no longer warn about violating ISO-9660 if -iso-level 4 has been specified.
- Fixed a double free problem caused by multi-extent files
- New function e_strdup() checks return code from strdup() for all calls.
- Makefile changes from $(LIB_ACL) to $(LIB_ACL_TEST) as mkisofs only tests
for ACLs on files.
- Make apple_driver.c compile again. Thanks to a hint from Dieter Jurzitza.
- Avoid a core dump in the joliet code caused by the new Apple UDF extensions.
- Avoid a core dump in the Apple code caused by the new Apple UDF extensions.
- Write the warning:
Warning: cannot support large files with -hfs
only if -iso-level 3 or higher has been selected.
- isoinfo now allows to check the contents of the Joliet Volume descriptor
by calling:
isoinfo -dJ
- mkisofs bug fix for multi extent files, make UDF part from multi extent
files working again. Thanks to a hint from
Pav Lucistnik
- Fixed a typo "unides" -> "inodes"
- Mkisofs now gives better warning for files > 4 GB in hope it
will no direct people to read the documentation.
- superfluous definition for memmove() on memmove()-less platforms removed
- Some code in main() has been reordered to allow mkisofs to recognize that
the installation at /opt/schily/lib/siconv is missing even if the --ethershare
option has ben used. Before, mkisofs did dump core in this case, now it
mentions to install libsiconv.
- mkisofs now prints more explicit error messages if the strings (like
e.g. the volume name) inside the PVD do not fit. This should help
people that use e.g. UTF-8 based locales and don't understand
that the strings may use up more octett space than the number of
characters in the string.
- mkisofs now supports to import multi-extent files (> 4 GB) from old
sessions.
- Fixed a bug in the graft -root code from Patrik Ohly thanks to
Ben Korvemaker FreeBSD for reporting.
- Added a workaround for some Linux filesystems that do not deliver "." and ".."
first with readdir()
- Fixed -x pattern not to exclude "." and ".." also
- Always "." and ".." first to the dir content.
NOTE that all these problems have not been present with "mkisofs .. -find "
- Try to avoid inconsistencies with USE_ARGEFILES with multi-extent files
- Corrected the iso directory record size computation in stream-file mode
- Mkisofs no longer tries to write 8 TB of data in case that -stream-media-size
was too small.
- Mkisofs now correctly limits filenames with non-ISO-8859-1 characters
to 127 chars max.
- Mkisofs now correctly sets the permissions for "invented" unreal
directories in UDF instead of using mode 000.
- Mkisofs now correctly mixes multi-extent-File directory entries from
old sessions made by mkisofs. This is only related to multi-session
with files >= 4 GB.
- isoinfo now extracts files using 10 sectors at a time to speed up
operation
- First step of changes intended to allow to remove Mac OS 9 "hfs" support
from mkisofs. Mac OS X supports UDF extensions and "hfs" does not support
large files. For this reason, "hfs" support is an anachronism.
- mkisofs -UDF now does not longer replace controlchars in case that -J has not
been specified at the same time. This is a workaround for the fact that
mkisofs still shares the file name management code between UDF and Joliet.
- Converted to use libcdrdeflt
- Converted to use libscgcmd
- Workaround for a GCC warning with make DEFAULTSDIR=DEFAULTS_ENG
warning: 'sccsid' defined but not used added
- Raising PATH_MAX to be at least 1024 for all platforms as Cygwin
defines PATH_MAX to 260 which is too small for Cygwin.
- Implemented a better error message in case that the boot image
could not be found inside the target tree.
- A description for the -s/-sector option was added to the man page.
This option is used to allow to create conforming multi-session
images for e.g. the Kodak Photo CD or the Kodak Picture CD.
- A description forr the -XA and -xa option was added to the man page.
- Mkisofs now writes a better error message in case that it cannot
sort a directory because more than on directory content was merged
into the ISO image.
- isoinfo -d now prints the checksum for the Eltorito validation header
- Some casts have been added to increase the 64 bit compilation support
- mkisofs and the tools isodump, isovfy and isoinfo now completely
support the SUSP termination signature "ST".
- Do no longer flag the absence of a "RR" signature as an error in
isodump, isovfy and isoinfo as newer Rock Ridge standard versions removed RR.
- Fixed a minor problem with a debug print output and 64 bit compile mode.
- Avoid some GCC warnings
- Minor typo fix in the mkisofs man page
- Mkisofs now reports "Haiku" for the OS platform if on Haiku.
- The isoinfo man page now includes the -debug option
- Automated support for System ID
Haiku, Syllable, AMIGA-OS, ATARI-MiNT
- Fixed some Rock Ridge bugs that have been identified when investigating
in the OpenSolaris bug 6807009
http://defect.opensolaris.org/bz/show_bug.cgi?id=5385
- Man page description for -abstract -biblio -copyright is now better
to understand
- Better error messages in case that a specific charset translation is not
available.
- Now using HAVE_ICONV_CONST to avoid iconv() related compiler warnings
- libschily/checkerr.c (used by mkisofs) now correctly handles the "WARN" directive.
- Fixed a typo bug in the mkisofs man page that caused the two synopsis lines
to appear as one line when using GNU troff.
- isoinfo now prints "???" in case that an illegal month is in a ISO-9660
filesystem.
- Fixed a potential malloc problem in mkisofs
- Avoid signed chars ad parameter to toupper
- mkisofs man page reworked
- isoinfo man page reworked
- New file mkisofs/rock.h
- isodump now prints more information about Rock Ridge attributes to
help debugging non-compliant Rock Ridge ISO images.
- isoinfo now correctly identifies ISO images made with the Mac OS X
program "hdiutil" by e.g. calling:
hdiutil makehybrid -iso -hfs -verbose -o xxx.iso some_dir
As filesystems that violate the Rock Ridge standard.
Check e.g. by "isoinfo -i xxx.iso -d"
Interpreting Rock Ridge on such images can be enforced by calling:
"isoinfo -i xxx.iso -lR -debug"
- mkisofs now ignores the broken Rock Ridge attributes that have been
created by the Mac OS X program "hdiutil".
- Make "isovfy" CD-ROM-XA aware
- Make "isodump" CD-ROM-XA aware
- "isoinfo" now supports iconv() based locales for Joliet.
- Various Cstyle changes
- Fixed a bug with file descriptor handling in mkisofs/apple.c
- The man page for mkisofs was enhanced in order to better mention
that mkisofs always writes ISO-9660 and that other file systems are
thus always added as a hybrid file system.
- cdwrite@lists.debian.org removed from man page
please use the official mailing lists for cdrecord that exist since 10 years:
http://developer.berlios.de/mail/?group_id=5
- Do no longer archive the output file if it is part of the archives directory
tree.
- New option -data-change-warn allows to prevent mkisofs from aborting when
a file changes size.
-data-change-warn is implemented via errctl="WARN|GROW|SHRINK *"
- Print a hint to the option -data-change-warn if a shrunk/grown file is detected.
- Print a hint to the option -no-limit-pathtables in case that there are more
than 65535 parent directories in the target filesystem.
- Print hints on using -joliet-long or on avoiding -J in case that there are
file names that do not fit into 64 chars.
HELIOS TODO:
- Add the HELIOS UNICODE mapping code. This needs to be done
at UCS-2 level for Joliet and UDF (instead of UTF-8) and only
for Rock Ridge (in case of a UTF-8 based target locale) using
UTF-8 based translations.
- Make the Apple extensions work again with "mkisofs -find"
TODO:
- Support correct inode numbers for UDF hardlinks
- Support sockets, pipes, char/blk-dev specials with UDF
- 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/ ...
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