PLEX86  x86- Virtual Machine (VM) Program
 Plex86  |  CVS  |  Mailing List  |  Download  |  Computer Folklore

Thou shalt have no other gods before the ANSI C standard 1636

I *know* I am going to regret this, but a few items that jump out very quickly...

years old, judging by the function parameters.

-- Non-standard exit codes everywhere.

-- Seems to think that exit(0); is preferable to return 0; from main.

-- Pointer parameter derefs scattered throughout without a check for NULL. In fact grep for "NULL" found 0 hits. Nothing is ever NULL in here. Not even an if (!foo) before following them.

-- Really seems to dislike useful comments. Uses terms like "dorks" when he does write a comment. I saw NFS dorks, SYSV dorks and Solaris dorks explicitly shown the love. Some of the more comforting ones include:

Thou shalt have no other gods before the ANSI C standard 1637
Anyway, you can always use the good old preprocessor to circumvent the problem. If you want an unsigned type with exactly 32 bits: * ================================================================= * #ifdef UINT32MAX...

* love untested * * love breaks down with more than two children * * love: there are more portability problems here waiting to leap out at me * * love: buttuming that this alignment is enough *

-- Seems to think the newlines are expensive or at least in short supply. See str*.c for some real pretty examples.

-- hardcodes path-filename instead of them being configurable. Even when the same hard-coded string is used more than once, they're don't rate a #define.

-- Variadic functions must be problematic on some of the supported platforms.

-- Error handling sometimes falls off the if check with a ;* love * Hope those are not important.

flavored boxes, that sort of makes sense.

autoint.c: void main() autoint8.c: void main() autostr.c: void main() autouid.c: void main() chkshsgr.c: void main() chkspawn.c: void main() condredirect.c: void main() dnscname.c: void main() dnsfq.c: void main() dnsip.c: void main() dnsmxip.c: void main() dnsptr.c: void main() except.c: void main() forward.c: void main() hostname.c: void main() install.c: void main()

Ack... you get the idea on this one. There are a lot more. I thought only DOS programmers were this attached to undefined behavior. Is there an old Xenix compiler out there somewhere that refuses to accept int main(void) ??? If so, how about conditional compilation?

qmail-qmqpc.c: main() And a few others, as the filenames get past the midway point of the the alphabet, somebody got tired of typing void for a bit, then they pick up again.

strdiff.c: return ((int)(unsigned int)(unsigned char) x) - ((int)(unsigned int)(unsigned char) *t); If you like casts, why not have a bunch of them?

alloc.c: extern char *malloc(); What happened to void? Must be running low on them too.

Nominee for most helpful error message: "Zqq internal bug (#4.3.0)"

-- Randy Howard (2reply remove FOOBAR) "Making it hard to do stupid things often makes it hard to do smart ones too." -- Andrew Koenig

List | Previous | Next

Thou shalt have no other gods before the ANSI C standard 1637

Alt Folklore Computers Newsgroups

Thou shalt have no other gods before the ANSI C standard 1635