budd@arizona.UUCP (12/06/83)
Here is another 4.2 bogosity (this is what I've pieced together. The lawyers still have our 4.2 tape!!). The ``bib'' bibliographic database software, written here by myself and gary levin, is on the 4.2 distribution tape. (This is a replacement for refer, was posted to the net several months ago). Immediately before 4.2 was set in stone, the people at berkeley asked for the latest version. I got the copy they had, which had been berkeletised, and compared the updates they had made to the improvements I had made and took the best of both worlds and made a new version. Now here comes the tricky part. The berkeley people use SCCS, I don't. There were several %D formats in the source which the berkeley people changed to %ld, however I didn't take note of this in making my updates, and apparently It wasn't caught when I shipped the source back to berkeley. (Also, they seem to have re-berkeletised it, putting back in the features I had taken out of their earlier version). Here's the bug: There are two %D%D formats in scanf's in the file invert.c. The sccs system uses %D% as a keyword, replacing it with the current date. This, of course, messes everything up.
guy@rlgvax.UUCP (12/14/83)
While we're on the subject of %D, please note that System III and later
versions of UNIX do *NOT* support %D as a synonym for %ld. More specifically,
%X doesn't mean %lx, it means "%x only put the hex digits 'a' through 'f'
out in upper case." (This would have been useful for someone who complained
a few months ago that it was a pain to get "*printf" to produce output to
make his PROM burner, which expected upper-case hex, happy.) Since "%ld"
will work on any reasonable (i.e., V6 with V7 Phototypesetter or later) UNIX,
but "%D" works on pre-S3 UNIXes, people should get in the habit of using "%ld"
rather than "%D" (it will also keep SCCS happier).
While you're all fixing your code, note that printing a long should *always*
be done with "%ld", not "%d", even though you "know" you're running on a machine
with 32-bit "int"s. The next person that compiles your program may not be
running on such a machine...
Guy Harris
{seismo,ihnp4,allegra}!rlgvax!guy