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[] = "@(#)strings.c	5.1 (Berkeley) 5/31/85";
  15: #endif not lint
  16: 
  17: #include <stdio.h>
  18: #include <a.out.h>
  19: #include <ctype.h>
  20: #include <sys/file.h>
  21: 
  22: long    ftell();
  23: 
  24: /*
  25:  * strings
  26:  */
  27: 
  28: struct  exec header;
  29: 
  30: char    *infile = "Standard input";
  31: int oflg;
  32: int asdata;
  33: long    offset;
  34: int minlength = 4;
  35: 
  36: main(argc, argv)
  37:     int argc;
  38:     char *argv[];
  39: {
  40: 
  41:     argc--, argv++;
  42:     while (argc > 0 && argv[0][0] == '-') {
  43:         register int i;
  44:         if (argv[0][1] == 0)
  45:             asdata++;
  46:         else for (i = 1; argv[0][i] != 0; i++) switch (argv[0][i]) {
  47: 
  48:         case 'o':
  49:             oflg++;
  50:             break;
  51: 
  52:         case 'a':
  53:             asdata++;
  54:             break;
  55: 
  56:         default:
  57:             if (!isdigit(argv[0][i])) {
  58:                 fprintf(stderr, "Usage: strings [ -a ] [ -o ] [ -# ] [ file ... ]\n");
  59:                 exit(1);
  60:             }
  61:             minlength = argv[0][i] - '0';
  62:             for (i++; isdigit(argv[0][i]); i++)
  63:                 minlength = minlength * 10 + argv[0][i] - '0';
  64:             i--;
  65:             break;
  66:         }
  67:         argc--, argv++;
  68:     }
  69:     do {
  70:         if (argc > 0) {
  71:             if (freopen(argv[0], "r", stdin) == NULL) {
  72:                 perror(argv[0]);
  73:                 exit(1);
  74:             }
  75:             infile = argv[0];
  76:             argc--, argv++;
  77:         }
  78:         fseek(stdin, (long) 0, L_SET);
  79:         if (asdata ||
  80:             fread((char *)&header, sizeof header, 1, stdin) != 1 ||
  81:             N_BADMAG(header)) {
  82:             fseek(stdin, (long) 0, L_SET);
  83:             find((long) 100000000L);
  84:             continue;
  85:         }
  86:         fseek(stdin, (long) N_TXTOFF(header)+header.a_text, L_SET);
  87:         find((long) header.a_data);
  88:     } while (argc > 0);
  89: }
  90: 
  91: find(cnt)
  92:     long cnt;
  93: {
  94:     static char buf[BUFSIZ];
  95:     register char *cp;
  96:     register int c, cc;
  97: 
  98:     cp = buf, cc = 0;
  99:     for (; cnt != 0; cnt--) {
 100:         c = getc(stdin);
 101:         if (c == '\n' || dirt(c) || cnt == 0) {
 102:             if (cp > buf && cp[-1] == '\n')
 103:                 --cp;
 104:             *cp++ = 0;
 105:             if (cp > &buf[minlength]) {
 106:                 if (oflg)
 107:                     printf("%7D ", ftell(stdin) - cc - 1);
 108:                 printf("%s\n", buf);
 109:             }
 110:             cp = buf, cc = 0;
 111:         } else {
 112:             if (cp < &buf[sizeof buf - 2])
 113:                 *cp++ = c;
 114:             cc++;
 115:         }
 116:         if (ferror(stdin) || feof(stdin))
 117:             break;
 118:     }
 119: }
 120: 
 121: dirt(c)
 122:     int c;
 123: {
 124: 
 125:     switch (c) {
 126: 
 127:     case '\n':
 128:     case '\f':
 129:         return (0);
 130: 
 131:     case 0177:
 132:         return (1);
 133: 
 134:     default:
 135:         return (c > 0200 || c < ' ');
 136:     }
 137: }

Defined functions

dirt defined in line 121; used 1 times
find defined in line 91; used 2 times
main defined in line 36; never used

Defined variables

asdata defined in line 32; used 3 times
copyright defined in line 8; never used
header defined in line 28; used 6 times
infile defined in line 30; used 1 times
  • in line 75
minlength defined in line 34; used 4 times
offset defined in line 33; never used
oflg defined in line 31; used 2 times
sccsid defined in line 14; never used
Last modified: 1985-05-31
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1147
Valid CSS Valid XHTML 1.0 Strict