]> code.delx.au - pulseaudio/commitdiff
add our own implementation for pa_snprintf() because NUL termination is apparently...
authorLennart Poettering <lennart@poettering.net>
Wed, 25 Jul 2007 15:49:35 +0000 (15:49 +0000)
committerLennart Poettering <lennart@poettering.net>
Wed, 25 Jul 2007 15:49:35 +0000 (15:49 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1531 fefdeb5f-60dc-0310-8127-8f9354f1896f

src/pulsecore/core-util.c
src/pulsecore/core-util.h

index e5766b2fa7abd826cae0c95b1413bec0cb4d6ce0..9879048403a01974605d798ab606ee3b1b0018ef 100644 (file)
@@ -31,7 +31,6 @@
 #include <stdlib.h>
 #include <signal.h>
 #include <errno.h>
-#include <assert.h>
 #include <string.h>
 #include <stdio.h>
 #include <fcntl.h>
@@ -83,6 +82,7 @@
 #include <pulsecore/core-error.h>
 #include <pulsecore/winsock.h>
 #include <pulsecore/log.h>
+#include <pulsecore/macro.h>
 
 #include "core-util.h"
 
@@ -1202,3 +1202,21 @@ int pa_atou(const char *s, uint32_t *ret_u) {
 
     return 0;
 }
+
+/* Same as snprintf, but guarantees NUL-termination on every platform */
+int pa_snprintf(char *str, size_t size, const char *format, ...) {
+    int ret;
+    va_list ap;
+
+    pa_assert(str);
+    pa_assert(size > 0);
+    pa_assert(format);
+    
+    va_start(ap, format);
+    ret = vsnprintf(str, size, format, ap);
+    va_end(ap);
+
+    str[size-1] = 0;
+
+    return ret;
+}
index 1d921e036c982566880543f1fe3f4c5d750067d0..a593317d8fcbf2f4fdc5964b04a9b2b590bcb638 100644 (file)
@@ -92,4 +92,6 @@ char *pa_runtime_path(const char *fn, char *s, size_t l);
 int pa_atoi(const char *s, int32_t *ret_i);
 int pa_atou(const char *s, uint32_t *ret_u);
 
+int pa_snprintf(char *str, size_t size, const char *format, ...);
+
 #endif