extern size_t utf8_strlen_validate ( char *);
/* from charcnv.c */
+extern int set_charset_name(charset_t, const char *);
extern void init_iconv (void);
extern size_t convert_string (charset_t, charset_t, void const *, size_t, void *, size_t);
extern size_t convert_string_allocate (charset_t, charset_t, void const *, size_t, char **);
#define CHECK_FLAGS(a,b) (((a)!=NULL) ? (*(a) & (b)) : 0 )
static atalk_iconv_t conv_handles[MAX_CHARSETS][MAX_CHARSETS];
-char* charset_names[MAX_CHARSETS];
+static char* charset_names[MAX_CHARSETS];
static struct charset_functions* charsets[MAX_CHARSETS];
static char hexdig[] = "0123456789abcdef";
#define hextoint( c ) ( isdigit( c ) ? c - '0' : c + 10 - 'a' )
return ret;
}
+int set_charset_name(charset_t ch, const char *name)
+{
+ if (ch >= NUM_CHARSETS)
+ return -1;
+ charset_names[ch] = strdup(name);
+ return 0;
+}
+
static struct charset_functions* get_charset_functions (charset_t ch)
{
if (charsets[ch] != NULL)
/* unix charset is in [G] only */
if (!(p = iniparser_getstring(config, INISEC_GLOBAL, "unix charset", NULL))) {
options->unixcodepage = strdup("UTF8");
- charset_names[CH_UNIX] = strdup("UTF8");
+ set_charset_name(CH_UNIX, "UTF8");
} else {
if (strcasecmp(p, "LOCALE") == 0) {
#if defined(CODESET)
p = strdup("UTF8");
}
options->unixcodepage = strdup(p);
- charset_names[CH_UNIX] = strdup(p);
+ set_charset_name(CH_UNIX, p);
}
options->unixcharset = CH_UNIX;
LOG(log_debug, logtype_afpd, "Global unix charset is %s", options->unixcodepage);
/* mac charset is in [G] and [V] */
if (!(p = iniparser_getstring(config, INISEC_GLOBAL, "mac charset", NULL))) {
options->maccodepage = strdup("MAC_ROMAN");
- charset_names[CH_MAC] = strdup("MAC_ROMAN");
+ set_charset_name(CH_MAC, "MAC_ROMAN");
} else {
if (strncasecmp(p, "MAC", 3) != 0) {
LOG(log_warning, logtype_afpd, "Is '%s' really mac charset? ", p);
}
options->maccodepage = strdup(p);
- charset_names[CH_MAC] = strdup(p);
+ set_charset_name(CH_MAC, p);
}
options->maccharset = CH_MAC;
LOG(log_debug, logtype_afpd, "Global mac charset is %s", options->maccodepage);