[TUHS] History of strncpy
imp at bsdimp.com
Fri Jan 25 00:52:34 AEST 2013
On Jan 24, 2013, at 7:42 AM, Ronald Natalie wrote:
> On Jan 24, 2013, at 1:02 AM, Larry McVo
>> As a SPARC guy (in the past), I think it may have had something to do
>> about alignment.
>> That said, I hate the fread/fwrite interfaces. We're fixing them in
>> our stdio. freadn(f, buf, n).
> Amen. For practical matters, there is no way given the rest of the library that an implementation can do
> anything other than multiply the two middle args together. The stream still needs to be a byte stream
> and passing things as void* sort of divorces any clue as to what alignment or other portability requirements
> are (and I've worked on C on some rather odd word sized machines like 36 and 60 as well as machines
> that encode the word size in the pointer... believe me there were TONS of bugs in 4BSD with regard to that
> one where they would stuff a char* into a union and retrieve it with a int* thwarting any possible conversion
> (as we put in place when you casted one pointer to other).
Historically the only implementation I know that didn't just multiply the two args together was on VAX/VMS's VAXC. The underlying filesystem had a notion of a file of records, so you'd get very different result from n * size, 1 and n, size. The former would produce one record that was n * size, while the latter would produce n records, each of which was size in length. As with all things on that compiler, this was only sometimes, and it greatly depended on how the file was created... Mostly a royal pain, except in some very rare instances where it was what you wanted to happen.
> It's not true that FILE went at the end, except in vararg'd functions. It goes at the beginning of ftell (which
> mimics the UNIX tell call). As with Larry, I'd much perferred they mimic'd most of the UNIX calls when
> possible. They were reasonably thought out.
> TUHS mailing list
> TUHS at minnie.tuhs.org
More information about the TUHS