changeset 710:cfdaead45479

Make internalization support optional
author Felix Janda <felix.janda@posteo.de>
date Wed, 21 Nov 2012 20:38:29 +0100
parents 6164dcc7384d
children dcc6136e6659
files Config.in main.c scripts/test/wc.test toys.h toys/posix/wc.c
diffstat 5 files changed, 20 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/Config.in	Sun Nov 25 14:40:25 2012 -0600
+++ b/Config.in	Wed Nov 21 20:38:29 2012 +0100
@@ -32,6 +32,12 @@
 	  Include floating point support infrastructure and commands that
 	  require it.
 
+config TOYBOX_I18N
+	bool "Internalization support"
+	default y
+	help
+	  Add support for locales in commands.
+
 config TOYBOX_FREE
 	bool "Free memory unnecessarily"
 	default n
--- a/main.c	Sun Nov 25 14:40:25 2012 -0600
+++ b/main.c	Wed Nov 21 20:38:29 2012 +0100
@@ -101,6 +101,9 @@
   which = toy_find(argv[0]);
   if (!which) return;
   toy_init(which, argv);
+#ifdef CFG_TOYBOX_I18N
+  setlocale(LC_ALL, "");
+#endif
   toys.which->toy_main();
   exit(toys.exitval);
 }
--- a/scripts/test/wc.test	Sun Nov 25 14:40:25 2012 -0600
+++ b/scripts/test/wc.test	Wed Nov 21 20:38:29 2012 +0100
@@ -21,6 +21,8 @@
 testing "wc multiple files" "wc input - file1" \
         "1 2 3 input\n0 2 3 -\n4 5 26 file1\n5 9 32 total\n" "a\nb" "a b"
 
+optional TOYBOX_I18N
+
 #Tests for wc -m
 if printf "%s" "$LANG" | grep -q UTF-8
 then
--- a/toys.h	Sun Nov 25 14:40:25 2012 -0600
+++ b/toys.h	Wed Nov 21 20:38:29 2012 +0100
@@ -15,7 +15,6 @@
 #include <inttypes.h>
 #include <limits.h>
 #include <libgen.h>
-#include <locale.h>
 #include <math.h>
 #include <pty.h>
 #include <pwd.h>
@@ -47,8 +46,12 @@
 #include <unistd.h>
 #include <utime.h>
 #include <utmpx.h>
+
+#ifdef CFG_TOYBOX_I18N
+#include <locale.h>
 #include <wchar.h>
 #include <wctype.h>
+#endif
 
 #include "lib/lib.h"
 #include "toys/e2fs.h"
--- a/toys/posix/wc.c	Sun Nov 25 14:40:25 2012 -0600
+++ b/toys/posix/wc.c	Wed Nov 21 20:38:29 2012 +0100
@@ -48,7 +48,6 @@
 static void do_wc(int fd, char *name)
 {
   int i, len, clen=1, space;
-  wchar_t wchar;
   unsigned long word=0, lengths[]={0,0,0};
 
   for (;;) {
@@ -59,6 +58,8 @@
     }
     if (len<1) break;
     for (i=0; i<len; i+=clen) {
+#ifdef CFG_TOYBOX_I18N
+      wchar_t wchar;
       if(toys.optflags&8) {
         clen = mbrtowc(&wchar, toybuf+i, len-i, 0);
         if(clen==(size_t)(-1)) {
@@ -70,7 +71,9 @@
         if(clen==(size_t)(-2)) break;
         if(clen==0) clen=1;
         space = iswspace(wchar);
-      } else space = isspace(toybuf[i]);
+      } else
+#endif
+             space = isspace(toybuf[i]);
 
       if (toybuf[i]==10) lengths[0]++;
       if (space) word=0;
@@ -87,7 +90,6 @@
 
 void wc_main(void)
 {
-  setlocale(LC_ALL, "");
   toys.optflags |= (toys.optflags&8)>>1;
   loopfiles(toys.optargs, do_wc);
   if (toys.optc>1) show_lengths(TT.totals, "total");