***************** 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ß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ß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ß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ß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ß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ß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ß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ßfeldt for reporting

Libcdrdeflt:

Libdeflt:

-	libdefault: Avoid a possible double fclose() call.

	Thanks to Heiko Eißfeldt for reporting

Libedc (Optimized by Jörg Schilling, originated by Heiko Eißfeldt heiko@hexco.de):

-	libedc: avoid a free()less malloc()  in the speedtest
	program.

	Thanks to Heiko Eißfeldt for reporting

Libfile:

-	libfile: better realloc() handling in case of a failure.

	Thanks to Heiko Eiß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ß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ß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ß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ßfeldt heiko@hexco.de):

-	cdda2wav: a patch from Heiko Eiß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ß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ß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ß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
