Sample C Code

The following code snippet, a routine extracted from a compiler, demonstrates most of the coding standards that we follow.

        /******************************************************************************
        * do_supprint - process `suppress_print[_unless]' statements		      *
        *									      *
        * This routine receives control from the CONF.C module when a suppress_print  *
        * or suppress_print_unless is encountered. Such statements are of the form    *
        *    suppress_print[_unless]	fld_def relop value			      *
        ******************************************************************************/
        static int do_supprint()
        {					/* start of sub-routine		     */
        IFD *ifd = cvt->cvt_currifd;		/* address of current IFD	     */
        TRP *trp = cvt->cvt_trd->trd_trp;	/* address of current TRP	     */
        SPR *spr, *new;				/* address of SPR		     */
        int  retcd = TRUE;			/* assume that all is well	     */
        char *emsg1 = "Misplaced statement: `%s' encountered before `table'";
        char *emsg2 = "No more than one suppress_print[_unless] statement supported";
          
          rt_start( );				/* trace program flow		     */
          while (TRUE)				/* outer control loop		     */
           {					/* [to scoop up any exceptions]	     */
            if ((! cvt->cvt_trd) || (! cvt->cvt_trd->trd_trp))
             {					/* if `suppress_' stat't out of seq  */
              config_error(ERROR_LEVEL, emsg1, cvt->cvt_tokenptr[0]); /* mention err */
              if (ifd) ifd->ifd_deferrors++;	/* count specification errors	     */
              retcd = FALSE;			/* indicate that we are not happy    */
              break;				/*  and bypass further processing    */
             }					/* end of handling misplaced statemnt*/
            while (trp->trp_trp) trp = trp->trp_trp; /* advance to last [current] TRP*/
            new = getmem(SPRlgth, "SPR");	/* acquire memory for area	     */
            if (! new) break;			/* exit if no memory available	     */
            if (cvt->cvt_tokenlen[0] == 21)	/* if this is an ..._unless stat't   */
              new->spr_flags |= FSPR_UNLESS;	/* then flag to reverse the logic    */
            spr = (SPR *)&trp->trp_spr;		/* treat TPR as SPR anchor	     */
            if (trp->trp_spr)			/* if the anchor is populated	     */
             {					/* ... then ...			     */
              config_error(ERROR_LEVEL, emsg2);	/* explain the problem		     */
              if (ifd) ifd->ifd_deferrors++;	/* count specification errors	     */
              retcd = FALSE;			/* indicate that we are not happy    */
              break;				/*  and bypass further processing    */
             }					/* end of handling multiple stat'ts  */
            while (spr->spr_spr)		/* until the end of chain found      */
              spr = spr->spr_spr;		/* walk the chain		     */
            spr->spr_spr = new;			/* append new SPR to end of chain    */
            ifd->ifd_selanchor = (SEL *)&new->spr_sel; /* establish SPR as SEL anchor*/
            do_select();			/* process args as if 'select' stat't*/
            break;				/* break out of outer control loop   */
           }					/* end of outer control loop	     */
          rt_end( );				/* trace program flow		     */
          return(retcd);			/* return status to caller	     */
        }					/* end of sub-routine		     */