Mercurial > hg > toybox
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");