New features with AN-2011-08-10: This is the first localization step for the schily source consolidation. Many programs now (hopefully) call gettext() for all strings that need localization. - The next step will include dgettext() calls for the libraries and the missing programs - 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 the tools should ***** ***** call all programs 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. ***** - Changed the default Microsoft compiler version to VC9 Please note that the Microsoft environment violates nearly all available standards. It is a hard job to make things compile with a compiler that is more than 12 years behind IEEE standards. It is a harder job to deal with an OS environment that ignores nearly every POSIX rule. Just note that MSC returns stat.st_ino == 0 for all files with stat(). This causes POSIX compliant software to believe that all files are hardlinked together. Thanks to Johannes Hausensteiner for giving the initiation for this actual porting attempt and for doing some tests with mingw. Thanks to Frank Kanschur for giving ideas on how to implement things for Win-DOS Thanks to Alex Kopylov for writing some code for mingw and for creating a missing callback-function for the audio speaker outout from cdda2wav. - Fixed the vc9-setup files to make VC9 work. - Newer Cygwin "tail" versions do no longer support UNIX syntax. change tail +2 to tail -n +2 in RULES/cc-mcs.rul to allow to use the Microsoft compiler again - A new environment variable MKLINKS_COPY allows to tell all MKLINS scripts to generate file copies rather than symlinks. Call: MKLINKS_COPY=true export MKLINKS_COPY to enable this feature - Run an additional test -h command in MKLNKS to verify whether mingw supports symlinks - MKLINKS now creates copies instead of symlink when we use MSC as MSC does not support to read symlinks files - Fixed a typo in include/schily/libport.h (group functions have been defined to return struct passwd* instead of struct group* - Fixed wrong bracketing for C++ in include/schily/stdlib.h - Fixed wrong bracketing for C++ in include/schily/utypes.h - Added a workaround for MSC to include/schily/utypes.h MSC believes that a 32 bit int and a 32 bit long are incompatible and cannot even be casted, so we need to make uint32_t a n unsigned long - Let include/schily/archdefs.h define the standard processor #defines when compiling with MSC. - New include file include/schily/windows.h works around the oddities from the MSC include file windows.h - include/schily/stdio.h now defines popen()/pclose() to _popen()/_pclose() if on WIN-DOS - include/schily/limits.h now defines PIPE_BUF - include/schily/utsname.h now defines struct utsname for our MSC uname() emulation. - New autoconf tests for memcmp() and memccpy() - New autoconf tests for spawn*(), cwait() process.h - New autoconf tests for pipe() / _pipe() - include/schily/unistd.h now defines pipe() via _pipe() on WIN-DOS - Many rewritten autoconf tests in order to work around the oddities from MSC (cl). - New functions zerobytes() and cmpmbytes() added to libschily. - Fixed libschily/gettimeofday.c to compile with MSC - Fixed libschily/sleep.c to compile with MSC - Fixed libschily/usleep.c to be empty with MSC as sleep.c includes a working usleep() - libschily/gethostname.c enhanced to support Win-DOS with cl.exe - libschily/uname.c New function to support Win-DOS with cl.exe - libschily/dirent.c New functions: opendir()/closedir()/readdir() to support Win-DOS with cl.exe - libschily/kill.c New function to support Win-DOS with cl.exe - libschily/stdio/fgetline.c 64 bit speedup by calling fgets() in case that getc() is not a macro. - libschily/stdio/fgetstr.c 64 bit speedup by calling fgets() in case that getc() is not a macro. - libshedit/include/stdio.h now includes a workaround against a redefinition of FILE stdout, .... from wchar.h on MSC - libshedit/expand.c bsh/expand.c bsh/test.c sh/test.c now include a workaround to the fact that MSC does not allow to redefine compiler built-ins in case the optimizer is in use - libscg/scsihack.c not also uses the ASPI/SPTI code from libscg/scsi-wnt.c in case the code is compiled with MSC - Several changes in libscg to work around the problems from using an original MSC windows.h: use instead. - smake now compiles with with MSC - cdrecord/cdrecord.c now checks for HAVE_KILL as MSC does not define kill() - cdda2wav/cdda2wav.c was fixed to compile with MSC - cdda2wav/sndconfig.c was fixed to compile with MSC - bsh now only sets up signal handlers for existing signals to support MSC - change now only sets up signal handlers for existing signals to support MSC - p now only sets up signal handlers for existing signals to support MSC - patch now only sets up signal handlers for existing signals to support MSC - sccs now only sets up signal handlers for existing signals to support MSC - sdd now only sets up signal handlers for existing signals to support MSC - sformat now only sets up signal handlers for existing signals to support MSC - sh now only sets up signal handlers for existing signals to support MSC - star now only sets up signal handlers for existing signals to support MSC - star fixed a typo in dumpdates.c that hit on WIN-DOS because flock() is not present - star now checks HAVE_FSYNC to support MSC - star::findinfo.c now checks whether stat.st_blksize exists - diff now compiles with MSC (signals & S_IF* from sys/stat.h) - ved now only sets up signal handlers for existing signals to support MSC New SCCS features: - This is the first step towards the upcoming SCCS v6, as this version of SCCS starts to support features that are not understood by earlier versions of SCCS. As the SCCS v6 file format is not yet fully defined and we don't like to cdreate files by accident that are not understood by older versions, you need to set the environment variable "SCCS_VERSION" to enable the new features. - SCCS now supports to archive files as text files even when they contain lines that start with ^A. This is a SCCS Version 6 feature. If you like to use this feature now, you need to set the environment variable "SCCS_VERSION". To implement support for text lines that start with ^A, SCCS now checks for "^A^Atext" at the beginning of a line in the history file and extracts it as "^Atext". - SCCS now supports to archive files as text files even when their last line does not end in a newline character. This is a SCCS Version 6 feature. If you like to use this feature now, you need to set the environment variable "SCCS_VERSION". To implement support for text lines at the end of a file that do not end in a newline, SCCS now checks for "^ANtext" at the beginning of a line in the history file and extracts it as "text". - SCCS now supports to archive files as text files even when they do not end in a newline character. This is SCCS Version 6 feature. If you like to use this feature now, you need to set the environment variable "SCCS_VERSION". - SCCS bdiff bow is compatible to diff(1) and outputs a newline even after files that do not end in a newline - The SCCS admin man page metter mentions the POSIX aspects for the 'i' and 'l' flags in the SCCS history files. - The SCCS admin page and the sccsfile man page now have a better description for the 'j' flag (Joint Editing). - The sccsfile man page now has a complete description on how the checksum is computed - The sccs man page now mentions that only the statisctics numbers in the SCCS history files are limted in range from 00000 to 99999. Other numbers are not limited to allow an arbitrary number of deltas. - Struct "apply" was reduced in size from 3xint to 3xchar. This is important with hundreds of thousands of deltas in order to limit the SCCS memory footprint. - A bug in fmalloc.c (introduced by Sun in the past 20 years) has been fixed: fmalloc() no longer mallocs sizeof (int) (typically 4) times more memory than needed. This is important with hundreds of thousands of deltas in order to limit the SCCS memory footprint. - Copying SCCS history now gives better performance as it no longer calls a path name manipulation function for each written line in a history file. - strchr() is used instead of the local function any() to speed up things. - The zero() function was speed up with code from fillbytes.c to speed up clearing large chunks of data. - The diff program now reads bigger chunks of data and uses memcmp() to speed up operation. All speed ups indroduced in the past 6 months cause that this version of SCCS only consumes aprox. 1/3 of the CPU time from Sun SCCS. - SCCS now checks HAVE_FSYNC to support MSC Author: Joerg Schilling D-13353 Berlin Germany Email: joerg@schily.isdn.cs.tu-berlin.de, js@cs.tu-berlin.de joerg.schilling@fokus.fraunhofer.de Please mail bugs and suggestions to me.