]> arthur.barton.de Git - netatalk.git/commitdiff
Add function to set charset_name so we can make the array status
authorFrank Lahm <franklahm@googlemail.com>
Thu, 31 May 2012 10:36:54 +0000 (12:36 +0200)
committerFrank Lahm <franklahm@googlemail.com>
Thu, 31 May 2012 10:36:54 +0000 (12:36 +0200)
include/atalk/netatalk_conf.h
include/atalk/unicode.h
libatalk/unicode/charcnv.c
libatalk/util/netatalk_conf.c

index 22ecab790055392350697460373299f46ebadb2b..33459b3188b70a4c1e3732bcc5a2b808e9000d77 100644 (file)
@@ -31,6 +31,4 @@ extern struct vol *getvolbypath(AFPObj *obj, const char *path);
 extern struct vol *getvolbyname(const char *name);
 extern void       volume_free(struct vol *vol);
 extern void       volume_unlink(struct vol *volume);
-
-extern char* charset_names[];
 #endif
index 6844073b9fe5b1578e4dd2f2dacb5099adcc07be..9b05cd362131629b51cb98f45373e19d284eb036 100644 (file)
@@ -123,6 +123,7 @@ extern size_t   utf8_charlen ( char* );
 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 **);
index d3b5fee6e8bd1156b3ca57ef45ab74e05516d78d..cd2fe6e5959984f5ecc0604405eb7b498f30c926 100644 (file)
@@ -67,7 +67,7 @@
 #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' )
@@ -87,6 +87,14 @@ static const char *charset_name(charset_t ch)
     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)
index e64af0699f59b411ca98c7e28d57440cb4fd0a75..0b6e4b7b5695e7918986ce23ee9927b78d99f495 100644 (file)
@@ -1534,7 +1534,7 @@ int afp_config_parse(AFPObj *AFPObj, char *processname)
     /* 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)
@@ -1550,7 +1550,7 @@ int afp_config_parse(AFPObj *AFPObj, char *processname)
             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);
@@ -1569,13 +1569,13 @@ int afp_config_parse(AFPObj *AFPObj, char *processname)
     /* 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);