Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83; site utcs.UUCP Path: utzoo!utcs!geoff From: geoff@utcs.UUCP (Geoff Collyer) Newsgroups: net.unix-wizards,net.bugs.4bsd Subject: massive type confusion Message-ID: <244@utcs.UUCP> Date: Tue, 4-Dec-84 16:54:32 EST Article-I.D.: utcs.244 Posted: Tue Dec 4 16:54:32 1984 Date-Received: Tue, 4-Dec-84 17:41:56 EST Organization: University of Toronto - General Purpose UNIX Lines: 31 Index: /usr/include/sys/types.h 4.2BSD Index: /usr/include/sys/dir.h (aka /usr/include/dir.h) 4.2BSD Index: /usr/lib/lint/llib-lc 4.2BSD Description: These files use int where long is correct and fail to use the types defined in. 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 (hint: ftell must be declared as returning long). Edit to use ino_t (instead of unsigned long) and off_t where appropriate. Edit to typedef off_t and time_t as long, *not int*. Burn a new binary lint library for llib-lc. Use the types defined in in your programs! It is left as an exercise to the reader to make cc invoke lint before the C compiler and exit if lint complains. 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 . To paraphrase Dennis Ritchie, if you want BCPL, you know where to find it. In the mean time, please start writing *C* programs, you know the ones, they have *type* declarations in them.