1: /*
   2:  *	A quick and dirty C program to spit out possible identifiers
   3:  *	from a stream of *.c and *.h files.  Takes a single parameter
   4:  *	which specifies the minimum length of an identifier to be
   5:  *	extracted.
   6:  *
   7:  */
   8: 
   9: #include <stdio.h>
  10: #include <ctype.h>
  11: 
  12: #define FIRSTCHAR(a) (isalpha(a) || (a)=='_')
  13: #define OTHERCHAR(a) (FIRSTCHAR(a) || isdigit(a))
  14: #define TRUE 1
  15: #define FALSE 0
  16: 
  17: int size = 0;
  18: char buffer[512];
  19: char *bp = buffer;
  20: 
  21: main (argc, argv)
  22:      int argc;
  23:      char *argv[];
  24: {
  25:   register int ch;
  26:   register int spitout;
  27:   register int eating_comment;
  28: 
  29:   if (argc = 2)
  30:     {
  31:       size = atoi (argv[1]);
  32:     }
  33:   spitout = FALSE;
  34:   eating_comment = FALSE;
  35:   while ((ch = getchar()) != EOF)
  36:     {
  37:       if (ch == '/')
  38:     {
  39:       if ((ch = getchar()) == EOF)
  40:         {
  41:           fprintf (stderr, "unexpected EOF!\n");
  42:           exit (1);
  43:         }
  44:       else
  45:         {
  46:           if (ch == '*')
  47:         {
  48:           eating_comment = TRUE;
  49:         }
  50:           else
  51:         {
  52:           ungetc (ch, stdin);
  53:         }
  54:         }
  55:     }
  56:       else if (eating_comment && ch == '*')
  57:     {
  58:       if ((ch = getchar()) == EOF)
  59:         {
  60:           fprintf (stderr, "unexpected EOF!\n");
  61:           exit (1);
  62:         }
  63:       else
  64:         {
  65:           if (ch == '/')
  66:         {
  67:           eating_comment = FALSE;
  68:         }
  69:           else
  70:         {
  71:           ungetc (ch, stdin);
  72:         }
  73:         }
  74:     }
  75:       else if (!eating_comment)
  76:     {
  77:       if (!spitout && FIRSTCHAR(ch))
  78:         {
  79:           spitout = TRUE;
  80:           *bp++ = ch;
  81:         }
  82:       else if (spitout && OTHERCHAR(ch))
  83:         {
  84:           *bp++ = ch;
  85:         }
  86:       else if (spitout)
  87:         {
  88:           *bp++ = '\000';
  89:           bp = buffer;
  90:           if (strlen (bp) >= size)
  91:         {
  92:           printf ("%s\n", bp);
  93:         }
  94:           spitout = FALSE;
  95:         }
  96:     }
  97:     }
  98:   return (0);
  99: }

Defined functions

main defined in line 21; never used

Defined variables

bp defined in line 19; used 6 times
buffer defined in line 18; used 2 times
size defined in line 17; used 2 times

Defined macros

FALSE defined in line 15; used 4 times
FIRSTCHAR defined in line 12; used 2 times
OTHERCHAR defined in line 13; used 1 times
  • in line 82
TRUE defined in line 14; used 2 times
Last modified: 1986-03-28
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1093
Valid CSS Valid XHTML 1.0 Strict