summaryrefslogtreecommitdiffstats
path: root/util.c
diff options
context:
space:
mode:
authorLouis Burda <quent.burda@gmail.com>2021-12-12 23:06:54 +0100
committerLouis Burda <quent.burda@gmail.com>2021-12-20 15:31:28 +0100
commit1bd07952245e3fc8ed95af0c1eff45938098b40b (patch)
tree92f96c57337f71b7ec46125806800ba91e3acac2 /util.c
parent9fe644f0d99375ffd3011d8828f7dbd0fb103af0 (diff)
downloadtmus-1bd07952245e3fc8ed95af0c1eff45938098b40b.tar.gz
tmus-1bd07952245e3fc8ed95af0c1eff45938098b40b.zip
Added playback via libmpdclient
Diffstat (limited to 'util.c')
-rw-r--r--util.c77
1 files changed, 60 insertions, 17 deletions
diff --git a/util.c b/util.c
index 675dc3c..b74d2a2 100644
--- a/util.c
+++ b/util.c
@@ -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;
}
+