zsh-workers
 help / color / mirror / code / Atom feed
* PATCH: Restore `LC_ALL' when setting `LANG'
       [not found]               ` <87boqk95we.fsf@ft.bewatermyfriend.org>
@ 2012-01-03 15:26                 ` Frank Terbeck
  2012-01-04  2:16                   ` Vincent Lefevre
  0 siblings, 1 reply; 6+ messages in thread
From: Frank Terbeck @ 2012-01-03 15:26 UTC (permalink / raw)
  To: 654225; +Cc: Michael Prokop, mbj, zsh-workers

(Cc:ing Upstream)

When setting LANG, zsh sets LC_ALL and then goes on to restore all
interesting LC_* values after that. Up to now, it did not restore LC_ALL
itself, though.

That could lead to trouble when setting LC_ALL=something-utf8-ish and
after that LANG=something-non-utf8.

This was reported in Debian bugreport #654225:

  <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=654225>

A recipe to reproduce the issue is here:

  <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=654225#65>

I think the patch below fixes the issue correctly, by restoring LC_ALL
from its parameter along the way with all the other LC_* values zsh
cares about.

(FWIW, the test-suite still passes with this change.)

Regards, Frank


---
 Src/params.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/Src/params.c b/Src/params.c
index 446cccc..6d98b8e 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -3780,6 +3780,9 @@ static struct localename {
 #ifdef LC_TIME
     {"LC_TIME", LC_TIME},
 #endif
+#ifdef LC_ALL
+    {"LC_ALL", LC_ALL},
+#endif
     {NULL, 0}
 };
 
-- 
1.7.8.rc3.17.gf56ef1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: PATCH: Restore `LC_ALL' when setting `LANG'
  2012-01-03 15:26                 ` PATCH: Restore `LC_ALL' when setting `LANG' Frank Terbeck
@ 2012-01-04  2:16                   ` Vincent Lefevre
  2012-01-04 17:30                     ` Peter Stephenson
  0 siblings, 1 reply; 6+ messages in thread
From: Vincent Lefevre @ 2012-01-04  2:16 UTC (permalink / raw)
  To: Frank Terbeck; +Cc: 654225, Michael Prokop, mbj, zsh-workers

On 2012-01-03 16:26:44 +0100, Frank Terbeck wrote:
> I think the patch below fixes the issue correctly, by restoring LC_ALL
> from its parameter along the way with all the other LC_* values zsh
> cares about.

I don't understand why zsh has anything to do with environment
variables to detect the charset (if I understood correctly).
Why not using nl_langinfo(CODESET)?

