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);
							 | 
						||
| 
								 | 
							
								}
							 |