version 1.7, 2002/02/16 21:27:59 |
version 1.8, 2003/05/02 21:12:48 |
|
|
#include <ctype.h> |
#include <ctype.h> |
#include <err.h> |
#include <err.h> |
#include <string.h> |
#include <string.h> |
|
#include <unistd.h> |
|
|
void search(char *); |
static void search(char *); |
|
static void usage(void); |
|
|
|
static int matches; |
|
static int sflag; |
|
|
|
extern char *__progname; |
|
|
/* |
/* |
* what |
* what |
*/ |
*/ |
|
|
{ |
{ |
struct utsname utsn; |
struct utsname utsn; |
char match[256]; |
char match[256]; |
|
int c; |
|
|
|
matches = sflag = 0; |
|
while ((c = getopt(argc, argv, "s")) != -1) { |
|
switch (c) { |
|
case 's': |
|
sflag = 1; |
|
break; |
|
default: |
|
usage(); |
|
} |
|
} |
|
argc -= optind; |
|
argv += optind; |
|
|
if (uname(&utsn) == -1) |
if (uname(&utsn) == -1) |
err(1, "uname"); |
err(1, "uname"); |
strncpy(match, utsn.sysname, sizeof match); |
strlcpy(match, utsn.sysname, sizeof match); |
|
|
if (!*++argv) |
if (argc < 1) { |
search(match); |
usage(); |
else do { |
} else do { |
if (!freopen(*argv, "r", stdin)) { |
if (!freopen(*argv, "r", stdin)) { |
perror(*argv); |
perror(*argv); |
exit(1); |
exit(matches ? 0 : 1); |
} |
} |
printf("%s\n", *argv); |
printf("%s\n", *argv); |
search(match); |
search(match); |
} while(*++argv); |
} while(*++argv); |
exit(0); |
exit(matches ? 0 : 1); |
} |
} |
|
|
void |
static void |
search(match) |
search(match) |
char *match; |
char *match; |
{ |
{ |
|
|
while (isprint(c = getchar())) |
while (isprint(c = getchar())) |
putchar(c); |
putchar(c); |
putchar('\n'); |
putchar('\n'); |
|
matches++; |
|
if (sflag) |
|
break; |
goto loop; |
goto loop; |
} |
} |
if (c != '@') |
if (c != '@') |
|
|
goto loop; |
goto loop; |
putchar('\t'); |
putchar('\t'); |
while ((c = getchar()) != EOF && c && c != '"' && |
while ((c = getchar()) != EOF && c && c != '"' && |
c != '>' && c != '\n') |
c != '>' && c != '\n' && c != '\\') |
putchar(c); |
putchar(c); |
putchar('\n'); |
putchar('\n'); |
|
matches++; |
|
if (sflag) |
|
break; |
} |
} |
|
} |
|
|
|
static void |
|
usage() |
|
{ |
|
|
|
(void)fprintf(stderr, "usage: %s [-s] file ...\n", __progname); |
|
exit(1); |
} |
} |