/* See LICENSE file for copyright and license details. */ #include #include #include #include "util.h" static void usage(void) { eprintf("usage: %s [-u] [-d time] [+format]\n", argv0); } int main(int argc, char *argv[]) { struct tm *now; struct tm *(*tztime)(const time_t *) = localtime; time_t t; char buf[BUFSIZ], *fmt = "%c", *tz = "local"; t = time(NULL); ARGBEGIN { case 'd': t = estrtonum(EARGF(usage()), 0, LLONG_MAX); break; case 'u': tztime = gmtime; tz = "gm"; break; default: usage(); } ARGEND if (argc) { if (argc != 1 || argv[0][0] != '+') usage(); else fmt = &argv[0][1]; } if (!(now = tztime(&t))) eprintf("%stime failed\n", tz); strftime(buf, sizeof(buf), fmt, now); puts(buf); return fshut(stdout, ""); }