lib/util/charset: Remove autodetection of charset from LOCALE
authorAndrew Bartlett <abartlet@samba.org>
Tue, 21 Jun 2011 23:58:59 +0000 (09:58 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 23 Jun 2011 11:47:27 +0000 (13:47 +0200)
In the past, our LOCALE would set the display charset of Samba.  The
display charset has now been removed.  This patch removes the support
code that detected the locale from the environment.  We cannot safely
have 'unix charset' follow the locale (at it creates files on disk and
entries in databases that must not vary), so this code is unused.

As an example, imagine a database is manipulated in the
administrator's locale, and then read by smbd starting up in the
system default locale.  Or smbd restarted by the administrator rather
than a startup script.  Both of these situations could corrupt
databases or filenames on disk.

Andrew Bartlett

lib/util/charset/codepoints.c
source3/configure.in
source3/wscript

index 305bfd717fad46e9dc9384c6489cde1f03277a9c..8cc33a9782ab77db2dc6b5a2aade886cb7957443 100644 (file)
@@ -217,37 +217,6 @@ static int close_iconv_handle(struct smb_iconv_handle *data)
        return 0;
 }
 
-static const char *map_locale(const char *charset)
-{
-       if (strcmp(charset, "LOCALE") != 0) {
-               return charset;
-       }
-#if defined(HAVE_NL_LANGINFO) && defined(CODESET)
-       {
-               const char *ln;
-               smb_iconv_t handle;
-
-               ln = nl_langinfo(CODESET);
-               if (ln == NULL) {
-                       DEBUG(1,("Unable to determine charset for LOCALE - using ASCII\n"));
-                       return "ASCII";
-               }
-               /* Check whether the charset name is supported
-                  by iconv */
-               handle = smb_iconv_open(ln, "UCS-2LE");
-               if (handle == (smb_iconv_t) -1) {
-                       DEBUG(5,("Locale charset '%s' unsupported, using ASCII instead\n", ln));
-                       return "ASCII";
-               } else {
-                       DEBUG(5,("Substituting charset '%s' for LOCALE\n", ln));
-                       smb_iconv_close(handle);
-               }
-               return ln;
-       }
-#endif
-       return "ASCII";
-}
-
 /*
   the old_ic is passed in here as the smb_iconv_handle structure
   is used as a global pointer in some places (eg. python modules). We
index e85d9f1f470129ff9dd58a79fa199b8932da325c..d0f841f0171dfee68210027e9d77a3e6a3d137db 100644 (file)
@@ -1091,7 +1091,7 @@ AC_CHECK_FUNCS(getpwent_r)
 AC_CHECK_FUNCS(getdents64)
 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
 AC_CHECK_FUNCS(syslog vsyslog timegm)
-AC_CHECK_FUNCS(setlocale nl_langinfo)
+AC_CHECK_FUNCS(setlocale)
 AC_CHECK_FUNCS(nanosleep,,[AC_CHECK_LIB_EXT(rt, LIBS, nanosleep)])
 AC_CHECK_FUNCS(lutimes futimes utimensat futimens)
 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
index 12bb08bfd74dbb55a12e92f7dcfd9a89f4c710da..a3a14f06074a49a9f56f227d9e6f16e93fdd8949 100644 (file)
@@ -131,7 +131,7 @@ def configure(conf):
     conf.CHECK_FUNCS('opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64')
     conf.CHECK_FUNCS('fdopendir fdopendir64')
     conf.CHECK_FUNCS('getpwent_r getdents64 setenv strcasecmp fcvt fcvtl')
-    conf.CHECK_FUNCS('syslog vsyslog timegm setlocale nl_langinfo')
+    conf.CHECK_FUNCS('syslog vsyslog timegm setlocale')
     conf.CHECK_FUNCS_IN('nanosleep', 'rt')
     conf.CHECK_FUNCS('lutimes futimes utimensat futimens')
     conf.CHECK_FUNCS('mlock munlock mlockall munlockall')
@@ -289,7 +289,7 @@ inotify_init lgetea lgetxattr listea listxattr llistea llistxattr
 llseek _llseek __llseek lremoveea lremovexattr _lseek __lseek lseek64
 lsetea lsetxattr _lstat __lstat lstat64 _lstat64 __lstat64 lutimes
 __lxstat memalign mknod mknod64 mlock mlockall munlock munlockall
-nl_langinfo _open __open open64 _open64 __open64 _opendir __opendir
+_open __open open64 _open64 __open64 _opendir __opendir
 opendir64 pathconf poll posix_fallocate posix_fallocate64
 posix_memalign prctl pread _pread __pread pread64 _pread64 __pread64
 pwrite _pwrite __pwrite pwrite64 _pwrite64