aboutsummaryrefslogtreecommitdiff
path: root/strftime.c
diff options
context:
space:
mode:
authorMitchell Riedstra <mitch@riedstra.dev>2023-02-04 22:02:09 -0500
committerMitchell Riedstra <mitch@riedstra.dev>2023-02-04 22:23:21 -0500
commite6bb137aa20133589079d1378ecef8f7f1e9a84f (patch)
tree3b662ec202d3032b13ac85142532519e79929da7 /strftime.c
parentcdda89a3c76fef80f29951389df88ed23d052d52 (diff)
downloadpm-e6bb137aa20133589079d1378ecef8f7f1e9a84f.tar.gz
pm-e6bb137aa20133589079d1378ecef8f7f1e9a84f.tar.xz
Switch formatting from AWK to a C program.
Due mostly to poor performance, calling out to the shell for time formatting quickly degrades in performance with a large list, this solves that problem. Yes, `gawk` has strftime, no, I don't want to use gawk.
Diffstat (limited to 'strftime.c')
-rw-r--r--strftime.c65
1 files changed, 0 insertions, 65 deletions
diff --git a/strftime.c b/strftime.c
deleted file mode 100644
index 70d171b..0000000
--- a/strftime.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2023 Mitchell Riedstra
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * A fairly basic interface to `strftime`, since dates are apparently difficult
- * to handle with regular command line utilites and the POSIX spec for `date`
- * is rather lacking.
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <errno.h>
-
-
-void
-help()
-{
- puts("strftime <fmt> [timestamp]");
- exit(1);
-}
-
-int
-main(int argc, char **argv) {
- time_t t = time(NULL);
- char **a = argv+1;
- struct tm *tm;
- char *fmt;
- char out[256] = {0};
-
- if (!*a) {
- help();
- }
-
- fmt = *a;
- a++;
-
- if (*a) {
- errno = 0;
- t = strtol(*a, NULL, 10);
- if (errno != 0) {
- perror("strtol");
- exit(1);
- }
- }
-
- tm = localtime(&t);
-
- if (strftime(out, 256, fmt, tm) == 0) {
- perror("strftime");
- exit(1);
- }
-
- puts(out);
-}