1: /*
   2:  * Copyright (c) 1980 Regents of the University of California.
   3:  * All rights reserved.  The Berkeley software License Agreement
   4:  * specifies the terms and conditions for redistribution.
   5:  */
   6: 
   7: #ifndef lint
   8: char copyright[] =
   9: "@(#) Copyright (c) 1980 Regents of the University of California.\n\
  10:  All rights reserved.\n";
  11: #endif not lint
  12: 
  13: #ifndef lint
  14: static char sccsid[] = "@(#)wc.c	5.1 (Berkeley) 5/31/85";
  15: #endif not lint
  16: 
  17: /* wc line and word count */
  18: 
  19: #include <stdio.h>
  20: long    linect, wordct, charct, pagect;
  21: long    tlinect, twordct, tcharct, tpagect;
  22: char    *wd = "lwc";
  23: 
  24: main(argc, argv)
  25: char **argv;
  26: {
  27:     int i, token;
  28:     register FILE *fp;
  29:     register int c;
  30:     char *p;
  31: 
  32:     while (argc > 1 && *argv[1] == '-') {
  33:         switch (argv[1][1]) {
  34:         case 'l': case 'w': case 'c':
  35:             wd = argv[1]+1;
  36:             break;
  37:         default:
  38:         usage:
  39:             fprintf(stderr, "Usage: wc [-lwc] [files]\n");
  40:             exit(1);
  41:         }
  42:         argc--;
  43:         argv++;
  44:     }
  45: 
  46:     i = 1;
  47:     fp = stdin;
  48:     do {
  49:         if(argc>1 && (fp=fopen(argv[i], "r")) == NULL) {
  50:             perror(argv[i]);
  51:             continue;
  52:         }
  53:         linect = 0;
  54:         wordct = 0;
  55:         charct = 0;
  56:         token = 0;
  57:         for(;;) {
  58:             c = getc(fp);
  59:             if (c == EOF)
  60:                 break;
  61:             charct++;
  62:             if(' '<c&&c<0177) {
  63:                 if(!token) {
  64:                     wordct++;
  65:                     token++;
  66:                 }
  67:                 continue;
  68:             }
  69:             if(c=='\n') {
  70:                 linect++;
  71:             }
  72:             else if(c!=' '&&c!='\t')
  73:                 continue;
  74:             token = 0;
  75:         }
  76:         /* print lines, words, chars */
  77:         wcp(wd, charct, wordct, linect);
  78:         if(argc>1) {
  79:             printf(" %s\n", argv[i]);
  80:         } else
  81:             printf("\n");
  82:         fclose(fp);
  83:         tlinect += linect;
  84:         twordct += wordct;
  85:         tcharct += charct;
  86:     } while(++i<argc);
  87:     if(argc > 2) {
  88:         wcp(wd, tcharct, twordct, tlinect);
  89:         printf(" total\n");
  90:     }
  91:     exit(0);
  92: }
  93: 
  94: wcp(wd, charct, wordct, linect)
  95: register char *wd;
  96: long charct; long wordct; long linect;
  97: {
  98:     while (*wd) switch (*wd++) {
  99:     case 'l':
 100:         ipr(linect);
 101:         break;
 102: 
 103:     case 'w':
 104:         ipr(wordct);
 105:         break;
 106: 
 107:     case 'c':
 108:         ipr(charct);
 109:         break;
 110: 
 111:     }
 112: }
 113: 
 114: ipr(num)
 115: long num;
 116: {
 117:     printf(" %7ld", num);
 118: }

Defined functions

ipr defined in line 114; used 3 times
main defined in line 24; never used
wcp defined in line 94; used 2 times

Defined variables

charct defined in line 20; used 7 times
copyright defined in line 8; never used
linect defined in line 20; used 7 times
pagect defined in line 20; never used
sccsid defined in line 14; never used
tcharct defined in line 21; used 2 times
tlinect defined in line 21; used 2 times
tpagect defined in line 21; never used
twordct defined in line 21; used 2 times
wd defined in line 22; used 7 times
wordct defined in line 20; used 7 times
Last modified: 1987-02-17
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1972
Valid CSS Valid XHTML 1.0 Strict