/* See LICENSE file for copyright and license details. */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>

#include "util.h"

static void
usage(void)
{
	eprintf("usage: %s [-u] [-d format] [+FORMAT]\n", argv0);
}

int
main(int argc, char *argv[])
{
	char buf[BUFSIZ];
	char *fmt = "%c";
	struct tm *now = NULL;
	struct tm *(*tztime)(const time_t *) = localtime;
	const char *tz = "local";
	time_t t;

	t = time(NULL);
	ARGBEGIN {
	case 'd':
		t = estrtol(EARGF(usage()), 0);
		break;
	case 'u':
		tztime = gmtime;
		tz = "gm";
		break;
	default:
		usage();
	} ARGEND;
	if (argc > 0 && argv[0][0] == '+')
		fmt = &argv[0][1];
	if (!(now = tztime(&t)))
		eprintf("%stime failed\n", tz);

	strftime(buf, sizeof buf, fmt, now);
	puts(buf);

	return 0;
}