add pa_truncate_utf8() function for truncating a string and guaranteeing it stays...
authorLennart Poettering <lennart@poettering.net>
Thu, 16 Aug 2007 13:46:32 +0000 (13:46 +0000)
committerLennart Poettering <lennart@poettering.net>
Thu, 16 Aug 2007 13:46:32 +0000 (13:46 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1673 fefdeb5f-60dc-0310-8127-8f9354f1896f

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

index 165fcf3..9d846c6 100644 (file)
@@ -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;
+}
index a593317..88ed23f 100644 (file)
@@ -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