diff options
author | nicm <nicm> | 2015-02-06 17:11:39 +0000 |
---|---|---|
committer | nicm <nicm> | 2015-02-06 17:11:39 +0000 |
commit | 03758a50dc21b7c77b75f689d06f81292266c20a (patch) | |
tree | cae22c5417ac2176a5e082e71705a10d0f18a992 /format.c | |
parent | 83a8e1fd20e3cbd6da38d0b4d6973cad0484c27b (diff) | |
download | rtmux-03758a50dc21b7c77b75f689d06f81292266c20a.tar.gz rtmux-03758a50dc21b7c77b75f689d06f81292266c20a.tar.bz2 rtmux-03758a50dc21b7c77b75f689d06f81292266c20a.zip |
Add format_expand_time and use it instead of status_replace where
command execution is not needed.
Diffstat (limited to 'format.c')
-rw-r--r-- | format.c | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -326,6 +326,33 @@ fail: return (-1); } +/* Expand keys in a template, passing through strftime first. */ +char * +format_expand_time(struct format_tree *ft, const char *fmt, time_t t) +{ + char *tmp, *expanded; + size_t tmplen; + struct tm *tm; + + if (fmt == NULL) + return (xstrdup("")); + + tm = localtime(&t); + + tmp = NULL; + tmplen = strlen(fmt); + + do { + tmp = xreallocarray(tmp, 2, tmplen); + tmplen *= 2; + } while (strftime(tmp, tmplen, fmt, tm) == 0); + + expanded = format_expand(ft, tmp); + free(tmp); + + return (expanded); +} + /* Expand keys in a template. */ char * format_expand(struct format_tree *ft, const char *fmt) @@ -335,6 +362,9 @@ format_expand(struct format_tree *ft, const char *fmt) size_t off, len, n; int ch, brackets; + if (fmt == NULL) + return (xstrdup("")); + len = 64; buf = xmalloc(len); off = 0; |