New features with AN-2011-11-09: 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. ***** - libschily::comerr() now maps exit codes that would fold to '0' to EX_CLASH which is -64 - libschily::gettimeofday() now maps to time() in case that there is neither a system gettimeofday() nor GetSystemTimeAsFileTime() - libschily/mkgmtime.c is now faster then previous release. Make it also correct when tm_month < 0 or > 11. - libschily now includes strstr() and wcsstr() for platforms where it is missing. - New files libschily/mkdirs.c and libschily/resolvepath.c - libschily::abspath() is now based on resolvepath() and thus more correct in case symlinks are part of the path. - New libschily::fgetaline() and libschily::getaline() implement the functionality of the POSIX violating "getline()" from POSIX.1-2008. - libfind/walk.c now uses POSIX.1-2008 O_SEARCH to open directories. - include/schily/sigset.h added new macros: blocked_sigs(), block_sigs() - patch(1) now avoids to exit(0) in case that the number of failures is dividable by 256. - patch(1) now also installs as /usr/ccs/bin/sccspatch - patch(1) now uses mkdirs() from libschily instead of an own implementation. - Some cleanup in bsh/alloc.c - readcd(1): Better algorithm for -edc-corr - cdrecord man page corrected some small typos in the EXAMPLES section. - star/longnames.c adds more workarounds against wrong buffer overflow aborts from gcc. - star/extract.c now uses access(name, F_OK) instead of access(name, 0) - The SCCS val program no longer limits command line args to 50 files - SCCS val now includes a new option -h to check SID specific checksums from SCCS v6 - SCCS sccscvt new program to convert between SCCS v4 and SCCS v6 history file format. - SCCS sccslog now understands the enhanced time format from the SCCS v6 history file format. - The "sccs" command now also supports "sccs cvt" for the command "sccscvt" - The SEE ALSO section of most man pages has been reworked - SCCS admin now computes a checksum for the file content when called as admin -ifile s.file. - SCCS admin now prints full path names in warnings when a file does not end in a newline or includes a line that starts qith ^A in V6 mode. - A POSIX compliance bug that also caused a deviation from all known SCCS documentation ever published for prs(1) has been fixed: prs -d:DI: s.file Now prints again "//" in the standard case. The related bug most likely has been introduced by AT&T around 1984 by replacing: printf("%s",iline); putchar('/'); printf("%s",xline); putchar('/'); printf("%s",gline); with: printf("%s",iline); if (length(xline)) printf("/%s",xline); if (length(gline)) printf("/%s",gline); The related bug has been discussed in the POSIX standard committee and the decision was to require the documented old behavior. - The automated testing scripts related to the bug mentioned above have been fixed to require/accept the correct POSIX compliant behavior. Note that SCCS fom Sun/Orcale as found on Solaris as well as GNU CSSC will no longer pass the tests. - SCCS delta no longer reads the new file two times before adding the delta. - SCCS delta is now more correct when checking whether a file includes SCCS keywords to expand. - SCCS delta now computes a checksum for the new SID specific content of the file. - New SCCS SID specific history file extension "^AS ..." - New error code "co27" allows to distinguish a general chescksum error from a SID specific checksum error. - SCCS prs -d supports :SX: to print SID specific history file extension - SCCS prt now prints SID specific history file extensions - SCCS val now does not print a format error message when SID specific history file extensions are seen in a SCCS v6 history file - libcomobj/date_ab.c now uses a specialized and speed up version of gN() for date_ab(). - libcomobj/getline.c now uses a completely new algorithm to compute the checksum with better performance. - libcomobj/putline.c now tries to avoid to compute the checksum when in copy mode. - libcomobj/sidext_ab.c and libcomobj/sidext_ba.c new files to deal with SID specific extensions. - libcomobj/dometa.c and libcomobj/putmeta.c new files to deal with SCCS v6 extensions (such as preparing to permit file renames). - mpwlib::fixpath() now contains a warning against the limited features. - mpwlib::efatal() new function printf errno information in addition - mpwlib/sethome.c new file with code to discover the project set home directory. - mpwlib/urandom.c new file with code that creates meta data to be used in order to allow file renames. SCCS-5.05 is now 20% faster than SCCS-5.03. SCCS-5.05 is 2.5x faster than Sun SCCS and consumes 4.7x less CPU time than Sun SCCS. SCCS-5.05 is 6x faster than RCS-5.8 and consumes 7x less CPU time than RCS-5.8. For RCS files > 256 kB, add factor of 2x to CPU times when you use RCS-5.8. - SCCS help now includes one line help for all options - The SCCS sccsfile.4 man page now mentions the new SID specific checksum. - The SCCS rmdel command now implements a new option -d to fully discard the delta that is going to be removed. By default, the file delta is removed but the related meta data from the delta is kept in the delta table. - The SCCS convert program (sccs cvt) now correctly removes the SID specific extensions (like SID specific checksums) from the history file if called with "-V4 -d". - SCCS help now gives a better message when calling "sccs help" with no parameters - SCCS help now includes one line help for all options for all SCCS commands - The SCCS help command now gives an sccs command overview if you call: "sccs help" and enter an empty line (hit RETURN) when it asks: "Enter the message number or SCCS command name:" - New program "rcs2sccs" to convert RCS history files into SCCS history files. This program has been originally written by someone called "kenc". It was enhanced for robustness, to support dates past 1999 and it now supports binary files also. - New SCCS subcommand "istext" allows to check whether a file may be archived as pure text file or whether encoding is needed. - The SCCS convert program (sccs cvt) now correctly converts time stamps from different timezones. For converting RCS timestamps (in GMT format) that have been converted into SCCS via the script "rcs2sccs" and that still are relative to GMT call the following: sccs rcs2sccs TZ=GMT sccs cvt -V6 SCCS sccs cvt -V4 -d SCCS This results in SCCS v4 history files, that are in local time. - The first command converts all RCS history files into a SCCS v4 history file under the assumption that local time is GMT - The second command converts all SCCS v4 history files in SCCS/ into SCCS v6 history file - SCCS sact now supports a -s option to suppress the error meesage in case a file is not under SCCS control. - The command "sccs fix" now supports to forward the -d option to the SCCS rmdel command. - The command "sccs unedit" now supports a -o option to get the unedited file under the timestamp that is the timestamp of the delta. - A new command "sccs editor" was implemented to allow to automatically call "sccs edit" from a hook when calling the preferred editor. This permits to edit SCCS controlled files in an apparent transparent way. If your preferred editor is "ved", call: SCCS_EDITOR=ved export SCCS_EDITOR alias ved='sccs editor' Then call: ved file - Mention the -C option in the manpages for get(1) and delta(1) - SCCS admin now supports to automatically rename the original file to ,file (as with "sccs create") when doing bulk enters via admin -N - The SCCS admin command now always uses resolvepath() as there now is a portable user space implementaion in libschily and we no longer depend on the availability of the Solaris syscall resolvepath(). This new version of SCCS implements new fundamental basic features and meta data that is needed in order to implement changesets. The new SCCS v6 specific metadata tags "urandom" and "path" allow futute SCCS versions to deal with renames and with removing of files. To check the new feature: - create a .sccs directory in the project set home directory. - In a directory below call admin -V6 s.xx - Check the content for s.xx - The CSW packaging definitions in the schily makefilesystem was enhanced to permit referencing files in the package definition directory - The SCCS delta command now correctly locks the s.file _before_ opening it and thus prevents that the s.file may be replaced in a way that results in a possible lost delta. - A previous limitation in SCCS vc(1) to a length of max 9 characters for keywords has been removed. - A previous limitation in SCCS vc(1) to max 40 keywords has been removed. - A previous limitation in SCCS vc(1) to a line length of max 1024 characters has been removed. - The central library function auxf() that computes derived file names from a s.filename has been rewritten to become safe against buffer overflows. - The handling of programmer names in the delta table has been made safe against buffer overflows. - The SCCS help text for error "co2" now also mentions the SCCS v6 file header - The SCCS default help no longer gives a complete "sccs" subcommand list but a subcommand overview. - The SCCS sccsfile man page now mentions the undocumented "z" flag in the s.file. - The libraries comobj/cassi/mpwlib have been restructured to allow shared libaries on Mac OS X with it's limited dynamic linker. - In future, these libraries will be pooled to a single "libsccs" in order to work around the problems from the Mac OS dynamic linker that is unable to support full C semantics and thus does not support to link a library against calling entities. - Shared variable definitions have been moved from the programs to the libs as the Mac OS dynamic linker is unable to link program variable to be usable from a dynamic library. - s. file specific shared variables have been moved to struct packet whereever possible. - s. file specific shared variables have been moved into struct packet to make the library reentrant. - The global "clean up" callback function for fatal() that is used with global context is installed via set_clean_up(function). - Callback functions that are used with s. file specific context are now function pointers in struct packet. The pooling of libcomobj, libcassi and libmpw to a new library "libsccs" will be delayed to the time when the library interface is stable enough for SCCS v6. After that time, libsccs can be made a dynamic library. The Mac OS X static linker is too silly to link in .o files from static libs if only a variable is referenced. The elegant workaround for this bug (using common variables) triggers a different bug in the dynamic linker from Mac OS that is unable to link common variables. This forces us to introduce funcs that need to be called from central places to enforce to link in the vars. - The function libcassi::error() was renamed to cmrerror() in order to avoid a name conflict with the older error() function from libschily. - For operating systems with no mem*() functions, these functions are now mapped to *bytes() functions from libschily. - libschily::gettimeofday() now maps to time() in case that there is neither a system gettimeofday() nor GetSystemTimeAsFileTime() - libschily now includes an emulation for openat(). - include/schily/fcntl.h now includes O_SEARCH for POSIX.1-2008 compliance. 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.