[BACK]Return to what.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / what

Diff for /src/usr.bin/what/what.c between version 1.7 and 1.8

version 1.7, 2002/02/16 21:27:59 version 1.8, 2003/05/02 21:12:48
Line 53 
Line 53 
 #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
  */   */
Line 67 
Line 74 
 {  {
         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;
 {  {
Line 101 
Line 122 
                         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 != '@')
Line 113 
Line 137 
                         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);
 }  }

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8