diff options
author | Lennart Poettering <lennart@poettering.net> | 2007-08-16 13:46:32 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2007-08-16 13:46:32 +0000 |
commit | 03b0b1db7b9d20d3b0b563becda07c3ef93b85de (patch) | |
tree | 223bd297b61905099e8366fceaaf905385b74a02 | |
parent | 81cdb3798c146a577f5b362367137cc93610cba4 (diff) |
add pa_truncate_utf8() function for truncating a string and guaranteeing it stays valid UTF8 afterwards
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1673 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r-- | src/pulsecore/core-util.c | 18 | ||||
-rw-r--r-- | src/pulsecore/core-util.h | 2 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c index 165fcf3d..9d846c6d 100644 --- a/src/pulsecore/core-util.c +++ b/src/pulsecore/core-util.c @@ -78,6 +78,7 @@ #include <pulse/xmalloc.h> #include <pulse/util.h> +#include <pulse/utf8.h> #include <pulsecore/core-error.h> #include <pulsecore/winsock.h> @@ -1223,3 +1224,20 @@ int pa_snprintf(char *str, size_t size, const char *format, ...) { return ret; } + +/* Truncate the specified string, but guarantee that the string + * returned still validates as UTF8 */ +char *pa_truncate_utf8(char *c, size_t l) { + pa_assert(c); + pa_assert(pa_utf8_valid(c)); + + if (strlen(c) <= l) + return c; + + c[l] = 0; + + while (l > 0 && !pa_utf8_valid(c)) + c[--l] = 0; + + return c; +} diff --git a/src/pulsecore/core-util.h b/src/pulsecore/core-util.h index a593317d..88ed23fd 100644 --- a/src/pulsecore/core-util.h +++ b/src/pulsecore/core-util.h @@ -94,4 +94,6 @@ int pa_atou(const char *s, uint32_t *ret_u); int pa_snprintf(char *str, size_t size, const char *format, ...); +char *pa_truncate_utf8(char *c, size_t l); + #endif |