[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.1 and 1.2

version 1.1, 2022/06/29 08:39:49 version 1.2, 2022/06/29 16:01:10
Line 38 
Line 38 
 int  int
 main(int argc, char *argv[])  main(int argc, char *argv[])
 {  {
         int iflag, sflag;          int iflag, mflag, sflag;
         int ch, prev;          int ch, prev;
         struct timespec start, now, elapsed;          struct timespec rstart, start, now, elapsed;
         struct tm *lt, tm;          struct tm *lt, tm;
           int clock = CLOCK_REALTIME;
   
         if (pledge("stdio", NULL) == -1)          if (pledge("stdio", NULL) == -1)
                 err(1, "pledge");                  err(1, "pledge");
   
         iflag = sflag = 0;          iflag = mflag = sflag = 0;
   
         while ((ch = getopt(argc, argv, "is")) != -1) {          while ((ch = getopt(argc, argv, "ims")) != -1) {
                 switch (ch) {                  switch (ch) {
                 case 'i':                  case 'i':
                         iflag = 1;                          iflag = 1;
                         format = "%H:%M:%S";                          format = "%H:%M:%S";
                           clock = CLOCK_MONOTONIC;
                         break;                          break;
                   case 'm':
                           mflag = 1;
                           clock = CLOCK_MONOTONIC;
                           break;
                 case 's':                  case 's':
                         sflag = 1;                          sflag = 1;
                         format = "%H:%M:%S";                          format = "%H:%M:%S";
                           clock = CLOCK_MONOTONIC;
                         break;                          break;
                 default:                  default:
                         usage();                          usage();
Line 81 
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);
         clock_gettime(CLOCK_MONOTONIC, &start);          clock_gettime(CLOCK_MONOTONIC, &start);
   
         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))
                                   err(1, "clock_gettime");
                         if (iflag || sflag) {                          if (iflag || sflag) {
                                 if (clock_gettime(CLOCK_MONOTONIC, &now))  
                                         err(1, "clock_gettime");  
                                 timespecsub(&now, &start, &elapsed);                                  timespecsub(&now, &start, &elapsed);
                                 if (gmtime_r(&elapsed.tv_sec, &tm) == NULL)                                  if (gmtime_r(&elapsed.tv_sec, &tm) == NULL)
                                         err(1, "gmtime_r");                                          err(1, "gmtime_r");
                                 if (iflag)                                  if (iflag)
                                         clock_gettime(CLOCK_MONOTONIC, &start);                                          if (clock_gettime(clock, &start))
                                                   err(1, "clock_gettime");
                                 fmtfmt(&tm, elapsed.tv_nsec);                                  fmtfmt(&tm, elapsed.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 {                          } else {
                                 if (clock_gettime(CLOCK_REALTIME, &now))  
                                         err(1, "clock_gettime");  
                                 lt = localtime(&now.tv_sec);                                  lt = localtime(&now.tv_sec);
                                 if (lt == NULL)                                  if (lt == NULL)
                                         err(1, "localtime");                                          err(1, "localtime");
Line 115 
Line 129 
 static void __dead  static void __dead
 usage(void)  usage(void)
 {  {
         fprintf(stderr, "usage: %s [-i | -s] [format]\n", getprogname());          fprintf(stderr, "usage: %s [-i | -s] [-m] [format]\n", getprogname());
         exit(1);          exit(1);
 }  }
   

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