James Youngman <j...@gnu.org> wrote:

> On Tue, Jun 14, 2016 at 11:29 AM Joerg Schilling
> <joerg.schill...@fokus.fraunhofer.de> wrote:
> > CSSC even refuses the "s" flag that has been introduced by Sun ~ 30 years
> > ago and writes a message: Corrupted SCCS file. (Unknown flag 's'.) instead 
> > of
> > getting a version. The s flag is important if you need some printf() format
> > strings in the code that have a clash with get keywords, but still have an
> > expanded version string at the top of a file.
>
> This is true; CSSC doesn't understand this flag.  This is likely
> because nobody reported this as a bug to me, so I was unaware of the
> existence of the flag on some versions of Unix.

I am not sure, but I believe that the SCCS man pages have been available in the 
net for a while - well most likely not before you reduced your effort on CSSC.

The "s" flag appeared in early 1986 on SunOS, when Sun introduced NSE - the 
"Network Software Environment" - the first distributed source code control 
system and it is part of the maintained official SCCS source. 

> If you would be so kind as to describe specifically the behaviour of
> the flag, I'd be happy to implement it.

Check the SCCS project at: http://sccs.sourceforge.net/ and look at the man 
pages, e.g.:

        http://sccs.sourceforge.net/man/sccs-admin.1.html

The "s" flag is on page 4. It is easy to implement and quite helpful in special 
since new lower case keywords for 4-digit years numbers have been introduced
in 2008. These keywords interfere with printf() formats and may cause problems
if the keyword expansioon is not limited to a special number of lines.

BTW: there is a general problem with CSSC that is related to the fact that CSSC 
checks things that SCCS intentionally does not check. The file format at a 
specific level intentionally allows future enhancements.

CSSC however checks things it should not check:

-       The historical SCCS may core dump if you add upper case flags, but
        is intentionally does not check for unknown lower case flags and 
        handles them in an agnostic method: it forwards text for unknown flags
        to new versions without modifying the text.

-       The historical SCCS intentionally does not check what is between
        the flags section and the comment file section. It rather forwards 
        anything unmodified that is between the last "^Af" line and the "^At"
        line when creating new history file versions.

-       The historical SCCS does not check for a space after a "^Ac" delta
        comment and both BitKeeper SCCS and the recent version of the 
        original SCCS use degenerated "^Ac_XXX" delta comments to keep
        extended information. SCCS e.g. uses these comments to keep
        nanoseconds and the timezone from SCCS V6 history files that have
        been converted back into the SCCS V4 format. CSSC should at least 
        permit and keep "^Ac_" followed by anything.

-       The historical SCCS did document a maximum serial number of 30000
        for SCCS history files but never verified this. The original SCCS
        thus is able to have at least 2 billion versions inside a SCCS
        history file and I already created a SCCS history file with
        3 million deltas. CSSC should not artificially introduce such
        limits if it looks for users.

See the man page: http://sccs.sourceforge.net/man/sccsfile.4.html for a 
documentation of the current SCCS format. As documented in this man page, SCCS 
needs 300 MB of virtual memory in order to unpack a history file with 3 million
deltas.


Please note that I negotiated a OSS SCCS with SCO in 2001, but this was not
implemented because a few weeks before the source should be handed over, a 
Linux company called "Caldera" bought SCO and had no interest in OSS....

I later negotiated with Sun to make SCCS opensource and finally succeeded in 
December 2006. So the original SCCS code is now available as OSS and it is 
actively maintained since then. SCCS is still the fastest source control system 
available and it is available as legal OpenSource to the public since 12.5 years
now.

Jörg

-- 
 EMail:jo...@schily.net                    (home) Jörg Schilling D-13353 Berlin
    joerg.schill...@fokus.fraunhofer.de (work) Blog: http://schily.blogspot.com/
 URL: http://cdrecord.org/private/ http://sf.net/projects/schilytools/files/'

Reply via email to