Linus Torvalds | 8996702 | 2005-04-30 13:19:56 -0700 | [diff] [blame] | 1 | #include "cache.h" |
| 2 | |
Jeff King | 4f6552e | 2009-08-30 22:26:46 -0400 | [diff] [blame] | 3 | static const char *usage_msg = "\n" |
| 4 | " test-date show [time_t]...\n" |
| 5 | " test-date parse [date]...\n" |
| 6 | " test-date approxidate [date]...\n"; |
Linus Torvalds | 8996702 | 2005-04-30 13:19:56 -0700 | [diff] [blame] | 7 | |
Jeff King | 4f6552e | 2009-08-30 22:26:46 -0400 | [diff] [blame] | 8 | static void show_dates(char **argv, struct timeval *now) |
| 9 | { |
Jonathan Nieder | 7d29afd | 2012-04-23 19:30:23 +0700 | [diff] [blame] | 10 | struct strbuf buf = STRBUF_INIT; |
Jeff King | 4f6552e | 2009-08-30 22:26:46 -0400 | [diff] [blame] | 11 | |
| 12 | for (; *argv; argv++) { |
| 13 | time_t t = atoi(*argv); |
Jonathan Nieder | 7d29afd | 2012-04-23 19:30:23 +0700 | [diff] [blame] | 14 | show_date_relative(t, 0, now, &buf); |
| 15 | printf("%s -> %s\n", *argv, buf.buf); |
Jeff King | 4f6552e | 2009-08-30 22:26:46 -0400 | [diff] [blame] | 16 | } |
Jonathan Nieder | 7d29afd | 2012-04-23 19:30:23 +0700 | [diff] [blame] | 17 | strbuf_release(&buf); |
Jeff King | 4f6552e | 2009-08-30 22:26:46 -0400 | [diff] [blame] | 18 | } |
| 19 | |
| 20 | static void parse_dates(char **argv, struct timeval *now) |
| 21 | { |
| 22 | for (; *argv; argv++) { |
Linus Torvalds | 8996702 | 2005-04-30 13:19:56 -0700 | [diff] [blame] | 23 | char result[100]; |
Jeff King | d66ee04 | 2010-07-06 03:54:33 -0400 | [diff] [blame] | 24 | unsigned long t; |
Jeff King | 6b09778 | 2010-07-04 06:48:35 -0400 | [diff] [blame] | 25 | int tz; |
Linus Torvalds | 8996702 | 2005-04-30 13:19:56 -0700 | [diff] [blame] | 26 | |
Jeff King | 4f6552e | 2009-08-30 22:26:46 -0400 | [diff] [blame] | 27 | result[0] = 0; |
| 28 | parse_date(*argv, result, sizeof(result)); |
Jeff King | d66ee04 | 2010-07-06 03:54:33 -0400 | [diff] [blame] | 29 | if (sscanf(result, "%lu %d", &t, &tz) == 2) |
Jeff King | 6b09778 | 2010-07-04 06:48:35 -0400 | [diff] [blame] | 30 | printf("%s -> %s\n", |
| 31 | *argv, show_date(t, tz, DATE_ISO8601)); |
| 32 | else |
| 33 | printf("%s -> bad\n", *argv); |
Linus Torvalds | 8996702 | 2005-04-30 13:19:56 -0700 | [diff] [blame] | 34 | } |
Jeff King | 4f6552e | 2009-08-30 22:26:46 -0400 | [diff] [blame] | 35 | } |
| 36 | |
| 37 | static void parse_approxidate(char **argv, struct timeval *now) |
| 38 | { |
| 39 | for (; *argv; argv++) { |
| 40 | time_t t; |
| 41 | t = approxidate_relative(*argv, now); |
| 42 | printf("%s -> %s\n", *argv, show_date(t, 0, DATE_ISO8601)); |
| 43 | } |
| 44 | } |
| 45 | |
| 46 | int main(int argc, char **argv) |
| 47 | { |
| 48 | struct timeval now; |
| 49 | const char *x; |
| 50 | |
| 51 | x = getenv("TEST_DATE_NOW"); |
| 52 | if (x) { |
| 53 | now.tv_sec = atoi(x); |
| 54 | now.tv_usec = 0; |
| 55 | } |
| 56 | else |
| 57 | gettimeofday(&now, NULL); |
| 58 | |
| 59 | argv++; |
| 60 | if (!*argv) |
| 61 | usage(usage_msg); |
| 62 | if (!strcmp(*argv, "show")) |
| 63 | show_dates(argv+1, &now); |
| 64 | else if (!strcmp(*argv, "parse")) |
| 65 | parse_dates(argv+1, &now); |
| 66 | else if (!strcmp(*argv, "approxidate")) |
| 67 | parse_approxidate(argv+1, &now); |
| 68 | else |
| 69 | usage(usage_msg); |
Linus Torvalds | 8996702 | 2005-04-30 13:19:56 -0700 | [diff] [blame] | 70 | return 0; |
| 71 | } |