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

Diff for /src/usr.bin/ts/ts.c between version 1.2 and 1.3

version 1.2, 2022/06/29 16:01:10 version 1.3, 2022/06/30 07:42:50
Line 40 
Line 40 
 {  {
         int iflag, mflag, sflag;          int iflag, mflag, sflag;
         int ch, prev;          int ch, prev;
         struct timespec rstart, start, now, elapsed;          struct timespec roff, start, now;
         struct tm *lt, tm;          struct tm *tm;
         int clock = CLOCK_REALTIME;          int clock = CLOCK_REALTIME;
   
         if (pledge("stdio", NULL) == -1)          if (pledge("stdio", NULL) == -1)
Line 88 
Line 88 
         if ((outbuf = calloc(1, bufsize)) == NULL)          if ((outbuf = calloc(1, bufsize)) == NULL)
                 err(1, NULL);                  err(1, NULL);
   
         clock_gettime(CLOCK_REALTIME, &rstart);          /* force UTC for interval calculations */
         clock_gettime(CLOCK_MONOTONIC, &start);          if (iflag || sflag)
                   if (setenv("TZ", "UTC", 1) == -1)
                           err(1, "setenv UTC");
   
           clock_gettime(CLOCK_REALTIME, &roff);
           clock_gettime(clock, &start);
           timespecsub(&roff, &start, &roff);
   
         for (prev = '\n'; (ch = getchar()) != EOF; prev = ch) {          for (prev = '\n'; (ch = getchar()) != EOF; prev = ch) {
                 if (prev == '\n') {                  if (prev == '\n') {
                         if (clock_gettime(clock, &now))                          clock_gettime(clock, &now);
                                 err(1, "clock_gettime");                          if (iflag || sflag)
                         if (iflag || sflag) {                                  timespecsub(&now, &start, &now);
                                 timespecsub(&now, &start, &elapsed);                          else if (mflag)
                                 if (gmtime_r(&elapsed.tv_sec, &tm) == NULL)                                  timespecadd(&now, &roff, &now);
                                         err(1, "gmtime_r");                          if (iflag)
                                 if (iflag)                                  clock_gettime(clock, &start);
                                         if (clock_gettime(clock, &start))                          if ((tm = localtime(&now.tv_sec)) == NULL)
                                                 err(1, "clock_gettime");                                  err(1, "localtime/gmtime");
                                 fmtfmt(&tm, elapsed.tv_nsec);                          fmtfmt(tm, now.tv_nsec);
                         } else if (mflag) {  
                                 timespecsub(&now, &start, &elapsed);  
                                 timespecadd(&rstart, &elapsed, &now);  
                                 lt = localtime(&now.tv_sec);  
                                 if (lt == NULL)  
                                         err(1, "localtime");  
                                 fmtfmt(lt, now.tv_nsec);  
                         } else {  
                                 lt = localtime(&now.tv_sec);  
                                 if (lt == NULL)  
                                         err(1, "localtime");  
                                 fmtfmt(lt, now.tv_nsec);  
                         }  
                 }                  }
                 if (putchar(ch) == EOF)                  if (putchar(ch) == EOF)
                         break;                          break;

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3