**/
static const char *charset_name(charset_t ch)
{
- const char *ret = NULL;
-
- if (ch == CH_UTF16LE) ret = "UTF-16LE";
- else if (ch == CH_UTF16BE) ret = "UTF-16BE";
- else if (ch == CH_UNIX) ret = lp_unix_charset();
- else if (ch == CH_DOS) ret = lp_dos_charset();
- else if (ch == CH_DISPLAY) ret = lp_display_charset();
- else if (ch == CH_UTF8) ret = "UTF8";
+ const char *ret;
+
+ switch (ch) {
+ case CH_UTF16LE:
+ ret = "UTF-16LE";
+ break;
+ case CH_UTF16BE:
+ ret = "UTF-16BE";
+ break;
+ case CH_UNIX:
+ ret = lp_unix_charset();
+ break;
+ case CH_DOS:
+ ret = lp_dos_charset();
+ break;
+ case CH_DISPLAY:
+ ret = lp_display_charset();
+ break;
+ case CH_UTF8:
+ ret = "UTF8";
+ break;
+ default:
+ ret = NULL;
+ }
#if defined(HAVE_NL_LANGINFO) && defined(CODESET)
if (ret && !strcmp(ret, "LOCALE")) {
return false;
}
if (srclen == 0) {
- ob = ((ctx != NULL) ? talloc_strdup(ctx, "") : SMB_STRDUP(""));
+ ob = talloc_strdup(ctx, "");
if (ob == NULL) {
errno = ENOMEM;
return false;
/* wrapped ! abort. */
if (!conv_silent)
DEBUG(0, ("convert_string_talloc: destlen wrapped !\n"));
- if (!ctx)
- SAFE_FREE(outbuf);
+ TALLOC_FREE(outbuf);
errno = EOPNOTSUPP;
return false;
} else {
size_t size;
smb_ucs2_t *buffer;
- if (!push_ucs2_talloc(NULL, &buffer, src, &size)) {
+ if (!push_ucs2_talloc(talloc_tos(), &buffer, src, &size)) {
return (size_t)-1;
}
if (!strupper_w(buffer) && (dest == src)) {
- free(buffer);
+ TALLOC_FREE(buffer);
return srclen;
}
size_t size;
smb_ucs2_t *buffer = NULL;
- if (!convert_string_talloc(NULL, CH_UNIX, CH_UTF16LE, src, srclen,
+ if (!convert_string_talloc(talloc_tos(), CH_UNIX, CH_UTF16LE, src, srclen,
(void **)(void *)&buffer, &size,
True))
{
smb_ucs2_t *buffer;
conv_silent = True;
- if (!push_ucs2_talloc(NULL, &buffer, src, &buffer_len)) {
+ if (!push_ucs2_talloc(talloc_tos(), &buffer, src, &buffer_len)) {
smb_panic("failed to create UCS2 buffer");
}
/**
* Copy a string from a dos codepage source to a unix char* destination.
- Talloc version.
- Uses malloc if TALLOC_CTX is NULL (this is a bad interface and
- needs fixing. JRA).
+ * Talloc version.
*
* The resulting string in "dest" is always null terminated.
*
}
if (flags & STR_UPPER) {
- tmpbuf = strupper_talloc(NULL, src);
+ tmpbuf = strupper_talloc(talloc_tos(), src);
if (!tmpbuf) {
return (size_t)-1;
}
if (!(flags & STR_ASCII) && \
(flags & STR_UNICODE)) {
ret = push_ucs2(NULL, dest, src, dest_len, flags);
+ } else {
+ ret = push_ascii(dest, src, dest_len, flags);
}
- ret = push_ascii(dest, src, dest_len, flags);
if (ret == (size_t)-1) {
return -1;
}