diff options
author | Lennart Poettering <lennart@poettering.net> | 2007-07-25 15:49:35 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2007-07-25 15:49:35 +0000 |
commit | 2380ad9254a410235869b18c523787071e2a71d4 (patch) | |
tree | 66396671aebeda8ff43eead5c63ff3cc15c92486 | |
parent | 9e9dc0b14d42ebe5465c5dfa63c9ba29ebbdc410 (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.c | 20 | ||||
-rw-r--r-- | src/pulsecore/core-util.h | 2 |
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 |