version 1.2, 1996/06/26 05:42:52 |
version 1.3, 1996/06/26 06:40:11 |
|
|
static char rcsid[] = "$OpenBSD$"; |
static char rcsid[] = "$OpenBSD$"; |
#endif /* not lint */ |
#endif /* not lint */ |
|
|
|
#include <sys/types.h> |
|
#include <sys/utsname.h> |
#include <stdio.h> |
#include <stdio.h> |
|
#include <ctype.h> |
|
|
void search __P((void)); |
void search __P((char *)); |
|
|
/* |
/* |
* what |
* what |
|
|
int argc; |
int argc; |
char **argv; |
char **argv; |
{ |
{ |
|
struct utsname utsn; |
|
char match[256]; |
|
|
|
if (uname(&utsn) == -1) |
|
err(1, "uname"); |
|
strncpy(match, utsn.sysname, sizeof match); |
|
|
if (!*++argv) |
if (!*++argv) |
search(); |
search(match); |
else do { |
else do { |
if (!freopen(*argv, "r", stdin)) { |
if (!freopen(*argv, "r", stdin)) { |
perror(*argv); |
perror(*argv); |
exit(1); |
exit(1); |
} |
} |
printf("%s\n", *argv); |
printf("%s\n", *argv); |
search(); |
search(match); |
} while(*++argv); |
} while(*++argv); |
exit(0); |
exit(0); |
} |
} |
|
|
void |
void |
search() |
search(match) |
|
char *match; |
{ |
{ |
register int c; |
register int c; |
|
int i; |
|
|
while ((c = getchar()) != EOF) { |
while ((c = getchar()) != EOF) { |
loop: if (c != '@') |
loop: if (c == '$') { |
|
for (i = 0; match[i]; i++) |
|
if ((c = getchar()) != match[i]) |
|
goto loop; |
|
printf("$%s", match); |
|
while (isprint(c = getchar())) |
|
putchar(c); |
|
putchar('\n'); |
|
goto loop; |
|
} |
|
if (c != '@') |
continue; |
continue; |
if ((c = getchar()) != '(') |
if ((c = getchar()) != '(') |
goto loop; |
goto loop; |