diff options
author | Andrew Bartlett <abartlet@samba.org> | 2002-03-25 07:41:42 +0000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2002-03-25 07:41:42 +0000 |
commit | ce7990b4a4f251536dd26be5a62c12711df57787 (patch) | |
tree | 4f21bc8aedca8dfa1d079c550633bb5bfc1a31dd | |
parent | 39a6b12fdc6a45cd51d3c11785bffeedd9fc78cd (diff) | |
download | samba-ce7990b4a4f251536dd26be5a62c12711df57787.tar.gz samba-ce7990b4a4f251536dd26be5a62c12711df57787.tar.xz samba-ce7990b4a4f251536dd26be5a62c12711df57787.zip |
add {push,pull}_ucs2{allocate,talloc}() functions.
Andrew Bartlett
-rw-r--r-- | source/lib/charcnv.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/source/lib/charcnv.c b/source/lib/charcnv.c index d4e46ec89a3..cdfca8eb97d 100644 --- a/source/lib/charcnv.c +++ b/source/lib/charcnv.c @@ -418,6 +418,36 @@ int push_ucs2(const void *base_ptr, void *dest, const char *src, int dest_len, i return len; } +/** + * Copy a string from a unix char* src to a UCS2 destination, allocating a buffer using talloc + * + * @param dest always set at least to NULL + * + * @retval The number of bytes occupied by the string in the destination + **/ +int push_ucs2_talloc(TALLOC_CTX *ctx, void **dest, const char *src) +{ + int src_len = strlen(src)+1; + + *dest = NULL; + return convert_string_talloc(ctx, CH_UNIX, CH_UCS2, src, src_len, dest); +} + +/** + * Copy a string from a unix char* src to a UCS2 destination, allocating a buffer + * + * @param dest always set at least to NULL + * + * @retval The number of bytes occupied by the string in the destination + **/ +int push_ucs2_allocate(void **dest, const char *src) +{ + int src_len = strlen(src)+1; + + *dest = NULL; + return convert_string_allocate(CH_UNIX, CH_UCS2, src, src_len, dest); +} + /**************************************************************************** copy a string from a char* src to a UTF-8 destination return the number of bytes occupied by the string in the destination @@ -534,6 +564,34 @@ int pull_ucs2_fstring(char *dest, const void *src) return pull_ucs2(NULL, dest, src, sizeof(fstring), -1, STR_TERMINATE); } +/** + * Copy a string from a UCS2 src to a unix char * destination, allocating a buffer using talloc + * + * @param dest always set at least to NULL + * + * @retval The number of bytes occupied by the string in the destination + **/ +int pull_ucs2_talloc(TALLOC_CTX *ctx, void **dest, const char *src) +{ + int src_len = strlen(src)+1; + *dest = NULL; + return convert_string_talloc(ctx, CH_UCS2, CH_UNIX, src, src_len, dest); +} + +/** + * Copy a string from a UCS2 src to a unix char * destination, allocating a buffer + * + * @param dest always set at least to NULL + * + * @retval The number of bytes occupied by the string in the destination + **/ +int pull_ucs2_allocate(void **dest, const char *src) +{ + int src_len = strlen(src)+1; + *dest = NULL; + return convert_string_allocate(CH_UCS2, CH_UNIX, src, src_len, dest); +} + /**************************************************************************** copy a string from a utf-8 source to a unix char* destination flags can have: |