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

Diff for /src/usr.bin/paste/paste.c between version 1.24 and 1.25

version 1.24, 2018/08/04 16:14:03 version 1.25, 2018/08/04 16:47:05
Line 46 
Line 46 
 int delimcnt;  int delimcnt;
   
 int     tr(char *);  int     tr(char *);
 void    usage(void);  __dead void usage(void);
 void    parallel(char **);  void    parallel(char **);
 void    sequential(char **);  void    sequential(char **);
   
Line 80 
Line 80 
         if (argc == 0)          if (argc == 0)
                 usage();                  usage();
   
         if (!delim) {          if (delim == NULL) {
                 delimcnt = 1;                  delimcnt = 1;
                 delim = "\t";                  delim = "\t";
         }          }
Line 89 
Line 89 
                 sequential(argv);                  sequential(argv);
         else          else
                 parallel(argv);                  parallel(argv);
         exit(0);          return 0;
 }  }
   
 struct list {  struct list {
Line 110 
Line 110 
         int opencnt, output;          int opencnt, output;
         char ch;          char ch;
   
         for (cnt = 0; (p = *argv); ++argv, ++cnt) {          for (cnt = 0; (p = *argv) != NULL; ++argv, ++cnt) {
                 if (!(lp = malloc(sizeof(struct list))))                  if ((lp = malloc(sizeof(*lp))) == NULL)
                         err(1, "malloc");                          err(1, NULL);
   
                 if (p[0] == '-' && !p[1])                  if (p[0] == '-' && p[1] == '\0')
                         lp->fp = stdin;                          lp->fp = stdin;
                 else if (!(lp->fp = fopen(p, "r")))                  else if ((lp->fp = fopen(p, "r")) == NULL)
                         err(1, "%s", p);                          err(1, "%s", p);
                 lp->cnt = cnt;                  lp->cnt = cnt;
                 lp->name = p;                  lp->name = p;
Line 129 
Line 129 
         for (opencnt = cnt; opencnt;) {          for (opencnt = cnt; opencnt;) {
                 output = 0;                  output = 0;
                 SIMPLEQ_FOREACH(lp, &head, entries) {                  SIMPLEQ_FOREACH(lp, &head, entries) {
                         if (!lp->fp) {                          if (lp->fp == NULL) {
                                 if (output && lp->cnt &&                                  if (output && lp->cnt &&
                                     (ch = delim[(lp->cnt - 1) % delimcnt]))                                      (ch = delim[(lp->cnt - 1) % delimcnt]))
                                         putchar(ch);                                          putchar(ch);
Line 139 
Line 139 
                                 if (ferror(lp->fp))                                  if (ferror(lp->fp))
                                         err(1, "%s", lp->fp == stdin ?                                          err(1, "%s", lp->fp == stdin ?
                                             "getline" : lp->name);                                              "getline" : lp->name);
                                 if (!--opencnt)                                  if (--opencnt == 0)
                                         break;                                          break;
                                 if (lp->fp != stdin)                                  if (lp->fp != stdin)
                                         (void)fclose(lp->fp);                                          fclose(lp->fp);
                                 lp->fp = NULL;                                  lp->fp = NULL;
                                 if (output && lp->cnt &&                                  if (output && lp->cnt &&
                                     (ch = delim[(lp->cnt - 1) % delimcnt]))                                      (ch = delim[(lp->cnt - 1) % delimcnt]))
Line 180 
Line 180 
   
         line = NULL;          line = NULL;
         linesize = 0;          linesize = 0;
         for (; (p = *argv); ++argv) {          for (; (p = *argv) != NULL; ++argv) {
                 if (p[0] == '-' && !p[1])                  if (p[0] == '-' && p[1] == '\0')
                         fp = stdin;                          fp = stdin;
                 else if (!(fp = fopen(p, "r"))) {                  else if ((fp = fopen(p, "r")) == NULL) {
                         warn("%s", p);                          warn("%s", p);
                         continue;                          continue;
                 }                  }
Line 202 
Line 202 
                 if (cnt >= 0)                  if (cnt >= 0)
                         putchar('\n');                          putchar('\n');
                 if (fp != stdin)                  if (fp != stdin)
                         (void)fclose(fp);                          fclose(fp);
         }          }
         free(line);          free(line);
 }  }
Line 213 
Line 213 
         int cnt;          int cnt;
         char ch, *p;          char ch, *p;
   
         for (p = arg, cnt = 0; (ch = *p++); ++arg, ++cnt) {          for (p = arg, cnt = 0; (ch = *p++) != '\0'; ++arg, ++cnt) {
                 if (ch == '\\') {                  if (ch == '\\') {
                         switch (ch = *p++) {                          switch (ch = *p++) {
                         case 'n':                          case 'n':
Line 233 
Line 233 
                         *arg = ch;                          *arg = ch;
         }          }
   
         if (!cnt)          if (cnt == 0)
                 errx(1, "no delimiters specified");                  errx(1, "no delimiters specified");
         return (cnt);          return cnt;
 }  }
   
 void  __dead void
 usage(void)  usage(void)
 {  {
         extern char *__progname;          extern char *__progname;
         (void)fprintf(stderr, "usage: %s [-s] [-d list] file ...\n",          fprintf(stderr, "usage: %s [-s] [-d list] file ...\n", __progname);
             __progname);  
         exit(1);          exit(1);
 }  }

Legend:
Removed from v.1.24  
changed lines
  Added in v.1.25