Previous: SCCS Version Differences, Up: Interoperability


6.10 CSSC Extensions

There are some respects in which cssc behaves unlike other versions of sccs. These differences mainly relate to the removal of arbitrary limits or problems, and generally do not pose an interoperability problem. The most important extensions are listed below.

Line Length
By default, CSSC enforces no line length limits. See Maximum Line Length.
Date handling
The -c option to get supports four-digit years. See The Good News.
Binary file handling
When you generate a new sccs file with admin -i, the admin command will automatically determine if the file needs to be encoded. Other versions of sccs which do this rely on being able to seek in the input file specified as the argument to the -i option, which means that this is not possible if the initial file body is being read by a pipe. The cssc implementation of admin does not have this limitation, since it seeks on the file being created instead. See Unemulated Features.
Combinations of features
Various other sccs implementations have extensions (for example the x and y flags and binary file encoding). The cssc suite attempts to honour all of these extensions, and is probably the only implementation which has all these features. If you try to use a feature which is specific to only one implementation of sccs, cssc will issue a warning that what you are doing is not portable.

If you use features of cssc which are extensions originating in more than one other sccs implementation, for example both the x and the y flags, you have effectively tied yourself to cssc. Once you are in that position, you are no longer able to interoperate with any other version of sccs (since, in this example, any other version of sccs will fail to understand either the x or the y flag). If interoperability with other versions of sccs is no longer an issue, you might as well bite the bullet and migrate to a more modern configuration control system entirely. See Overview.

Validation
The cssc implementation of val implements some checks that other implementations lack. Howver, it is not complete, and so there are also checks that other implementations make that cssc does not.
Error Messages
The error messages issued by cssc are intended to be self-explanatory and so lack reference numbers like ‘(ge4)’.
Closed File Descriptors
If you invoke cssc with file descriptor 0, 1 or 2 closed, that file descriptor is attached to /dev/null. This prevents error messages going into a file opened by cssc for writing (for example an sccs file).
Read-only reaction to unsupported features
If cssc discovers a construct in an sccs file which it doesn't understand, it will avoid modifying the file (though read-only tools like prt and get will still work).
Invoking other tools
It is usual for cssc to invoke other programs, for example diff and the MR-validator specified by the v flag. However, with the exception of the sccsdiff shell script, the tools within the cssc suite do not invoke each other. For example, delta does not invoke get. This behaviour is different to the traditional architecture of sccs and might introduce subtle differences of behaviour. Any such differences are bugs; see Reporting Bugs.
Environment
Some environment variables are specific to cssc. See Environment Variables.

See also Missing Features and other Problems.