From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 109fba,df854b5838c3e14 X-Google-Attributes: gid109fba,public X-Google-Thread: 103376,df854b5838c3e14 X-Google-Attributes: gid103376,public X-Google-Thread: 10db24,fec75f150a0d78f5 X-Google-Attributes: gid10db24,public X-Google-Thread: 1014db,df854b5838c3e14 X-Google-Attributes: gid1014db,public From: c2a192@ugrad.cs.ubc.ca (Kazimir Kylheku) Subject: Re: ANSI C and POSIX (was Re: C/C++ knocks the crap out of Ada) Date: 1996/04/09 Message-ID: <4ke0ciINNgg8@keats.ugrad.cs.ubc.ca>#1/1 X-Deja-AN: 146559780 references: <4kcein$mev@solutions.solon.com> organization: Computer Science, University of B.C., Vancouver, B.C., Canada newsgroups: comp.lang.ada,comp.lang.c,comp.lang.c++,comp.edu Date: 1996-04-09T00:00:00+00:00 List-Id: In article , Robert Dewar wrote: >I said > >>>Can you quote the relevant standard. No description of read I ever saw >>>was detailed or precise enough to say what the requirements on the caller >>>are. > >Peter said > >>If it is not specified, it's undefined. At least, that's how C does it; >>no guarantees for POSIX. > >Robert replies > >OK, "it" here is any specification of how long the buffer should be. So >Peter considers it undefined, in which case *any* call to read is >undefined. Actually I completely agree, if the spec of a routine is >incomplete or imprecise, the routine cannot be called without generating >undefined behavior. > >But in the absence of Kazimir to tell us the "unwritten" rules, isn't it >just possible that this *might* lead to portability problems :-) Of course >by Peter's rules, we can't call read at all :-) No, the _rational_ rules. I slipped up in my mention of ``unwritten rules'' because in this case they happen to coincide with the rational ``Bayesian'' choice. In other cases, as in the case of select(), they may not. I did not mean to imply that I would not falsely advertize a buffer to read() simply because I feel that there is an unwritten rule among a community of programmers which prohibits this. I would not do this due to a reasoning process, which may come up with an answer that is different from the concensus. A later clarification in the standard, and subsequent compliance by all implementations, may render my assumption paranoid, but until then the rational choice gives a fighting chance that the program will work and be portable. I recognize that there are cases where such reasoning may fail to achieve a resolution. In the Pascal table, you may have a "you are screwed" in each row and column, in which case you must consider additional alternatives. >Peter do you have SPEC1170, I assume you must have a copy, so can you >see there if the spec is any more illuminating? That would be helpful. --- A good friend of mine says: you can spot a programmer in a one way street---he is the one who looks both ways before crossing. --