Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:misc
mksh
mksh-locale.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File mksh-locale.patch of Package mksh
diff -Ndurp mksh/main.c mksh-locale/main.c --- mksh/main.c 2017-04-28 14:14:14.000000000 +0300 +++ mksh-locale/main.c 2017-12-26 13:12:08.475502862 +0200 @@ -46,7 +46,6 @@ extern char **environ; #define MKSH_DEFAULT_TMPDIR MKSH_UNIXROOT "/tmp" #endif -static uint8_t isuc(const char *); static int main_init(int, const char *[], Source **, struct block **); void chvt_reinit(void); static void reclaim(void); @@ -198,7 +197,7 @@ static const char *empty_argv[] = { Tmksh, NULL }; -static uint8_t +uint8_t isuc(const char *cx) { char *cp, *x; uint8_t rv = 0; diff -Ndurp mksh/sh.h mksh-locale/sh.h --- mksh/sh.h 2017-08-29 16:38:58.000000000 +0300 +++ mksh-locale/sh.h 2017-12-26 13:12:08.475502862 +0200 @@ -2467,6 +2467,7 @@ void set_prompt(int, Source *); int pprompt(const char *, int); /* main.c */ int include(const char *, int, const char **, bool); +uint8_t isuc(const char *); int command(const char *, int); int shell(Source * volatile, volatile int); /* argument MUST NOT be 0 */ diff -Ndurp mksh/var.c mksh-locale/var.c --- mksh/var.c 2017-07-27 02:02:55.000000000 +0300 +++ mksh-locale/var.c 2017-12-26 13:13:12.610998130 +0200 @@ -28,6 +28,13 @@ #include <sys/sysctl.h> #endif +#if HAVE_LANGINFO_CODESET +#include <langinfo.h> +#endif +#if HAVE_SETLOCALE_CTYPE +#include <locale.h> +#endif + __RCSID("$MirOS: src/bin/mksh/var.c,v 1.220 2017/07/26 23:02:28 tg Exp $"); /*- @@ -1341,6 +1348,28 @@ setspec(struct tbl *vp) strdupx(tmpdir, s, APERM); } return; +#if HAVE_SETLOCALE_CTYPE + case V_LC_ALL: + case V_LC_CTYPE: + case V_LANG: + { + char *loc; + loc = str_val(global("LC_ALL")); + if (loc == null) + loc = str_val(global("LC_CTYPE")); + if (loc == null) + loc = str_val(global("LANG")); + if (loc == null) + return; + setlocale(LC_CTYPE, loc); +#if HAVE_LANGINFO_CODESET + if (!isuc(loc)) + loc = nl_langinfo(CODESET); +#endif + UTFMODE = isuc(loc); + } + return; +#endif /* common sub-cases */ case V_COLUMNS: case V_LINES: @@ -1458,6 +1487,28 @@ unsetspec(struct tbl *vp) tmpdir = NULL; } break; +#if HAVE_SETLOCALE_CTYPE + case V_LC_ALL: + case V_LC_CTYPE: + case V_LANG: + { + char *loc; + loc = str_val(global("LC_ALL")); + if (loc == null) + loc = str_val(global("LC_CTYPE")); + if (loc == null) + loc = str_val(global("LANG")); + if (loc == null) + break; + setlocale(LC_CTYPE, loc); +#if HAVE_LANGINFO_CODESET + if (!isuc(loc)) + loc = nl_langinfo(CODESET); +#endif + UTFMODE = isuc(loc); + } + break; +#endif case V_LINENO: case V_RANDOM: case V_SECONDS: diff -Ndurp mksh/var_spec.h mksh-locale/var_spec.h --- mksh/var_spec.h 2016-11-12 01:32:05.000000000 +0200 +++ mksh-locale/var_spec.h 2017-12-26 13:12:08.475502862 +0200 @@ -68,6 +68,12 @@ FN(TERM) FN(TMOUT) FN(TMPDIR) +#if HAVE_SETLOCALE_CTYPE +FN(LANG) +FN(LC_CTYPE) +FN(LC_ALL) +#endif + #undef FN #undef F0 #undef VARSPEC_DEFNS
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor