21typedef unsigned int bool;
54 char **outbuf,
size_t *outbytesleft)
68 while (*inbytesleft > 0)
71 bufsize =
sizeof (cvtbuf);
73 if (cd->
pull (cd->
cd_pull, inbuf, inbytesleft, &bufp, &bufsize)
79 bufsize =
sizeof (cvtbuf) - bufsize;
81 if (cd->
push (cd->
cd_push, (
const char **) &bufp, &bufsize, outbuf,
93 return strcasecmp (
name,
"UCS-2LE") == 0
94 || strcasecmp (
name,
"UTF-16LE") == 0;
118 if (strcasecmp (fromcode, tocode) == 0)
134#ifdef HAVE_NATIVE_ICONV
137 ret->
cd_pull = iconv_open (
"UTF-16LE", fromcode);
138 if (ret->
cd_pull == (iconv_t) -1)
139 ret->
cd_pull = iconv_open (
"UCS-2LE", fromcode);
140 if (ret->
cd_pull != (iconv_t) -1)
141 ret->
pull = sys_iconv;
146 ret->
cd_push = iconv_open (tocode,
"UTF-16LE");
147 if (ret->
cd_push == (iconv_t) -1)
148 ret->
cd_push = iconv_open (tocode,
"UCS-2LE");
149 if (ret->
cd_push != (iconv_t) -1)
150 ret->
push = sys_iconv;
179#ifdef HAVE_NATIVE_ICONV
180 if (is_utf16 (fromcode))
187 if (is_utf16 (tocode))
205#ifdef HAVE_NATIVE_ICONV
209 iconv_close ((iconv_t) cd->
cd_pull);
211 iconv_close ((iconv_t) cd->
cd_push);
217 memset (cd, 0,
sizeof (*cd));
224 char **outbuf,
size_t *outbytesleft)
228 n = MIN (*inbytesleft, *outbytesleft);
231 memmove (*outbuf, *inbuf, n);
234 (*outbytesleft) -= n;
238 if (*inbytesleft > 0)
Unix SMB/CIFS implementation. charset defines.
int smb_iconv_close_ntlmssp(smb_iconv_t cd)
smb_iconv_t smb_iconv_open_ntlmssp(const char *tocode, const char *fromcode)
static size_t iconv_copy_ntlmssp(void *, const char **, size_t *, char **, size_t *)
static bool is_utf16_ntlmssp(const char *name)
size_t smb_iconv_ntlmssp(smb_iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
static struct charset_functions_ntlmssp * charsets
static struct charset_functions_ntlmssp * find_charset_functions_ntlmssp(const char *name)
Unix SMB/CIFS implementation. iconv memory system include wrappers.
Unix SMB/CIFS implementation.
struct _smb_iconv_t * smb_iconv_t
#define SMB_MALLOC_P(type)
size_t(* push)(void *cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
size_t(* pull)(void *cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
size_t(* direct)(void *cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
struct charset_functions_ntlmssp * next
size_t(* pull)(void *, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
size_t(* push)(void *, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)