summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAli H. Fardan <raiz@firemail.cc>2016-08-28 19:27:01 +0300
committerAli H. Fardan <raiz@firemail.cc>2016-08-28 19:27:01 +0300
commit5829cee24ea0e40cbe402728d1ca2f0bfb630182 (patch)
treee77087814683ea21e0dd7601150628e5fcc3cdf1
parent94a62b864b56d8bad1fb68925dcee7c71015bc54 (diff)
used a different implementation of smprintf() imported from dwmstatus
-rw-r--r--slstatus.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/slstatus.c b/slstatus.c
index 08866d2..bc48365 100644
--- a/slstatus.c
+++ b/slstatus.c
@@ -79,17 +79,23 @@ static char *
smprintf(const char *fmt, ...)
{
va_list ap;
- char tmp[120];
- char *ret = NULL;
+ char *ret;
+ int len;
va_start(ap, fmt);
- vsnprintf(tmp, sizeof(tmp)-1, fmt, ap);
- tmp[strlen(tmp)+1] = '\0';
+ len = vsnprintf(NULL, 0, fmt, ap);
+ va_end(ap);
- if (asprintf(&ret, "%s", tmp) < 0)
- return NULL;
+ ret = malloc(++len);
+ if (ret == NULL) {
+ perror("malloc");
+ exit(1);
+ }
+ va_start(ap, fmt);
+ vsnprintf(ret, len, fmt, ap);
va_end(ap);
+
return ret;
}