cdrtools/AN-3.02a09
2025-06-15 04:19:58 +08:00

515 lines
17 KiB
Plaintext
Raw Permalink Blame History

***************** Important news ******************************
For the 'Slottable Source Plugin Module' SSPM Features read README.SSPM
***************** Please Test *********************************
NEW features of cdrtools-3.02a09:
This is the first localization step for cdrtools. All programs now (hopefully)
call gettext() for all strings that need localization.
- The next step will include dgettext() calls for the libraries.
- The following step will include the extracted strings
- The last step will include German translations and install support
for the resulting binary message object files.
----------> Please test and report compilation problems! <---------
***** NOTE: As mentioned since 2004, frontends to cdrtools should *****
***** call all programs from cdrtools in the "C" locale *****
***** by e.g. calling: LC_ALL=C cdrecord .... *****
***** unless these frontends support localized strings *****
***** used by the cdrtools with NLS support. *****
This version compiles on Win-DOS using the Microsoft compiler cl.exe but
warning: due to missing POSIX compliance with basic features (e.g. stat()
does not return inode numbers), there are many problems with the resulting
code and thus it is recommended to better use a POSIX layer on top of
WIN-DOS.
*** WARNING ***
*** Need new smake ***
*** Due to the fact that schily-2014-04-03 introduced to use new macro
*** expansions and a related bug fix in smake, you need a new smake
*** to compile this source. To ensure this, get a recent "schily"
*** tarball from http://sourceforge.net/projects/schilytools/files/
*** and call:
cd ./psmake
./MAKE-all
cd ..
psmake/smake
psmake/smake install
The new smake version mentioned above is smake-1.2.4.
Note that smake-1.2.5 exists and is preferrable.
Now you have a new smake that is able to compile this source.
Note that the major makefile restructuring introduced in
schily-2014-04-03 is now more than one month ago and thus seems
to work without problems.
WARNING: the new version of the isoinfo program makes use of the
*at() series of functions that have been introduced by Sun
in August 2001 and added to POSIX.1-2008. For older platforms,
libschily now includes emulations for these functions but
these emulations have not yet been tested thoroughly.
Please report problems!
All:
- RULES/cc-*.rul: The compiler files without C++ support no longer
have a tab after $(NUMBER_SIGN) as this prevents the intended use case.
- RULES/9000-725-hp-ux-gcc.rul and RULES/cc-hp.rul now support creating
shared libraries by using "ld -b" instead of using the compiler to
link.
- RULES/*haiku-*.rul The rules for shared libraries now work
Thanks to a report from Heiko Ei<45>feldt
- RULES/cc-*.rul: added a LIB_C=-lc to prepare compilation on Haiku
- RULES/bepc-haiku-cc.rul and RULES/bepc-haiku-gcc.rul: Added LIB_C=
to clean the name of libc on Haiku that does not have libc.
We need to link all shared libraries against -lc in case they use
system interfaces but are not allowed to do the same on Haiku.
Thanks to a report from Heiko Ei<45>feldt
- Schily Makefilesystem: Use the correct rules to create shared libraries
on Cygwin. Before this release, shared libraries with Cygwin have not
been tested and the old rules have been guessed.
- RULES/rules.ins: fixed a typo in the symlink install rule
- RULES/rules.top: we now clear the macro COMPILE.cc= from SunPro make
as well, in order to get our definition from the Schily Makefilesystem.
Before, when using SunPro Make, C++ code was compiled without enabling
the optimizer, as the SunPro Make default rule definition was used.
- RULES/: Since SunPro Make from Schilytools now supports multiple
includes with a single include directive, we added a new configuration
for a SunPro Make that itself identifies now as "sunpro" via MAKE_NAME.
- DEFAULTS/Defaults.cygwin*: We no longer read the Microsoft configuration
for cl.exe except when the makeprogram in use is "smake". This is needed
as neither GNU make nor SunPro make support spaces in filenames and
SunPro make aborts in case ".NO_WARN: :=" from DEFAULTS/vc7-cygwin-setup
is seen.
Thanks to Heiko Ei<45>feldt for reporting
- autoconf: now checks for the existence of "tsort" and "lorder"
in order to help to compile on the new platform "aarch64" for Solaris.
This platform is currently still missing many of the ELF tools and
thus "lorder"
- Schily Makefilesystem: Changed $(MAKE) -> "$(MAKE)"
Thanks to Heiko Ei<45>feldt for reporting
- Schily Makefilesystem: added a new target "uninstall" that removes
all non-directory type files that previously may have been installed via
the "install" target.
Thanks to a report from Michael Siegel
- Schily Makefilesystem: RULES/rules.loc and RULES/rules.man have been
made safe against a parallel make program like SunPro Make.
Thanks to a report from Heiko Ei<45>feldt
- The Schily Makefilesystem now uses .PHONY again (and no longer "FRC")
unless the make program was identified as an old unfixed "SunPro Make"
from Sun or Oracle.
- README.compile now better explains that CCOM= does not just set the
C-compiler but the compiler family that includes a C++ compiler.
- New include file include/schily/strar.h
- include/schily/device.h: XDEV_T is now Ullong. This file was forgotten
to distribute with schilytools-2017-10-10. The change is however needed
for a bugfix in "star".
- include/schily/archdefs.h: With Sun Studio-12.4 on Oracle Solaris-11.2,
we had a problem with __SUNPRO_C and needed to change it to __IS_SUNPRO_C
Thanks to Jens Elkner for reporting.
- include/schily/maxpath.h now supports MAXNAMELEN to help with SunPro Make
- include/schily/unistd.h extern char **environ is now in the
cplusplus guard
- include/schily/libport.h no longer uses a formal parameter named "new" in
order to avoid problems with C++
- configure: Added tests for isblank() and iswblank() that have not
been available in historix UNIX.
- autoconf/config.sub now groks ppc64 on Linux.
- autoconf: new tests for ar.h and rpc/rpc.h
- autoconf: new test for semaphore.h
- autoconf now checks for "libelf" and "libelf.h". This is needed for
libmakestate that is part of SunPro Make. Libmakestate is based on the
standard libelf that is not part of all platforms.
- autoconf now first checks whether the pthread*() functions are in libc
before checking for -lpthread. This helps to avoid to link against
libpthread on Solaris.
- autoconf/config.sub now knows the architecture "aarch64". This
helps to deal with Solaris and Linux on the Raspberry Pi3 and the
Odroid C2.
- autoconf/config.guess now knows the architecture "aarch64" for Solaris.
This helps to deal with Solaris on the Raspberry Pi3 and the Odroid C2.
- autoconf: now checks for the existence of "tsort" and "lorder"
in order to help to compile on the new platform "aarch64" for Solaris.
This platform is currently still missing many of the ELF tools and
thus "lorder"
- RULES/MKLINKS: New links for RULES/aarch64-sunos5-gcc*.rul and
RULES/aarch64-sunos5-clang*.rul have been added.
- RULES/rules.ins: before installing symlinks or hardlinks, the
directory the links are in is made.
- RULES: Added a new method that allows to skip building C++ based code
in case we are on a platform that does not support a C++ compiler.
This is needed for SunPro Make that was written on C++.
Note that if you are e.g. on SunOS-4.x where the system does not include
a C++ compiler, compiling with CCOM=cc will skip SunPro Make, but
using CCOM=gcc on the same platform will compile SunPro Make.
- DEFAULTS_CSW/Defaults.sunos5 now uses the same enhanced optiomization
for C++ as used for C. This helps to compile the new SunPro Make
sources.
- README.compile: The documentation for using the Address Sanitizer was
enhanced.
- README.compile now better explains that CCOM= does not just set the
C-compiler but the compiler family that includes a C++ compiler.
- configure: The tests for -lsocket and for -lnsl/-lnetwork
have been better separated to correctly recognize -lnetwork
on Haiku.
Thanks to a report from Heiko Ei<45>feldt
- configure: the vfork() test has been enhanced to check whether
a modification in the data segment of the child affects the
parent as well. This feature is used (needed) by the Bourne Shell
to signal a ENOEXEC case for shell scripts to the parent and in
general to report the reason for a failed execve() call back
to the parent.
Note that vfork() in Haiku does not share data and thus canot
be used by the Bourne Shell.
- configure: a new test AC_STAT_FILES has been written to replace
AC_CHECK_FILES. AC_CHECK_FILES does not work on Haiku due to
a bug in "bash" that makes "test -r /dev/stdin" to report an exit
code of 0 even though the file /dev/stdin does not exist.
- conf/oarch.sh: Fixed a typo that caused oarch to output e.g.
i686-cygwin_nt-5.1-cc
instead of
i686-cygwin32_nt-cc
Thanks to Heiko Ei<45>feldt for reporting
- inc/avoffset.c: added a workaround for a clang bug with FreeBSD on ARM64.
clang creates incorrect code for a while loop that results in an endless
loop. The last line in that while loop is never executed. It turned
out that adding
read(-1, "", 0);
at the beginning of the while loop works around the clang bug.
Thanks to Robert Clausecker for reporting.
- inc/avoffset.c: added a workaround for a problem with clang that causes
the function stack_direction() to be inlined even though this was never
requested.
Libschily:
- libschily::getargs.c: Added a new flag that allows to implement POSIX
option rule #5:
One or more options without option-arguments, followed by
at most one option that takes an option-argument, should be
accepted when grouped behind one '-' delimiter.
This new mode is needed to implement spax with a POSIX compliant CLI.
- libschily: The environment "COMERR_EXCODE" now directs the comerr()
group of functions not to map exit codes to -64 in case they are
ambiguous to callers of the historic wait() call.
If you like to get the unmodified exit code, use the "new" (since 1989)
POSIX waitid() call and add the "COMERR_EXCODE" before creating
the child process.
- libschily: Addd a implementation for the functions:
wctype() and iswctype() to allow porting to older platforms.
- libschily: New pattern matcher functions
patmbmatch() and patmblmatch()
support multi byte strings with a wchar_t * pattern. The pattern is
a wide char string for performance reasons.
- libschily::match.c Added support for '[:alpha:]' and similar.
This is needed to make patmatch() POSIX compliant.
We still miss support for '[=char=]' and '[.char.]'.
- libschily: added a missing null-byte to the filename in the
opendir() emulation for Win-DOS.
Thanks to Colin Finck colin@reactos.org for reporting
- libschily: The movebytes() man page now mentions other *bytes()
functions.
- libschily: cmpbytes() new man page
- libschily::fnmatch.c The code was rewritten to avoid recursion
using the recent code from FreeBSD.
- libschily::fnmatch.c The behavior with a pattern that ends in
a single escape character ('\') was modified to match the
current POSIX text and the implementation from Sun/IBM/HP, see
http://austingroupbugs.net/view.php?id=806
- libschily::fnmatch.c Added support for '[:alpha:]' and similar.
This is needed to make fnmatch() POSIX compliant.
We still miss support for '[=char=]' and '[.char.]'.
- libschily::fnmatch(): The POSIX specifiers [:upper:] and [:lower:] now
work together with FNM_CASEFOLD.
- libschily::format.c: a former "long" parameter in the format() routine
has been changed to be now "void *". This is needed as sizeof(long)
is less than sizeof(void *) on Win-DOS-64. This caused the printf()
implementation from libschily to fail on Win64.
Thanks to Colin Finck from the ReactOS team for reporting.
- libschily: format() (the printf worker) now supports the floating
point formats: 'E', 'F', 'G'.
- libschily/fstream.c: fsgetc() now allows to return more expeptional
return values from the transfer callback function. Before, only
0 and EOF have been supported, now other negative values are OK as well.
- libschily: added a va_end() call after a va_copy()
call in getargs.c
Thanks to Heiko Ei<45>feldt for reporting
Libcdrdeflt:
Libdeflt:
- libdefault: Avoid a possible double fclose() call.
Thanks to Heiko Ei<45>feldt for reporting
Libedc (Optimized by J<>rg Schilling, originated by Heiko Ei<45>feldt heiko@hexco.de):
- libedc: avoid a free()less malloc() in the speedtest
program.
Thanks to Heiko Ei<45>feldt for reporting
Libfile:
- libfile: better realloc() handling in case of a failure.
Thanks to Heiko Ei<45>feldt for reporting
Libfind:
- libfind: use $(LIB_INTL) to support Cygwin when creating a shared library
- libfind: As libfind uses fnmatch(), it now supports
[[:alpha:]] with "-name" and "-path" in case the schily version of
fnmatch() is used.
Libhfs_iso:
- libhsf: removed a superfluous "*/" in DEBUG code.
Thanks to a report from Heiko Ei<45>feldt
Libmdigest:
Libparanoia (Ported/enhanced by J<>rg Schilling, originated by Monty xiphmont@mit.edu):
Libscg:
- libscg::scsi-vms.c: abort scg__open() in case that "busno"
has an illegal value. This avoids using uninitialized data
as index in an array.
Thanks to Heiko Ei<45>feldt for reporting
- libscg: scsi-wnt.c corrected the DMA size for the WIN drive type inquiry.
Libscgcmd:
Libsiconv:
Rscsi:
Cdrecord:
- cdrecord: man page now mentions the exit code
- cdrecord: updated the man page to list the names of the drives that support
the defpregap= option.
- cdrecord::subchan.c changed #ifdef sss -> #if 0 to calm down a
static code analyzer.
Thanks to Heiko Ei<45>feldt for reporting
- cdrecord: the man page now comes with an enhanced section
"EXIT STATUS"
Thanks to a report from Mathias <dl2gmb@netscape.net>
Cdda2wav (Maintained/enhanced by J<>rg Schilling, originated by Heiko Ei<45>feldt heiko@hexco.de):
- cdda2wav: a patch from Heiko Ei<45>feldt results in only trying
to read the ISRC values for the tracks that should be extracted
later.
- cdda2wav man page: The man page now mentions that c2check should always be
used with "proof" in case the drive supports it.
- cdda2wav: The output is now unbuffered in case it has been redirected using
the out-fd=# option.
Thanks to a report from Mathias <dl2gmb@netscape.net>
- Cdda2wav: changed the variable userverbose from "int" to "long".
This is needed as getargs() always uses a long * argument for a
function for a callback option. The result of this bug was that
"cdda2wav -vall" did set the output fd to 0 and as a result,
error messages have been printed to stdin instead of stderr.
This of course created problems with GUI frontends if the
cdda2wav binary was a 64-bit binary.
Thanks to a hint from Thomas Niederreiter <tn@xcdroast.org>
- Cdda2wav: modified the man page to make it obvious that the new cdda2wav
auto-detects whether a drive supports to read C2-error lists.
Thanks to a hint from Thomas Niederreiter <tn@xcdroast.org>
- Cdda2wav: added a workaround for a problem caused by a Linux stdio bug
that causes "stderr" to be buffered even though POSIX requires it
to be unbuffered.
Thanks to a hint from Thomas Niederreiter <tn@xcdroast.org>
Readcd:
- readcd: man page now mentions the exit code
Scgcheck:
Scgskeleton:
Btcflash:
- btcflash: added a missing (but not really needed) free()
and fclose() call.
Thanks to Heiko Ei<45>feldt for reporting
Mkisofs (Maintained/enhanced by J<>rg Schilling since 1997, originated by Eric Youngdale):
- mkisofs::apple_drive.c added a missing fclose(fp);
Thanks to Heiko Ei<45>feldt for reporting
- mkisofs::vms.c corrected a typo and now call ISO_ROUND_UP(use) instead
of ROUND_UP(use)
Thanks to Heiko Ei<45>feldt for reporting
- A better documentation for -D was added to the man page.
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:
- 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:
http://sourceforge.net/projects/cdrtools/files/alpha/ ...
NOTE: These tar archives are 100% POSIX compatible. GNU tar may get some
minor trouble. If you like a 100% POSIX compliant tar, get star from
http://sourceforge.net/projects/s-tar/files/ of from the schily-*
tarball at: http://sourceforge.net/projects/schilytools/files/
WARNING: Do not use 'winzip' to extract the tar file!
Winzip cannot extract symbolic links correctly.
Joerg