return pull_ascii(dest, src, dest_len, sizeof(nstring), STR_TERMINATE);
}
-/**
- Copy a string from a char* src to a UTF-8 destination.
- Return the number of bytes occupied by the string in the destination
- Flags can have:
- STR_TERMINATE means include the null termination
- STR_UPPER means uppercase in the destination
- dest_len is the maximum length allowed in the destination. If dest_len
- is -1 then no maxiumum is used.
-**/
-
-static size_t push_utf8(void *dest, const char *src, size_t dest_len, int flags)
-{
- size_t src_len = 0;
- size_t size = 0;
- bool ret;
- char *tmpbuf = NULL;
-
- if (dest_len == (size_t)-1) {
- /* No longer allow dest_len of -1. */
- smb_panic("push_utf8 - invalid dest_len of -1");
- }
-
- if (flags & STR_UPPER) {
- tmpbuf = strupper_talloc(talloc_tos(), src);
- if (!tmpbuf) {
- return (size_t)-1;
- }
- src = tmpbuf;
- src_len = strlen(src);
- }
-
- src_len = strlen(src);
- if (flags & STR_TERMINATE) {
- src_len++;
- }
-
- ret = convert_string(CH_UNIX, CH_UTF8, src, src_len, dest, dest_len, &size);
- TALLOC_FREE(tmpbuf);
- return ret ? size : (size_t)-1;
-}
-
-size_t push_utf8_fstring(void *dest, const char *src)
-{
- return push_utf8(dest, src, sizeof(fstring), STR_TERMINATE);
-}
-
-size_t pull_ucs2_fstring(char *dest, const void *src)
-{
- return pull_ucs2(NULL, dest, src, sizeof(fstring), -1, STR_TERMINATE);
-}