|
|
1.1 ! root 1: /* $Id: xptime.c,v 1.2 2008/02/23 22:18:37 rswindell Exp $ */ ! 2: ! 3: #include <stdio.h> ! 4: #include <stdlib.h> ! 5: #include <time.h> ! 6: #include <string.h> ! 7: #ifndef __unix__ ! 8: #include <dos.h> ! 9: #endif ! 10: #include <ctype.h> ! 11: #define USE_SNPRINTF /* we don't need safe_snprintf for this project */ ! 12: #include "genwrap.h" ! 13: #include "datewrap.h" ! 14: #include "xpdatetime.h" ! 15: ! 16: int main(int argc, char **argv) ! 17: { ! 18: char str[256]; ! 19: char revision[16]; ! 20: time_t t; ! 21: struct tm* tp; ! 22: struct tm tm; ! 23: int argn=1; ! 24: xpDateTime_t xpDateTime; ! 25: ! 26: printf("\n"); ! 27: DESCRIBE_COMPILER(str); ! 28: sscanf("$Revision: 1.2 $", "%*s %s", revision); ! 29: ! 30: printf("Rev %s Built " __DATE__ " " __TIME__ " with %s\n\n", revision, str); ! 31: ! 32: if(argc<2) ! 33: printf("usage: xptime [-z] <date_str || time_t>\n\n"); ! 34: ! 35: if(argc>1 && stricmp(argv[1],"-z")==0) { /* zulu/GMT/UTC timezone */ ! 36: printf("Setting timezone to Zulu/GMT/UTC\n\n"); ! 37: putenv("TZ=UTC0"); ! 38: argn++; ! 39: } ! 40: tzset(); ! 41: ! 42: if((t=checktime())!=0L) ! 43: printf("!time() result diverges from standard by: %ld seconds\n\n",t); ! 44: ! 45: printf("Current timezone: %d\n", xpTimeZone_local()); ! 46: printf("\n"); ! 47: ! 48: if(argc>argn && strlen(argv[argn]) > 10) { ! 49: xpDateTime=isoDateTimeStr_parse(argv[argn]); ! 50: t=xpDateTime_to_time(xpDateTime); ! 51: printf("Using specified date and time:\n"); ! 52: } else if(argc>argn) { ! 53: printf("Using specified time_t value:\n"); ! 54: t=strtoul(argv[argn],NULL,0); ! 55: xpDateTime=time_to_xpDateTime(t,xpTimeZone_LOCAL); ! 56: } else { ! 57: printf("Using current time:\n"); ! 58: xpDateTime=xpDateTime_now(); ! 59: t=time(NULL); ! 60: } ! 61: printf("%-8s %-10ld (0x%08lX) ISO %s\n" ! 62: ,"time_t" ! 63: ,t, t ! 64: ,xpDateTime_to_isoDateTimeStr(xpDateTime ! 65: ,NULL, " ", NULL ! 66: ,/* precision: */3 ! 67: , str, sizeof(str))); ! 68: { ! 69: const char* fmt="%-8s %.24s ISO %s\n"; ! 70: ! 71: if((tp=localtime_r(&t, &tm))==NULL) ! 72: printf("localtime() failure\n"); ! 73: else ! 74: printf(fmt ! 75: ,"local" ! 76: ,asctime(tp) ! 77: ,xpDateTime_to_isoDateTimeStr( ! 78: time_to_xpDateTime(t, xpTimeZone_LOCAL) ! 79: ,NULL, " ", NULL ! 80: ,/*precision: */0 ! 81: ,str, sizeof(str)) ! 82: ); ! 83: if((tp=gmtime_r(&t, &tm))==NULL) ! 84: printf("gmtime() failure\n"); ! 85: else ! 86: printf(fmt ! 87: ,"GMT" ! 88: ,asctime(tp) ! 89: ,xpDateTime_to_isoDateTimeStr( ! 90: gmtime_to_xpDateTime(t) ! 91: ,NULL, " ", NULL ! 92: ,/*precision: */0 ! 93: ,str, sizeof(str)) ! 94: ); ! 95: } ! 96: ! 97: return(0); ! 98: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.