New features with AN-2015-03-03: 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. ***** *** WARNING *** *** Need new smake *** *** Due to the fact that schily-tools 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, call: cd ./psmake ./MAKE-all cd .. psmake/smake psmake/smake install 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 thouroughly. Please report problems! The new smake version mentioned above is smake-1.2.4 - ALL: README.compile now mentions how to compile with instrumented variants of existing compilers. - SCCS admin now correctly uses error number cm13 for the text: "resolved path too long (cm13)" instead of using cm11. - SCCS admin now allows "admin -N file1 file2" without complaining: "more than one file (ad15)" - SCCS admin now incorporates the get(1) code and thus is able to run a get operation immediately after initializeing a sccs history file while in a bulk init operation. This makes a bulk init more efficient than with calling admin(1) and get(1) one after the other. - SCCS admin implements two new bulk mode flags with -N: "-" remove the original g-file after initializing the related sccs history file. "+" remove the original g-file and replace it by a file that is retrieved by a get(1) operation from the new history file. "+" can be used together with the "," flag. - SCCS admin now supports get(1) like options -k and -w. Except for the code that is needed to support sccs history files in a separate tree under $PROJECT_HOME/.sccs/ admin now implements everything that is needed to support the upcomming sccs project mode. - SCCS admin now implements an experimental piece of code to emit change set lines as documented by changeset(4). To enable this code, call smake 'COPTX=-DTEST_CHANGE'. The changeset data is written to stderr. Note that it is still mixed with other diagnostic messages. A test discovered that on a 11 year old Opteron systen, the current state of the OpenSolaris source tree (~ 52000 files ~ 560 MB of data) takes ~ 15 seconds to enter into the SCCS using the bulk mode: find . -type f > names admin -V6 -fy -N-SCCS < names This makes SCCS the fastest revision control system available. - SCCS delta -q -f s.file works again as it did in the 1980s with Sun NSE. The call "delta -q -f ..." enforces a delta even when there is no p. file. The new revision number is computed using the same algorithm as with "get -e" when no newrevision is specified. Testing is recommended with: "delta -q -f -n s.file" to keep the g-file after creating the delta. Using SCCS this way works if there are no keywords to expand. - SCCS get now uses the keyword expansion code that was moved to libcomobj. - SCCS prs needed to change name for it's local idsetup() function as libcomobj now incorporates the different code of the same name from get(1). - SCCS delta now correctly inserts the right ghash checksum in SCCSv6 history format when called as: "delta -g ...". Note that with this delta usage, the checked out file intentionally differs from the checked in file and thus the checksum cannot be computed from the edited g-file, but must be computed for the checked out g-file. - SCCS delta now dupports to provide a prepared delta file using -Ddelta-file to tell delta(1) not to call get(1)+diff(1) but to apply the delta directly from the prepared file. This will be used in project mode to insert new lines at the top of the "changeset" file in an efficient way. - SCCS sccs now calls sethome() to check for a source tree in project mode. - SCCS sccs changed code like: if (!strcmp(cmd->sccsname, "deledit") to if (strcmp(cmd->sccsname, "deledit") == 0 - SCCS sccs now gies a better error message when struct sccsprog SccsProg[] contains content that has no implementation in the function command(). - SCCS sccs now introduces the experimental commands: add add specified files on next commit commit commit changes to project repository init initialize empty project repository remove remove specified files on next commit rename rename specified files on next commit status show changed files in the project to help introducing a project oriented behavior of sccs. Currently only "add" and "init" are implemented and "status" helps no more than to time a stat(2) call over all files in the name cache. Some hints for playing: add currently does not yet support libfind and thus you need to provide it a list of plain files. As there is a a ARG_MAX limitation and as the number of files in e.g. OpenSolaris is way beyond ARG_MAX even on Solaris that supports ore than other OS, I recommend to run: find . -type f | sccs add - Note that this is very slow as it uses a sccs(1) enhancement from Sun/AT&T implemented for SVr4. Later revisions will speed up here. init initialises the directories. By default, it marks the tree as "off-tree" repository where the SCCS history file for a/file is in .sccs/data/a/SCCS/s.file but admin(1) currrently ignores this and creates an "in-tree" repository. - The SCCS compliance test "ei27" now expects "delta -g ..." to create correct ghash checksums for SCCSv6 history files. - SCCS delta now correctly uses the nanoseconds from the files timestamp when applying a delta in SCCSv6 mode using -o. - SCCS libcomobj:sethome() has been reworked to be able to look for a SCCS home set root directors relatively to arbitrary directories and not only for the current working directory. - SCCS libcomobj:idsubst.c new code that has been taken from the get(1) source to permit admin(1) to incorporate the get(1) code. - SCCS libmpw:xmkdir.c new function that checks for errors other than EEXIST. - SCCS libmpw:xmkdirs.c new function that checks for errors other than EEXIST. - SCCS hdr/defines.h New #define URAND_BASE for the epoche of time used to compute "unified random" numbers. At the same time, the value was changed from 0x40000000 to 0x50000000, making 2012 Jul 13 11:01:20 UTC the new base for the urand epoche. The change was done as this feature was defined in 2011 but not used until now. - SCCS New libcomobj functions urand_ab() and urand_ba() - SCCS New libcomobj functions change_ab() and change_ba() - SCCS libcomobj function auxf() noiw implements a new operator 'I' to return the full path for the g-file from the s.file. - SCCS libcomobj function set_init_path() now correctly computes the initial pathname for a file when admin(1) is not doing a chdir to the final directory in bulk (-M) mode. - CPP: The option -M (generate a list of makefile dependencies) has been implemented. - CPP: The option -noinclude (remove system include directory from path) has been implemented. - CPP: The options -xsc and -xuc (treat character constants in cpp evaluations as signed char or unsigned char) have been implemented. - smake no longer dumps core if a colon is seen after no target. Thanks to Heiko Eißfeldt for running for runing "american fuzzy lop" on smake and reporting the bug. - smake no longer endlessly searches for the right implicit rule in rare cases. Thanks to Heiko Eißfeldt for running for runing "american fuzzy lop" on smake and reporting the bug. - smake no longer goes into an apparent endless wait if something like: $r66666666666666666 was seen in a makefile. Thanks to Heiko Eißfeldt for running for runing "american fuzzy lop" on smake and reporting the bug. - smake no longer dumps core when in rare cases a buffer resize happens before the "F" operator (take basename of path) is evaluated. Thanks to Heiko Eißfeldt for running for doing some handcrafted tests based on makefiles created by "american fuzzy lop". - mkisofs: isodump did not compile on non c99 compilers. - libdbgmalloc now checks the whole heap for corrupted entries when dbg_stat() is called via the exit() handler. Author: Joerg Schilling D-13353 Berlin Germany Email: joerg@schily.net, js@cs.tu-berlin.de joerg.schilling@fokus.fraunhofer.de Please mail bugs and suggestions to me.