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

Diff for /src/usr.bin/sort/file.c between version 1.16 and 1.17

version 1.16, 2015/04/02 12:21:18 version 1.17, 2015/04/02 12:48:28
Line 482 
Line 482 
 {  {
         FILE *file;          FILE *file;
   
         if (strcmp(fn, "-") == 0) {          if (strcmp(fn, "-") == 0)
                 return (mode && mode[0] == 'r') ? stdin : stdout;                  return (mode[0] == 'r') ? stdin : stdout;
         } else {  
                 mode_t orig_file_mask = 0;  
                 int is_tmp = file_is_tmp(fn);  
   
                 if (is_tmp && (mode[0] == 'w'))          if (file_is_tmp(fn) && (compress_program != NULL)) {
                         orig_file_mask = umask(S_IWGRP | S_IWOTH |                  char *cmd;
                             S_IRGRP | S_IROTH);  
   
                 if (is_tmp && (compress_program != NULL)) {                  fflush(stdout);
                         char *cmd;  
   
                         fflush(stdout);                  if (mode[0] == 'r')
                           sort_asprintf(&cmd, "%s -d < %s",
                               compress_program, fn);
                   else if (mode[0] == 'w')
                           sort_asprintf(&cmd, "%s > %s",
                               compress_program, fn);
                   else
                           err(2, "invalid file mode");
   
                         if (mode[0] == 'r')                  if ((file = popen(cmd, mode)) == NULL)
                                 sort_asprintf(&cmd, "%s -d < %s",                          err(2, "%s", compress_program);
                                     compress_program, fn);  
                         else if (mode[0] == 'w')  
                                 sort_asprintf(&cmd, "%s > %s",  
                                     compress_program, fn);  
                         else  
                                 err(2, "Wrong file mode");  
   
                         if ((file = popen(cmd, mode)) == NULL)                  sort_free(cmd);
                                 err(2, NULL);  
   
                         sort_free(cmd);          } else if ((file = fopen(fn, mode)) == NULL)
                   err(2, "%s", fn);
                 } else if ((file = fopen(fn, mode)) == NULL)  
                         err(2, "%s", fn);  
   
                 if (is_tmp && (mode[0] == 'w'))  
                         umask(orig_file_mask);  
         }  
   
         return file;          return file;
 }  }

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