[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.13 and 1.14

version 1.13, 2006/08/10 22:44:17 version 1.14, 2007/09/05 21:07:53
Line 286 
Line 286 
 newfile(void)  newfile(void)
 {  {
         static char *suffix, *sufftail;          static char *suffix, *sufftail;
         static int defname;          char *sptr;
   
         if (ofd == -1) {          if (ofd == -1) {
                 if (fname[0] == '\0') {                  ofd = fileno(stdout);
                         fname[0] = 'x';                  if (*fname == '\0') {
                         suffix = fname + 1;                          *fname = 'x';   /* no name specified, use 'x' */
                         defname = 1;                          memset(fname + 1, 'a', sufflen);
                           suffix = fname;
                           sufflen++;      /* treat 'x' as part of suffix */
                 } else {                  } else {
                         suffix = fname + strlen(fname);                          suffix = fname + strlen(fname);
                         defname = 0;                          memset(suffix, 'a', sufflen);
                 }                  }
                 memset(suffix, 'a', sufflen);  
                 suffix[sufflen] = '\0';                  suffix[sufflen] = '\0';
                 sufftail = suffix + sufflen - 1;                  sufftail = suffix + sufflen - 1;
                 --sufftail[0];          /* incremented later */          } else {
                 ofd = fileno(stdout);                  for (sptr = sufftail; sptr >= suffix; sptr--) {
         }                          if (*sptr != 'z') {
                                   (*sptr)++;
         if (sufftail[0] == 'z') {  
                 int i;  
   
                 /* Increment the non-tail portion of the suffix. */  
                 for (i = sufflen - 2; i >= 0; i--) {  
                         if (suffix[i] != 'z') {  
                                 suffix[i]++;  
                                 break;                                  break;
                         }                          } else
                                   *sptr = 'a';
                 }                  }
                 if (i < 0) {                  if (sptr < suffix)
                         /* Hack to support y and z prefix if no name spec'd. */                          errx(EX_DATAERR, "too many files");
                         if (!defname || fname[0] == 'z')          }
                                 errx(EX_DATAERR, "too many files");  
                         ++fname[0];  
                         memset(suffix, 'a', sufflen);  
                 } else  
                         sufftail[0] = 'a';      /* reset tail */  
         } else  
                 ++sufftail[0];  
   
         if (!freopen(fname, "w", stdout))          if (!freopen(fname, "w", stdout))
                 err(EX_IOERR, "%s", fname);                  err(EX_IOERR, "%s", fname);

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