version 1.4, 1997/09/11 11:21:54 |
version 1.5, 2000/02/23 19:44:08 |
|
|
register int ch, cnt; |
register int ch, cnt; |
register u_char *C; |
register u_char *C; |
EXEC *head; |
EXEC *head; |
int exitcode, minlen; |
int exitcode, minlen, maxlen, bfrlen; |
short asdata, fflg; |
short asdata, fflg; |
u_char *bfr; |
u_char *bfr; |
char *file, *p; |
char *file, *p; |
|
|
asdata = exitcode = fflg = 0; |
asdata = exitcode = fflg = 0; |
offset_format = NULL; |
offset_format = NULL; |
minlen = -1; |
minlen = -1; |
while ((ch = getopt(argc, argv, "-0123456789an:oft:")) != -1) |
maxlen = -1; |
|
while ((ch = getopt(argc, argv, "-0123456789an:m:oft:")) != -1) |
switch((char)ch) { |
switch((char)ch) { |
case '0': case '1': case '2': case '3': case '4': |
case '0': case '1': case '2': case '3': case '4': |
case '5': case '6': case '7': case '8': case '9': |
case '5': case '6': case '7': case '8': case '9': |
|
|
case 'n': |
case 'n': |
minlen = atoi(optarg); |
minlen = atoi(optarg); |
break; |
break; |
|
case 'm': |
|
maxlen = atoi(optarg); |
|
break; |
case 'o': |
case 'o': |
offset_format = FORMAT_OCT; |
offset_format = FORMAT_OCT; |
break; |
break; |
|
|
(void)fprintf(stderr, "strings: length less than 1\n"); |
(void)fprintf(stderr, "strings: length less than 1\n"); |
exit (1); |
exit (1); |
} |
} |
|
if (maxlen != -1 && maxlen < minlen) { |
if (!(bfr = malloc(minlen + 1))) { |
(void)fprintf(stderr, "strings: max length less than min\n"); |
|
exit (1); |
|
} |
|
bfrlen = maxlen == -1 ? minlen : maxlen; |
|
bfr = malloc(bfrlen + 1); |
|
if (!bfr) { |
(void)fprintf(stderr, "strings: %s\n", strerror(errno)); |
(void)fprintf(stderr, "strings: %s\n", strerror(errno)); |
exit(1); |
exit(1); |
} |
} |
bfr[minlen] = '\0'; |
bfr[bfrlen] = '\0'; |
file = "stdin"; |
file = "stdin"; |
do { |
do { |
if (*argv) { |
if (*argv) { |
|
|
*C++ = ch; |
*C++ = ch; |
if (++cnt < minlen) |
if (++cnt < minlen) |
continue; |
continue; |
|
if (maxlen != -1) { |
|
while ((ch = getch()) != EOF && |
|
ISSTR(ch) && cnt++ < maxlen) |
|
*C++ = ch; |
|
if (ch == EOF || |
|
(ch != 0 && ch != '\n')) { |
|
/* get all of too big string */ |
|
while ((ch = getch()) != EOF && |
|
ISSTR(ch)) |
|
; |
|
ungetc(ch, stdin); |
|
goto out; |
|
} |
|
*C = 0; |
|
} |
|
|
if (fflg) |
if (fflg) |
printf("%s:", file); |
printf("%s:", file); |
|
|
printf(offset_format, foff - minlen); |
printf(offset_format, foff - minlen); |
|
|
printf("%s", bfr); |
printf("%s", bfr); |
|
|
while ((ch = getch()) != EOF && ISSTR(ch)) |
if (maxlen == -1) |
putchar((char)ch); |
while ((ch = getch()) != EOF && |
|
ISSTR(ch)) |
|
putchar((char)ch); |
putchar('\n'); |
putchar('\n'); |
|
out: |
} |
} |
cnt = 0; |
cnt = 0; |
} |
} |