# 2.11BSD#431 - /usr/src/ucb/strings.c

##### Functions

    dirt              X
    find              X
    main              X

##### Variables

    asdata            X
    copyright         X
    header            X
    infile            X
    minlength         X
    offset            X
    oflg              X

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

#### Defined functions

dirt defined in line 118; used 1 times

- in line 98

find defined in line 88; used 2 times

- in line 80-84(2)

main defined in line 33; never used

#### Defined variables

asdata defined in line 29; used 3 times

- in line 42, 50, 76

copyright defined in line 8; never used
header defined in line 25; used 5 times

- in line 77-84(5)

infile defined in line 27; used 1 times

- in line 72

minlength defined in line 31; used 4 times

- in line 58-60(3), 102

offset defined in line 30; never used
oflg defined in line 28; used 2 times

- in line 46, 103

sccsid defined in line 12; never used

Last modified: 1994-02-26 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 623 |