<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 21 Feb 2024 at 23:34, Karl Berry <<a href="mailto:karl@freefriends.org">karl@freefriends.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">    While LuaTEX is running if forces the following locale settings:<br>
    LC_CTYPE=C<br>
    LC_COLLATE=C<br>
    LC_NUMERIC=C<br>
<br>
No question those settings are needed, but luatex could also provide the<br>
original settings of those vars, just so programs can get the info if<br>
they want it. (LC_CTYPE_orig, or a separate table, or whatever.)<br>
<br>
Is it worth considering? Wdy(all)t? --thanks, karl.<br></blockquote><div><br></div><div>In luainit.c we have this</div><div> /*tex<br>        Get the current locale (it should be |C|) and save |LC_CTYPE|, |LC_COLLATE|<br>        and |LC_NUMERIC|. Later |luainterpreter()| will consciously use them.<br>    */<br>    old_locale = xstrdup(setlocale (LC_ALL, NULL));<br>    lc_ctype = NULL;<br>    lc_collate = NULL;<br>    lc_numeric = NULL;<br>    if (old_locale) {<br>        /*tex<br>            If |setlocale| fails here, then the state could be compromised, and<br>            we exit.<br>        */<br>        env_locale = setlocale (LC_ALL, "");<br>        if (!env_locale && !lua_only) {<br>            fprintf(stderr,"Unable to read locale data: please check the 'locale' settings of your environment for consistency. Exiting now.\n");<br>            exit(1);<br>        }<br>        tmp = setlocale (LC_CTYPE, NULL);<br>        if (tmp) {<br>            lc_ctype = xstrdup(tmp);<br>        }<br>        tmp = setlocale (LC_COLLATE, NULL);<br>        if (tmp) {<br>            lc_collate = xstrdup(tmp);<br>        }<br>        tmp = setlocale (LC_NUMERIC, NULL);<br>        if (tmp) {<br>            lc_numeric = xstrdup(tmp);<br>        }<br>        /*tex<br>            Return to the previous locale if possible, otherwise it's a serious<br>            error and we exit: we can't ensure a 'sane' locale for lua.<br>        */<br>        env_locale = setlocale (LC_ALL, old_locale);<br>        if (!env_locale) {<br>          fprintf(stderr,"Unable to restore original locale %s: exiting now.\n",old_locale);<br>          exit(1);<br>        }<br>        xfree(old_locale);<br>    } else {<br>       fprintf(stderr,"Unable to store environment locale.\n");<br>    }<br>    /*tex make sure that the locale is 'sane' (for lua) */<br>    putenv(LC_CTYPE_C);<br>    putenv(LC_COLLATE_C);<br>    putenv(LC_NUMERIC_C);<br></div><div> </div><div><br></div><div>%%test.tex</div><div>\directlua{<br>print()<br>print(status.lc_ctype,status.lc_collate,status.lc_numeric)<br>}<br>\end<br></div><div><br></div><div><br></div><div>$>luatex test.tex</div><div><br></div><div>See 10.2 The status library in luatex.pdf</div><div><br></div><div><br></div><div>--</div><div>luigi</div></div></div>