diff options
Diffstat (limited to 'caln/mkevent.c')
-rw-r--r-- | caln/mkevent.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/caln/mkevent.c b/caln/mkevent.c new file mode 100644 index 0000000..6c3f025 --- /dev/null +++ b/caln/mkevent.c @@ -0,0 +1,39 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> + +static void +usage() { + fprintf(stderr, "mkevent \"contents\" Tomorrow | NUM NUM [NUM]\n"); + exit(1); +} + +int +main (int argc, char **argv) { + if (argc < 3) + usage(); + + time_t ut = time(NULL); + struct tm *t = localtime(&ut); + + if ((strcmp(argv[2], "tomorrow") & strcmp(argv[2], "Tomorrow") & strcmp("Tom", argv[2])) == 0) + ut += 86400; + else { + char buf[256] = {0}; + snprintf(buf, 256, "%s %s", + (argv[2]) ? argv[2] : "", + (argv[3]) ? argv[3] : ""); + int day, month; + int ret = sscanf(buf, "%d %d", &day, &month); + + t->tm_mday = day; + t->tm_mon = month - 1; + + if (ret < 2) usage(); + + ut = mktime(t); + } + + printf("%zu|%s\n", ut, argv[1]); +} |