diff options
| author | Louis Burda <quent.burda@gmail.com> | 2021-12-12 23:06:54 +0100 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2021-12-20 15:31:28 +0100 |
| commit | 1bd07952245e3fc8ed95af0c1eff45938098b40b (patch) | |
| tree | 92f96c57337f71b7ec46125806800ba91e3acac2 /util.c | |
| parent | 9fe644f0d99375ffd3011d8828f7dbd0fb103af0 (diff) | |
| download | tmus-1bd07952245e3fc8ed95af0c1eff45938098b40b.tar.gz tmus-1bd07952245e3fc8ed95af0c1eff45938098b40b.zip | |
Added playback via libmpdclient
Diffstat (limited to 'util.c')
| -rw-r--r-- | util.c | 77 |
1 files changed, 60 insertions, 17 deletions
@@ -47,6 +47,52 @@ assert(int cond, const char *file, int line, const char *condstr) } char * +aprintf(const char *fmtstr, ...) +{ + va_list ap, cpy; + size_t size; + char *str; + + va_copy(cpy, ap); + + va_start(ap, fmtstr); + size = vsnprintf(NULL, 0, fmtstr, ap); + va_end(ap); + + str = malloc(size + 1); + ASSERT(str != NULL); + + va_start(cpy, fmtstr); + vsnprintf(str, size + 1, fmtstr, cpy); + va_end(cpy); + + return str; +} + +char * +appendstrf(char *alloc, const char *fmtstr, ...) +{ + va_list ap, cpy; + size_t size, prevlen; + + va_copy(cpy, ap); + + va_start(ap, fmtstr); + size = vsnprintf(NULL, 0, fmtstr, ap); + va_end(ap); + + prevlen = alloc ? strlen(alloc) : 0; + alloc = realloc(alloc, prevlen + size + 1); + ASSERT(alloc != NULL); + + va_start(cpy, fmtstr); + vsnprintf(alloc + prevlen, size + 1, fmtstr, cpy); + va_end(cpy); + + return alloc; +} + +char * sanitized(const char *instr) { const char *p; @@ -65,25 +111,22 @@ sanitized(const char *instr) return clean; } -char * -aprintf(const char *fmtstr, ...) +const char * +timestr(unsigned int secs) { - va_list ap, cpy; - size_t size; - char *str; + static char buf[16]; + unsigned int mins, hours; - va_copy(cpy, ap); - - va_start(ap, fmtstr); - size = vsnprintf(NULL, 0, fmtstr, ap); - va_end(ap); - - str = malloc(size + 1); - ASSERT(str != NULL); + hours = secs / 3600; + mins = secs / 60 % 60; + secs = secs % 60; - va_start(cpy, fmtstr); - vsnprintf(str, size + 1, fmtstr, cpy); - va_end(cpy); + if (hours) { + snprintf(buf, sizeof(buf), "%02u:%02u:%02u", hours, mins, secs); + } else { + snprintf(buf, sizeof(buf), "%02u:%02u", mins, secs); + } - return str; + return buf; } + |
