53 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| #include <time.h>
 | |
| #include "tai.h"
 | |
| #include "leapsecs.h"
 | |
| #include "caltime.h"
 | |
| 
 | |
| char line[100];
 | |
| 
 | |
| char *dayname[7] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" } ;
 | |
| 
 | |
| char out[101];
 | |
| char x[TAI_PACK];
 | |
| 
 | |
| int
 | |
| main(int argc, char **argv)
 | |
| {
 | |
|   struct tai t;
 | |
|   struct tai t2;
 | |
|   struct caltime ct;
 | |
|   struct caltime ct2;
 | |
|   int weekday;
 | |
|   int yearday;
 | |
|   int i;
 | |
|   double packerr;
 | |
| 
 | |
|   if (leapsecs_init() == -1)
 | |
|     printf("unable to init leapsecs\n");
 | |
| 
 | |
|   while (fgets(line,sizeof line,stdin))
 | |
|     if (!caltime_scan(line,&ct))
 | |
|       printf("unable to parse\n");
 | |
|     else {
 | |
|       caltime_tai(&ct,&t);
 | |
|       caltime_utc(&ct2,&t,&weekday,&yearday);
 | |
|       tai_pack(x,&t);
 | |
|       tai_unpack(x,&t2);
 | |
|       tai_sub(&t2,&t2,&t);
 | |
|       packerr = tai_approx(&t2);
 | |
|       for (i = 0;i < TAI_PACK;++i)
 | |
|         printf("%2.2lx",(unsigned long) (unsigned char) x[i]);
 | |
|       if (packerr)
 | |
|         printf(" packerr=%f",packerr);
 | |
|       printf(" %03d  %s",yearday,dayname[weekday]);
 | |
|       if (caltime_fmt((char *) 0,&ct2) + 1 < sizeof out) {
 | |
|         out[caltime_fmt(out,&ct2)] = 0;
 | |
|         printf(" %s",out);
 | |
|       }
 | |
|       printf("\n");
 | |
|     }
 | |
|   exit(0);
 | |
| }
 |