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

Diff for /src/usr.bin/grep/binary.c between version 1.16 and 1.17

version 1.16, 2010/07/02 20:48:48 version 1.17, 2011/06/20 18:14:01
Line 29 
Line 29 
 #include <ctype.h>  #include <ctype.h>
 #include <err.h>  #include <err.h>
 #include <stdio.h>  #include <stdio.h>
   #include <string.h>
 #include <zlib.h>  #include <zlib.h>
   
 #include "grep.h"  #include "grep.h"
   
 #define isbinary(ch)    (!isprint((ch)) && !isspace((ch)) && (ch) != '\b')  int
   isbinary(const char *buf, size_t n)
   {
           return (memchr(buf, '\0', n) != NULL);
   }
   
 int  int
 bin_file(FILE *f)  bin_file(FILE *f)
 {  {
         char            buf[BUFSIZ];          char            buf[BUFSIZ];
         size_t          i, m;          size_t          m;
         int             ret = 0;          int             ret = 0;
   
         if (fseek(f, 0L, SEEK_SET) == -1)          if (fseek(f, 0L, SEEK_SET) == -1)
Line 48 
Line 53 
         if ((m = fread(buf, 1, BUFSIZ, f)) == 0)          if ((m = fread(buf, 1, BUFSIZ, f)) == 0)
                 return 0;                  return 0;
   
         for (i = 0; i < m; i++)          if (isbinary(buf, m))
                 if (isbinary(buf[i])) {                  ret = 1;
                         ret = 1;  
                         break;  
                 }  
   
         rewind(f);          rewind(f);
         return ret;          return ret;
Line 63 
Line 65 
 gzbin_file(gzFile *f)  gzbin_file(gzFile *f)
 {  {
         char            buf[BUFSIZ];          char            buf[BUFSIZ];
         int             i, m;          int             m;
         int             ret = 0;          int             ret = 0;
   
         if (gzseek(f, (z_off_t)0, SEEK_SET) == -1)          if (gzseek(f, (z_off_t)0, SEEK_SET) == -1)
Line 72 
Line 74 
         if ((m = gzread(f, buf, BUFSIZ)) <= 0)          if ((m = gzread(f, buf, BUFSIZ)) <= 0)
                 return 0;                  return 0;
   
         for (i = 0; i < m; i++)          if (isbinary(buf, m))
                 if (isbinary(buf[i])) {                  ret = 1;
                         ret = 1;  
                         break;  
                 }  
   
         if (gzrewind(f) != 0)          if (gzrewind(f) != 0)
                 err(1, "gzbin_file");                  err(1, "gzbin_file");
Line 88 
Line 87 
 int  int
 mmbin_file(mmf_t *f)  mmbin_file(mmf_t *f)
 {  {
         int i;  
   
         /* XXX knows too much about mmf internals */          /* XXX knows too much about mmf internals */
         for (i = 0; i < BUFSIZ && i < f->len; i++)          return isbinary(f->base, f->len < BUFSIZ ? f->len : BUFSIZ);
                 if (isbinary(f->base[i]))  
                         return 1;  
         return 0;  
 }  }
 #endif  #endif

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.17