need info: %r in printf

Jerry Leichter leichter at yale-com.UUCP
Sat Oct 15 00:32:27 AEST 1983


"it seems better if DECUS had never introduced it in the first place."
What a remarkable statement!  According to various replies to the original
article, %r was certainly in V6, probably in V7, and may have been in System II.
The "well-known hack" is the technique used to IMPLEMENT VARARGS, so is as
current as anything.  VARARGS is also fairly recent in itself.

DECUS C goes back a ways.  At the time its printf was done, it is quite probable
that %r was "current".  Just because Unix has historically been quite cavalier
about ignoring problems of upward compatibility, do you think everyone should
be?  Hey, you commit something to a public interface and you are COMMITTED to
it; you are introducing major costs on your users if you decide you no longer
want it.

In any case, DECUS C never claimed to be 100% Unix compatible.  The compiler is
quite close to C AS DESCRIBED IN K&R - the ONLY widely available language
reference.  The library emulates a variety of Unix functions and provides
much the same functionality as the Unix library, but it is by no means identi-
cal.  MOST Unix programs move to DECUS C with little or no trouble.  MOST
DECUS C programs move to Unix in the same way.  If you want to eliminate the
"most", run on Unix.  DECUS C runs under 4 different operating systems, none
of which is particularly similar to Unix.  When these operating systems have
required some non-Unix-compatible feature to make C more useful on them, it
has found its way into DECUS C.  For example, in DECUS C the compiler allows
you to manipulate PSECT's, a concept that doesn't even exist in Unix in the
same form.  Also, when Unix's approach was just plain wrong, or when Unix
was missing something that was obviously useful, DECUS C has been willing to
say:  We will do it right - often by implementing things in a way similar to
that discussed in this very newsgroup.  (Actually, there are very few of the
former - Unix "errors" - but a good number of the latter - Unix "lacks".
For example, DECUS C's library has a function, msize(), which tells you the
size of a block returned by malloc() - after all, free() can find out, why
shouldn't the user be able to?  I wrote that one myself; you don't like it, it's
"not portable"? - fix your own system.  After all, everyone claims one of Unix'x
\\\Unix's big advantages is that if you don't like something you can change it!)
							-- Jerry
					decvax!yale-comix!leichter leichter at yale



More information about the Comp.lang.c mailing list