summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2007-07-25 15:49:35 +0000
committerLennart Poettering <lennart@poettering.net>2007-07-25 15:49:35 +0000
commit2380ad9254a410235869b18c523787071e2a71d4 (patch)
tree66396671aebeda8ff43eead5c63ff3cc15c92486
parent9e9dc0b14d42ebe5465c5dfa63c9ba29ebbdc410 (diff)
add our own implementation for pa_snprintf() because NUL termination is apparently not guaranteed on windows and a couple of other libcs
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1531 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r--src/pulsecore/core-util.c20
-rw-r--r--src/pulsecore/core-util.h2
2 files changed, 21 insertions, 1 deletions
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
index e5766b2f..98790484 100644
--- a/src/pulsecore/core-util.c
+++ b/src/pulsecore/core-util.c
@@ -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;
+}
diff --git a/src/pulsecore/core-util.h b/src/pulsecore/core-util.h
index 1d921e03..a593317d 100644
--- a/src/pulsecore/core-util.h
+++ b/src/pulsecore/core-util.h
@@ -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