diff options
| author | Mitchell Riedstra <mitch@riedstra.dev> | 2023-02-04 22:02:09 -0500 |
|---|---|---|
| committer | Mitchell Riedstra <mitch@riedstra.dev> | 2023-02-04 22:23:21 -0500 |
| commit | e6bb137aa20133589079d1378ecef8f7f1e9a84f (patch) | |
| tree | 3b662ec202d3032b13ac85142532519e79929da7 /strftime.c | |
| parent | cdda89a3c76fef80f29951389df88ed23d052d52 (diff) | |
| download | pm-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.c | 65 |
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); -} |
