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

Diff for /src/usr.bin/split/split.c between version 1.12 and 1.13

version 1.12, 2006/08/09 22:42:08 version 1.13, 2006/08/10 22:44:17
Line 50 
Line 50 
 #include <ctype.h>  #include <ctype.h>
 #include <err.h>  #include <err.h>
 #include <fcntl.h>  #include <fcntl.h>
   #include <limits.h>
 #include <stdio.h>  #include <stdio.h>
 #include <stdlib.h>  #include <stdlib.h>
 #include <string.h>  #include <string.h>
Line 59 
Line 60 
   
 #define DEFLINE 1000                    /* Default num lines per file. */  #define DEFLINE 1000                    /* Default num lines per file. */
   
 long     bytecnt;                       /* Byte count to split on. */  ssize_t  bytecnt;                       /* Byte count to split on. */
 long     numlines;                      /* Line count to split on. */  long     numlines;                      /* Line count to split on. */
 int      file_open;                     /* If a file open. */  int      file_open;                     /* If a file open. */
 int      ifd = -1, ofd = -1;            /* Input/output file descriptors. */  int      ifd = -1, ofd = -1;            /* Input/output file descriptors. */
Line 72 
Line 73 
 void newfile(void);  void newfile(void);
 void split1(void);  void split1(void);
 void split2(void);  void split2(void);
 void usage(void);  __dead void usage(void);
   
 int  int
 main(int argc, char *argv[])  main(int argc, char *argv[])
 {  {
         int ch;          int ch, scale;
         char *ep, *p;          char *ep, *p;
         const char *errstr;          const char *errstr;
   
Line 117 
Line 118 
                                 errx(EX_USAGE,                                  errx(EX_USAGE,
                                     "%s: illegal byte count", optarg);                                      "%s: illegal byte count", optarg);
                         if (*ep == 'k')                          if (*ep == 'k')
                                 bytecnt *= 1024;                                  scale = 1024;
                         else if (*ep == 'm')                          else if (*ep == 'm')
                                 bytecnt *= 1048576;                                  scale = 1048576;
                           else
                                   scale = 1;
                           if (bytecnt > SSIZE_MAX / scale)
                                   errx(EX_USAGE, "%s: byte count too large",
                                       optarg);
                           bytecnt *= scale;
                         break;                          break;
                 case 'p' :      /* pattern matching. */                  case 'p' :      /* pattern matching. */
                         if (regcomp(&rgx, optarg, REG_EXTENDED|REG_NOSUB) != 0)                          if (regcomp(&rgx, optarg, REG_EXTENDED|REG_NOSUB) != 0)
Line 180 
Line 187 
 void  void
 split1(void)  split1(void)
 {  {
         long bcnt;          ssize_t bcnt, dist, len;
         int dist, len;  
         char *C;          char *C;
   
         for (bcnt = 0;;)          for (bcnt = 0;;)
Line 202 
Line 208 
                                 for (C = bfr + dist; len >= bytecnt;                                  for (C = bfr + dist; len >= bytecnt;
                                     len -= bytecnt, C += bytecnt) {                                      len -= bytecnt, C += bytecnt) {
                                         newfile();                                          newfile();
                                         if (write(ofd,                                          if (write(ofd, C, bytecnt) != bytecnt)
                                             C, (int)bytecnt) != bytecnt)  
                                                 err(EX_IOERR, "write");                                                  err(EX_IOERR, "write");
                                 }                                  }
                                 if (len != 0) {                                  if (len != 0) {
Line 325 
Line 330 
         file_open = 1;          file_open = 1;
 }  }
   
 void  __dead void
 usage(void)  usage(void)
 {  {
         extern char *__progname;          extern char *__progname;

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.13