summaryrefslogtreecommitdiff
path: root/ustring.c
diff options
context:
space:
mode:
Diffstat (limited to 'ustring.c')
-rw-r--r--ustring.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/ustring.c b/ustring.c
index 0741dcf..a64d155 100644
--- a/ustring.c
+++ b/ustring.c
@@ -33,6 +33,21 @@ char *ustrtoa(wchar_t *s, char *outbuf, int size) {
return outbuf;
}
+char *utoa_dup(wchar_t *s) {
+ int len;
+ char *buf = NULL;
+
+ len = ustrlen(s) + 1;
+ do {
+ buf = resize(buf, len);
+ ustrtoa(s, buf, len);
+ len = (3 * len) / 2 + 1; /* this guarantees a strict increase */
+ } while ((int)strlen(buf) >= len-1);
+
+ buf = resize(buf, strlen(buf)+1);
+ return buf;
+}
+
int ustrlen(wchar_t *s) {
int len = 0;
while (*s++) len++;