diff options
author | Thomas Voss <thomas.voss@humanwave.nl> | 2025-09-11 10:35:50 +0200 |
---|---|---|
committer | Thomas Voss <thomas.voss@humanwave.nl> | 2025-09-11 10:35:50 +0200 |
commit | fffb8f9dc2802401645a14823702abd6d9df679a (patch) | |
tree | e67ff5feb3976fdbc86340a79445ec944eba34a5 /main.c | |
parent | 207515bc705f8bb7b2951e5986492b4b4b0ea45f (diff) |
Support multiple format arguments
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 25 |
1 files changed, 14 insertions, 11 deletions
@@ -30,7 +30,7 @@ time_t syncs(time_t), syncm(time_t), synch(time_t); usage(const char *argv0) { fprintf(stderr, - _("Usage: %s [-i interval] [format]\n" + _("Usage: %s [-i interval] [format ...]\n" " %s -h\n"), argv0, argv0); exit(EXIT_FAILURE); @@ -45,7 +45,7 @@ main(int argc, char **argv) char interval = 's'; const char *argv0 = basename(argv[0]); - const char *dfmt = "%c", *optstr = "hi:"; + const char *optstr = "hi:"; static struct option longopts[] = { {"help", no_argument, nullptr, 'h'}, {"interval", required_argument, nullptr, 'i'}, @@ -78,10 +78,10 @@ main(int argc, char **argv) argc -= optind; argv += optind; - if (argc > 1) - usage(argv0); - if (argc != 0) - dfmt = argv[0]; + if (argc == 0) { + argc = 1; + argv = (char *[]){"%c"}; + } time_t (*sync)(time_t) = interval == 's' ? syncs @@ -95,11 +95,14 @@ main(int argc, char **argv) warn(_("failed to get the time")); struct tm *tm = localtime(&now.tv_sec); - char buf[256]; - size_t n = strftime(buf, sizeof(buf), dfmt, tm); - if (n == 0) - warnx(_("buffer too small")); - puts(buf); + for (int i = 0; i < argc; i++) { + char buf[256]; /* TODO: Make dynamic */ + size_t n = strftime(buf, sizeof(buf), argv[i], tm); + if (n == 0) + warnx(_("buffer too small")); + fputs(buf, stdout); + } + putchar('\n'); if (clock_gettime(CLOCK_REALTIME, &then) == -1) warn(_("failed to get the time")); |