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

Diff for /src/usr.bin/uniq/uniq.c between version 1.30 and 1.31

version 1.30, 2021/12/24 17:59:28 version 1.31, 2022/01/01 02:20:38
Line 48 
Line 48 
 int cflag, dflag, iflag, uflag;  int cflag, dflag, iflag, uflag;
 int numchars, numfields, repeats;  int numchars, numfields, repeats;
   
 FILE    *file(char *, char *);  void     show(const char *);
 void     show(FILE *, char *);  
 char    *skip(char *);  char    *skip(char *);
 void     obsolete(char *[]);  void     obsolete(char *[]);
 __dead void     usage(void);  __dead void     usage(void);
Line 58 
Line 57 
 main(int argc, char *argv[])  main(int argc, char *argv[])
 {  {
         char *p, *prevline, *t, *thisline, *tmp;          char *p, *prevline, *t, *thisline, *tmp;
         FILE *ifp = NULL, *ofp = NULL;  
         size_t prevsize, thissize, tmpsize;          size_t prevsize, thissize, tmpsize;
         ssize_t len;          ssize_t len;
         int ch;          int ch;
Line 112 
Line 110 
         if (!dflag && !uflag)          if (!dflag && !uflag)
                 dflag = uflag = 1;                  dflag = uflag = 1;
   
         switch (argc) {          if (argc > 2)
         case 0:  
                 ifp = stdin;  
                 ofp = stdout;  
                 break;  
         case 1:  
                 ifp = file(argv[0], "r");  
                 ofp = stdout;  
                 break;  
         case 2:  
                 ifp = file(argv[0], "r");  
                 ofp = file(argv[1], "w");  
                 break;  
         default:  
                 usage();                  usage();
           if (argc >= 1 && strcmp(argv[0], "-") != 0) {
                   if (freopen(argv[0], "r", stdin) == NULL)
                           err(1, "%s", argv[0]);
         }          }
           if (argc == 2 && strcmp(argv[1], "-") != 0) {
                   if (freopen(argv[1], "w", stdout) == NULL)
                           err(1, "%s", argv[1]);
           }
   
         if (pledge("stdio", NULL) == -1)          if (pledge("stdio", NULL) == -1)
                 err(1, "pledge");                  err(1, "pledge");
   
         prevsize = 0;          prevsize = 0;
         prevline = NULL;          prevline = NULL;
         if ((len = getline(&prevline, &prevsize, ifp)) == -1) {          if ((len = getline(&prevline, &prevsize, stdin)) == -1) {
                 free(prevline);                  free(prevline);
                 if (ferror(ifp))                  if (ferror(stdin))
                         err(1, "getline");                          err(1, "getline");
                 exit(0);                  exit(0);
         }          }
Line 149 
Line 141 
   
         thissize = 0;          thissize = 0;
         thisline = NULL;          thisline = NULL;
         while ((len = getline(&thisline, &thissize, ifp)) != -1) {          while ((len = getline(&thisline, &thissize, stdin)) != -1) {
                 if (thisline[len - 1] == '\n')                  if (thisline[len - 1] == '\n')
                         thisline[len - 1] = '\0';                          thisline[len - 1] = '\0';
   
Line 161 
Line 153 
   
                 /* If different, print; set previous to new value. */                  /* If different, print; set previous to new value. */
                 if ((iflag ? strcasecmp : strcmp)(p, t)) {                  if ((iflag ? strcasecmp : strcmp)(p, t)) {
                         show(ofp, prevline);                          show(prevline);
                         tmp = prevline;                          tmp = prevline;
                         prevline = thisline;                          prevline = thisline;
                         thisline = tmp;                          thisline = tmp;
Line 176 
Line 168 
                         ++repeats;                          ++repeats;
         }          }
         free(thisline);          free(thisline);
         if (ferror(ifp))          if (ferror(stdin))
                 err(1, "getline");                  err(1, "getline");
   
         show(ofp, prevline);          show(prevline);
         free(prevline);          free(prevline);
   
         exit(0);          exit(0);
Line 191 
Line 183 
  *      of the line.   *      of the line.
  */   */
 void  void
 show(FILE *ofp, char *str)  show(const char *str)
 {  {
         if ((dflag && repeats) || (uflag && !repeats)) {          if ((dflag && repeats) || (uflag && !repeats)) {
                 if (cflag)                  if (cflag)
                         fprintf(ofp, "%4d %s\n", repeats + 1, str);                          printf("%4d %s\n", repeats + 1, str);
                 else                  else
                         fprintf(ofp, "%s\n", str);                          printf("%s\n", str);
         }          }
 }  }
   
Line 231 
Line 223 
                         len = 1;                          len = 1;
   
         return (str);          return (str);
 }  
   
 FILE *  
 file(char *name, char *mode)  
 {  
         FILE *fp;  
   
         if (strcmp(name, "-") == 0)  
                 return(*mode == 'r' ? stdin : stdout);  
         if ((fp = fopen(name, mode)) == NULL)  
                 err(1, "%s", name);  
         return (fp);  
 }  }
   
 void  void

Legend:
Removed from v.1.30  
changed lines
  Added in v.1.31