diff options
Diffstat (limited to 'timetolocal.c')
| -rw-r--r-- | timetolocal.c | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/timetolocal.c b/timetolocal.c index 4b81335..f2e9c1a 100644 --- a/timetolocal.c +++ b/timetolocal.c @@ -3,6 +3,7 @@ #include <strings.h> #include <time.h> #include <stdlib.h> +#include <ctype.h> #include "tztable.h" /*it's not case sensitive @@ -37,6 +38,17 @@ davidtime strtimetoint(char *whattimeisit) { return timehoursandminutes; } +char* gethhmm(char* buffer, size_t max_size) { + time_t raw_time; + struct tm* time_info; + + time(&raw_time); + time_info = localtime(&raw_time); + + strftime(buffer, max_size, "%H:%M", time_info); + return buffer; +} + int convert(char *timey, char *zone){ time_t rawtime = time(NULL); struct tm *ptm = gmtime(&rawtime); @@ -67,13 +79,28 @@ int convert(char *timey, char *zone){ return 0; } + int main (int argc, char **argv){ - if((argc <= 2) || (argc > 3)){ - printf("%s: usage: %s [TIME (24hs)] [ZONE]\ne.g: %s 7:15 est\n", argv[0], argv[0], argv[0]); + if((argc <= 1) || (argc > 3)){ + printf("%s: usage: %s [TIME (24hs)] [ZONE]\ne.g: %s 7:15 est\n\nalso get relative times like %s [ZONE]\ne.g: %s est\n", argv[0], argv[0], argv[0], argv[0], argv[0]); exit(0); } + char timestr[16]; + gethhmm(timestr, sizeof(timestr)); + if (argc == 2) { + if (isdigit((unsigned char)argv[1][0])) { + printf("timezones don't have numbers in them\n"); + return 1; + } + if (convert(timestr, argv[1]) == -1) { + printf("%s: time zone not found, did you write it correctly?\n", argv[0]); + return 1; + } + return 0; + } + if(convert(argv [1], argv[2]) == -1){ printf("%s: time zone not found, did you write it correctly?\n", argv[0]); return 1; |