-- 
Vincent Lefèvre <vincent@vinc17.net> - Web: <http://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / Arénaire project (LIP, ENS-Lyon)


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: PATCH: Restore `LC_ALL' when setting `LANG'
  2012-01-04  2:16                   ` Vincent Lefevre
@ 2012-01-04 17:30                     ` Peter Stephenson
  2012-01-06  6:03                       ` Jun T.
  0 siblings, 1 reply; 6+ messages in thread
From: Peter Stephenson @ 2012-01-04 17:30 UTC (permalink / raw)
  To: zsh-workers; +Cc: 654225

On 2012-01-03 16:26:44 +0100, Frank Terbeck wrote:
> I think the patch below fixes the issue correctly, by restoring LC_ALL
> from its parameter along the way with all the other LC_* values zsh
> cares about.

Looks plausible, without following through all the implications.

On Wed, 4 Jan 2012 03:16:41 +0100
Vincent Lefevre <vincent@vinc17.net> wrote:
> I don't understand why zsh has anything to do with environment
> variables to detect the charset (if I understood correctly).
> Why not using nl_langinfo(CODESET)?

Intercepting the setting of environment variables is mostly to ensure
setlocale() gets run when necessary.

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: PATCH: Restore `LC_ALL' when setting `LANG'
  2012-01-04 17:30                     ` Peter Stephenson
@ 2012-01-06  6:03                       ` Jun T.
  2012-01-07 20:04                         ` Peter Stephenson
  0 siblings, 1 reply; 6+ messages in thread
From: Jun T. @ 2012-01-06  6:03 UTC (permalink / raw)
  To: zsh-workers

Instead of adding LC_ALL to lc_names[], I think it better
not calling setlocale() at all if LC_ALL is non-empty.

Index: Src/params.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/params.c,v
retrieving revision 1.175
diff -u -r1.175 params.c
--- Src/params.c	11 Aug 2011 19:32:50 -0000	1.175
+++ Src/params.c	6 Jan 2012 05:42:12 -0000
@@ -3788,6 +3788,10 @@
 setlang(char *x)
 {
     struct localename *ln;
+    char *x2;
+
+    if ((x2 = getsparam("LC_ALL")) && *x2)
+	return;
 
     /*
      * Set the global locale to the value passed, but override


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: PATCH: Restore `LC_ALL' when setting `LANG'
  2012-01-06  6:03                       ` Jun T.
@ 2012-01-07 20:04                         ` Peter Stephenson
  2012-01-07 21:41                           ` Frank Terbeck
  0 siblings, 1 reply; 6+ messages in thread
From: Peter Stephenson @ 2012-01-07 20:04 UTC (permalink / raw)
  To: zsh-workers

On Fri, 6 Jan 2012 15:03:54 +0900
"Jun T." <takimoto-j@kba.biglobe.ne.jp> wrote:
> Instead of adding LC_ALL to lc_names[], I think it better
> not calling setlocale() at all if LC_ALL is non-empty.

I can see that's a reasonably minimal change.  As long as Frank's happy
that fixes the problem, I can apply it.

-- 
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: PATCH: Restore `LC_ALL' when setting `LANG'
  2012-01-07 20:04                         ` Peter Stephenson
@ 2012-01-07 21:41                           ` Frank Terbeck
  0 siblings, 0 replies; 6+ messages in thread
From: Frank Terbeck @ 2012-01-07 21:41 UTC (permalink / raw)
  To: zsh-workers

Peter Stephenson wrote:
> On Fri, 6 Jan 2012 15:03:54 +0900
> "Jun T." <takimoto-j@kba.biglobe.ne.jp> wrote:
>> Instead of adding LC_ALL to lc_names[], I think it better
>> not calling setlocale() at all if LC_ALL is non-empty.
>
> I can see that's a reasonably minimal change.  As long as Frank's happy
> that fixes the problem, I can apply it.

I don't know if it's the better fix, but then I'm pretty ignorant about
matters of `locale'... I can confirm that Jun's patch seems to fix the
bug as well. So I don't mind either way.

Regards, Frank


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-01-07 21:48 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20120102132718.GA12143@gatsby.mbjnet.dk>
     [not found] ` <87fwfyb2if.fsf@ft.bewatermyfriend.org>
     [not found]   ` <20120102154714.GA20663@gatsby.mbjnet.dk>
     [not found]     ` <87wr9a9ely.fsf@ft.bewatermyfriend.org>
     [not found]       ` <20120103111049.GA5673@gatsby.mbjnet.dk>
     [not found]         ` <87sjjw98yl.fsf@ft.bewatermyfriend.org>
     [not found]           ` <87k458974e.fsf@ft.bewatermyfriend.org>
     [not found]             ` <2012-01-03T15-59-18@devnull.michael-prokop.at>
     [not found]               ` <87boqk95we.fsf@ft.bewatermyfriend.org>
2012-01-03 15:26                 ` PATCH: Restore `LC_ALL' when setting `LANG' Frank Terbeck
2012-01-04  2:16                   ` Vincent Lefevre
2012-01-04 17:30                     ` Peter Stephenson
2012-01-06  6:03                       ` Jun T.
2012-01-07 20:04                         ` Peter Stephenson
2012-01-07 21:41                           ` Frank Terbeck

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).