massive type confusion [in 4.2bsd]
Sam Kendall
kendall at talcott.UUCP
Sat Dec 8 08:02:18 AEST 1984
> Description:
> These files use int where long is correct and fail to use
> the types defined in <sys/types.h>.
> Repeat-By:
> Lint a type-correct program that calls lseek, time and ctime
> and which passes lint on v7 (not 4.1BSD, not 2BSD). Observe
> the utterly wrong and copious messages produced by lint.
> Fix:
> Edit llib-lc to use off_t instead of long where appropriate
No, don't do it! This would make llib-lc incompatible with the manual
pages. That's just as bad. llib-lc should look like the manual pages
whenever possible.
> Edit <sys/dir.h> to use ino_t (instead of unsigned long)
> and off_t where appropriate. Edit <sys/types.h> to typedef
> off_t and time_t as long, *not int*.
This is sufficient, no need to touch the lint library--but will it break
anything? In obscure cases it can change the meaning of an expression,
even on the VAX.
> Use the types defined in <sys/types.h> in your programs!
No, use the types on the manual pages.
> Flame:
> int is not long on all machines. I realise that the authors
> of 4.2BSD are too lazy to write type-correct code, but they
> could at least refrain from breaking existing, correct code
> such as <sys/types.h>.
I'm all agreement here (although I think the BSD people were under a
lot of pressure to get 4.2 out the door). Even the SPECIFICATION of
4.2 is VAX-specific!
Sam Kendall {allegra,ihnp4,ima,amd}!wjh12!kendall
Delft Consulting Corp. decvax!genrad!wjh12!kendall
More information about the Comp.unix.wizards
mailing list