diff options
Diffstat (limited to 'source4')
-rw-r--r-- | source4/lib/charset/charcnv.c | 30 | ||||
-rw-r--r-- | source4/lib/charset/charset.h | 5 | ||||
-rw-r--r-- | source4/param/loadparm.c | 12 |
3 files changed, 22 insertions, 25 deletions
diff --git a/source4/lib/charset/charcnv.c b/source4/lib/charset/charcnv.c index d0c4461cc8..9c794202b2 100644 --- a/source4/lib/charset/charcnv.c +++ b/source4/lib/charset/charcnv.c @@ -38,20 +38,16 @@ * @sa lib/iconv.c */ -char *unix_charset = NULL; -char *dos_charset = NULL; -char *display_charset = NULL; - /** * Return the name of a charset to give to iconv(). **/ -static const char *charset_name(charset_t ch) +static const char *charset_name(struct loadparm_context *lp_ctx, charset_t ch) { switch (ch) { case CH_UTF16: return "UTF-16LE"; - case CH_UNIX: return unix_charset; - case CH_DOS: return dos_charset; - case CH_DISPLAY: return display_charset; + case CH_UNIX: return lp_unix_charset(lp_ctx); + case CH_DOS: return lp_dos_charset(lp_ctx); + case CH_DISPLAY: return lp_display_charset(lp_ctx); case CH_UTF8: return "UTF8"; case CH_UTF16BE: return "UTF-16BE"; default: @@ -109,20 +105,20 @@ static smb_iconv_t get_conv_handle(charset_t from, charset_t to) return conv_handles[from][to]; } - n1 = charset_name(from); - n2 = charset_name(to); + n1 = charset_name(global_loadparm, from); + n2 = charset_name(global_loadparm, to); conv_handles[from][to] = smb_iconv_open(n2,n1); if (conv_handles[from][to] == (smb_iconv_t)-1) { if ((from == CH_DOS || to == CH_DOS) && - strcasecmp(charset_name(CH_DOS), "ASCII") != 0) { + strcasecmp(charset_name(global_loadparm, CH_DOS), "ASCII") != 0) { DEBUG(0,("dos charset '%s' unavailable - using ASCII\n", - charset_name(CH_DOS))); + charset_name(global_loadparm, CH_DOS))); lp_set_cmdline(global_loadparm, "dos charset", "ASCII"); - n1 = charset_name(from); - n2 = charset_name(to); + n1 = charset_name(global_loadparm, from); + n2 = charset_name(global_loadparm, to); conv_handles[from][to] = smb_iconv_open(n2,n1); } @@ -176,12 +172,12 @@ _PUBLIC_ ssize_t convert_string(charset_t from, charset_t to, reason="No more room"; if (from == CH_UNIX) { DEBUG(0,("E2BIG: convert_string(%s,%s): srclen=%d destlen=%d - '%s'\n", - charset_name(from), charset_name(to), + charset_name(global_loadparm, from), charset_name(global_loadparm, to), (int)srclen, (int)destlen, (const char *)src)); } else { DEBUG(0,("E2BIG: convert_string(%s,%s): srclen=%d destlen=%d\n", - charset_name(from), charset_name(to), + charset_name(global_loadparm, from), charset_name(global_loadparm, to), (int)srclen, (int)destlen)); } return -1; @@ -223,7 +219,7 @@ _PUBLIC_ ssize_t convert_string_talloc(TALLOC_CTX *ctx, charset_t from, charset_ if (descriptor == (smb_iconv_t)-1 || descriptor == (smb_iconv_t)0) { /* conversion not supported, return -1*/ DEBUG(3, ("convert_string_talloc: conversion from %s to %s not supported!\n", - charset_name(from), charset_name(to))); + charset_name(global_loadparm, from), charset_name(global_loadparm, to))); return -1; } diff --git a/source4/lib/charset/charset.h b/source4/lib/charset/charset.h index 91408365ac..be2705100a 100644 --- a/source4/lib/charset/charset.h +++ b/source4/lib/charset/charset.h @@ -77,9 +77,4 @@ typedef struct smb_iconv_s { #define strlower(s) strlower_m(s) #define strupper(s) strupper_m(s) -/* from lib/charset */ -extern char *dos_charset; -extern char *unix_charset; -extern char *display_charset; - #endif /* __CHARSET_H__ */ diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 39b02f0ccb..a8a0a0393f 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -87,6 +87,9 @@ struct loadparm_global const char **smb_ports; char *ncalrpc_dir; + char *dos_charset; + char *unix_charset; + char *display_charset; char *szLockDir; char *szModulesDir; char *szPidDir; @@ -381,10 +384,10 @@ static struct parm_struct parm_table[] = { {"server role", P_ENUM, P_GLOBAL, &loadparm.Globals.server_role, NULL, enum_server_role, FLAG_BASIC}, - {"dos charset", P_STRING, P_GLOBAL, &dos_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"unix charset", P_STRING, P_GLOBAL, &unix_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"dos charset", P_STRING, P_GLOBAL, &loadparm.Globals.dos_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"unix charset", P_STRING, P_GLOBAL, &loadparm.Globals.unix_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"ncalrpc dir", P_STRING, P_GLOBAL, &loadparm.Globals.ncalrpc_dir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, - {"display charset", P_STRING, P_GLOBAL, &display_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, + {"display charset", P_STRING, P_GLOBAL, &loadparm.Globals.display_charset, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER}, {"comment", P_STRING, P_LOCAL, &sDefault.comment, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"path", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER}, {"directory", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_HIDE}, @@ -698,6 +701,9 @@ _PUBLIC_ FN_GLOBAL_STRING(lp_lockdir, szLockDir) _PUBLIC_ FN_GLOBAL_STRING(lp_modulesdir, szModulesDir) _PUBLIC_ FN_GLOBAL_STRING(lp_setupdir, szSetupDir) _PUBLIC_ FN_GLOBAL_STRING(lp_ncalrpc_dir, ncalrpc_dir) +_PUBLIC_ FN_GLOBAL_STRING(lp_dos_charset, dos_charset) +_PUBLIC_ FN_GLOBAL_STRING(lp_unix_charset, unix_charset) +_PUBLIC_ FN_GLOBAL_STRING(lp_display_charset, display_charset) _PUBLIC_ FN_GLOBAL_STRING(lp_piddir, szPidDir) _PUBLIC_ FN_GLOBAL_LIST(lp_dcerpc_endpoint_servers, dcerpc_ep_servers) _PUBLIC_ FN_GLOBAL_LIST(lp_server_services, server_services) |