Ten Commandments (was viscious attacks)

From: Angus Mezick (angus@EDGIL.CCMAIL.COMPUSERVE.COM)
Date: 09/01/97


This just reminded me of something I saw on the web a while back :
           The Ten Commandments for C Programmers

                      Henry Spencer
1
   Thou shalt run lint frequently and study its pronounce-
     ments  with  care, for verily its perception and judge-
     ment oft exceed thine.


2
   Thou shalt not follow the NULL pointer, for  chaos  and
     madness await thee at its end.


3
   Thou shalt cast all function arguments to the  expected
     type  if  they  are not of that type already, even when
     thou art convinced that this is unnecessary, lest  they
     take  cruel  vengeance upon thee when thou least expect
     it.


4
   If thy header files fail to declare the return types of
     thy  library functions, thou shalt declare them thyself
     with the  most  meticulous  care,  lest  grievous  harm
     befall thy program.


5
   Thou shalt  check  the  array  bounds  of  all  strings
     (indeed,  all  arrays),  for  surely  where thou typest
     ``foo'' someone someday shall type ``supercalifragilis-
     ticexpialidocious''.


6  ***** THIS ONE *****
   If a function be advertised to return an error code  in
     the  event  of  difficulties, thou shalt check for that
     code, yea, even though the checks triple  the  size  of
     thy  code  and produce aches in thy typing fingers, for
     if thou thinkest ``it cannot happen to me'',  the  gods
     shall surely punish thee for thy arrogance.


7
   Thou shalt study thy libraries and strive  not  to  re-
     invent  them  without cause, that thy code may be short
     and readable and thy days pleasant and productive.


8
   Thou shalt make thy  program's  purpose  and  structure
     clear  to  thy  fellow  man by using the One True Brace
     Style, even if thou likest it not, for  thy  creativity

     is  better  used  in  solving problems than in creating
     beautiful new impediments to understanding.


9
   Thy external identifiers shall be unique in  the  first
     six characters, though this harsh discipline be irksome
     and the years of  its  necessity  stretch  before  thee
     seemingly  without end, lest thou tear thy hair out and
     go mad on that fateful day when thou desirest  to  make
     thy program run on an old system.


10
   Thou shalt foreswear, renounce,  and  abjure  the  vile
     heresy  which  claimeth that ``All the world's a VAX'',
     and have no commerce with the  benighted  heathens  who
     cling  to  this  barbarous belief, that the days of thy
     program may be long even though the days of thy current
     machine be short.

check out http://mds.mhd.se/~dat95twn/other_html/ten.htm for the annoted edition
(it was a bit verbose)
______________________________ Reply Separator _________________________________
There's a very easy way to fix this.  Look in new_descriptor() in comm.c.
I added a check right before the part that creates the new descriptor
WHat I did was to try to write to the socket, and if it failed, return a 0
from new_descriptor to flag it as a bad socket.

/* code that checks to see if the mud is already full */

if((write_to_descriptor(desc, "Validating socket...\r\n")) < 0) {
  close(desc);
  return 0;
}

/* create a new descriptor */


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/08/00 PST