charcnv: add talloc_strdup_lower() - talloc variant of strdup_lower().
authorMichael Adam <obnox@samba.org>
Wed, 9 Apr 2008 13:36:55 +0000 (15:36 +0200)
committerMichael Adam <obnox@samba.org>
Wed, 9 Apr 2008 23:27:56 +0000 (01:27 +0200)
Michael
(This used to be commit 5f6c730cbeddd1ac2f515bd985c08ceb4ca9bc47)

source3/lib/charcnv.c

index d11620ecd776aac539be11a02dcbb376d84f6fd8..69d1db0e48c14166a605056e6937dfed7acfbd81 100644 (file)
@@ -945,6 +945,32 @@ char *strdup_lower(const char *s)
        return out_buffer;
 }
 
+char *talloc_strdup_lower(TALLOC_CTX *ctx, const char *s)
+{
+       size_t size;
+       smb_ucs2_t *buffer = NULL;
+       char *out_buffer;
+
+       size = push_ucs2_talloc(ctx, &buffer, s);
+       if (size == -1 || !buffer) {
+               TALLOC_FREE(buffer);
+               return NULL;
+       }
+
+       strlower_w(buffer);
+
+       size = pull_ucs2_talloc(ctx, &out_buffer, buffer);
+       TALLOC_FREE(buffer);
+
+       if (size == (size_t)-1) {
+               TALLOC_FREE(out_buffer);
+               return NULL;
+       }
+
+       return out_buffer;
+}
+
+
 size_t ucs2_align(const void *base_ptr, const void *p, int flags)
 {
        if (flags & (STR_NOALIGN|STR_ASCII))