Subject: Re: bad programming (was: Is there a new tcsh source)
To: Szabolcs Szigeti (PinkPanther) <pink@fsz.bme.hu>
From: Ken Hornstein <kenh@entropic.com>
List: current-users
Date: 10/10/1994 15:42:45
>No. Bad programming means writing things like:
>
>double **sys_errlist;
>
>instead of 
>
>#ifndef SUCKER_SYSTEM
>#include <errno.h>
>#endif
>
>#ifdef SUCKER_SYSTEM
>double **sys_errlist;
>#endif
>
>And giving the user the choise of adding -DSUCKER_SYSTEM to CFLAGS. Or better
>yet, providing an autoconfiguration utility (look at emacs or clisp, wonderful
>).

Thanks, that's what I really meant.

I'd just like to say that having your own prototypes for system calls/library
functions is one of my pet peeves; I recently had to port our company's
software to OSF/1, and (like on most modern operating systems) things like
getopt were prototyped as:

extern int getopt __((int, char * const [], const char *));

and malloc was:

extern void    *malloc __((size_t ));

(sys_errlist was char *, unlike NetBSD's const char *const).

And one particular programmer had "char *malloc()" in nearly every .c file,
and I had to fix them all :-(

So I rapidly grew to hate people who put their own prototypes in their source
code :-).  This was re-affirmed by porting stuff to NetBSD.

I didn't mean to insult anyone; perhaps my remarks were a bit hasty.  I still
believe that having your own prototypes for system functions is a generally
bad idea, but there are no doubt plenty of exceptions to this.

Peace,

--Ken