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

Diff for /src/usr.bin/strings/Attic/strings.c between version 1.4 and 1.5

version 1.4, 1997/09/11 11:21:54 version 1.5, 2000/02/23 19:44:08
Line 87 
Line 87 
         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;
Line 102 
Line 102 
         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':
Line 128 
Line 129 
                 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;
Line 160 
Line 164 
                 (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) {
Line 205 
Line 214 
                                 *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);
Line 213 
Line 237 
                                         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;
                 }                  }

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5