about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--INSTALL1
-rw-r--r--Src/main.c2
-rw-r--r--Src/params.c8
-rw-r--r--Src/system.h6
-rw-r--r--acconfig.h3
-rw-r--r--configure.in11
6 files changed, 25 insertions, 6 deletions
diff --git a/INSTALL b/INSTALL
index 92399bc0a..f5c08b1c3 100644
--- a/INSTALL
+++ b/INSTALL
@@ -358,3 +358,4 @@ Features:
      function-subdirs    # if functions will be installed into subdirectories
      dynamic             # allow dynamically loaded binary modules
      lfs                 # allow configure check for large files
+     locale              # allow use of locale library
diff --git a/Src/main.c b/Src/main.c
index 762e06b90..51e929bc7 100644
--- a/Src/main.c
+++ b/Src/main.c
@@ -35,7 +35,7 @@ int
 main(int argc, char **argv)
 {
     char **t;
-#ifdef LC_ALL
+#ifdef USE_LOCALE
     setlocale(LC_ALL, "");
 #endif
 
diff --git a/Src/params.c b/Src/params.c
index 9f54084af..64aa7c865 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -146,7 +146,7 @@ IPDEF2("WORDCHARS", wordcharsgetfn, wordcharssetfn, 0),
 IPDEF2("IFS", ifsgetfn, ifssetfn, PM_DONTIMPORT),
 IPDEF2("_", underscoregetfn, nullsetfn, PM_READONLY),
 
-#ifdef LC_ALL
+#ifdef USE_LOCALE
 # define LCIPDEF(name) IPDEF2(name, strgetfn, lcsetfn, PM_UNSET)
 IPDEF2("LANG", strgetfn, langsetfn, PM_UNSET),
 IPDEF2("LC_ALL", strgetfn, lc_allsetfn, PM_UNSET),
@@ -162,7 +162,7 @@ LCIPDEF("LC_MESSAGES"),
 # ifdef LC_TIME
 LCIPDEF("LC_TIME"),
 # endif
-#endif
+#endif /* USE_LOCALE */
 
 #define IPDEF4(A,B) {NULL,A,PM_INTEGER|PM_READONLY|PM_SPECIAL,BR((void *)B),SFN(nullsetfn),GFN(intvargetfn),stdunsetfn,10,NULL,NULL,NULL,0}
 IPDEF4("!", &lastpid),
@@ -2444,7 +2444,7 @@ ifssetfn(Param pm, char *x)
 
 /* Functions to set value of special parameters `LANG' and `LC_*' */
 
-#ifdef LC_ALL
+#ifdef USE_LOCALE
 static struct localename {
     char *name;
     int category;
@@ -2511,7 +2511,7 @@ lcsetfn(Param pm, char *x)
 	if (!strcmp(ln->name, pm->nam))
 	    setlocale(ln->category, x ? x : "");
 }
-#endif
+#endif /* USE_LOCALE */
 
 /* Function to get value for special parameter `HISTSIZE' */
 
diff --git a/Src/system.h b/Src/system.h
index dbc387947..67f919bc8 100644
--- a/Src/system.h
+++ b/Src/system.h
@@ -632,3 +632,9 @@ extern short ospeed;
 #undef ESRCH
 #define ESRCH EINVAL
 #endif /* BROKEN_KILL_ESRCH */
+
+/* Can we do locale stuff? */
+#undef USE_LOCALE
+#if defined(CONFIG_LOCALE) && defined(HAVE_SETLOCALE) && defined(LC_ALL)
+# define USE_LOCALE 1
+#endif /* CONFIG_LOCALE && HAVE_SETLOCALE && LC_ALL */
diff --git a/acconfig.h b/acconfig.h
index 2e61e7bb0..ad041c4ee 100644
--- a/acconfig.h
+++ b/acconfig.h
@@ -166,6 +166,9 @@
 /* Define for Maildir support */
 #undef MAILDIR_SUPPORT
 
+/* Define if you want locale features.  By default this is defined. */
+#undef CONFIG_LOCALE
+
 /* Define to 1 if your termcap library has the ospeed variable */
 #undef HAVE_OSPEED
 /* Define to 1 if you have ospeed, but it is not defined in termcap.h */
diff --git a/configure.in b/configure.in
index e5ac216a3..b975a158c 100644
--- a/configure.in
+++ b/configure.in
@@ -201,6 +201,15 @@ fi],
 AC_DEFINE(RESTRICTED_R)
 )
 
+dnl Do you want to disable use of locale functions
+AC_ARG_ENABLE([locale],
+[  --disable-locale           turn off locale features],
+[if test x$enableval = xyes; then
+  AC_DEFINE(CONFIG_LOCALE)
+fi],
+AC_DEFINE(CONFIG_LOCALE)
+)
+
 undefine([fndir])dnl
 AC_ARG_ENABLE(fndir,
 [  --enable-fndir=DIR        where functions go (default DATADIR/zsh/functions)],
@@ -774,7 +783,7 @@ AC_CHECK_FUNCS(memcpy memmove \
               sigprocmask setuid seteuid setreuid setresuid setsid strerror \
               nis_list initgroups fchdir cap_get_proc readlink nice \
 	      getgrgid getgrnam getpwent getpwnam getpwuid setpgrp \
-	      fseeko ftello mmap munmap msync ftruncate)
+	      fseeko ftello mmap munmap msync ftruncate setlocale)
 
 dnl ---------------
 dnl CHECK FUNCTIONS