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