Dnia 2013-06-02, o godz. 03:29:33 Mike Frysinger napisał(a): > On Sunday 02 June 2013 03:16:53 Michał Górny wrote: > > Dnia 2013-06-02, o godz. 03:09:31 Mike Frysinger napisał(a): > > > On Sunday 02 June 2013 02:51:34 Michał Górny wrote: > > > > Dnia 2013-06-01, o godz. 23:03:20 Mike Frysinger napisał(a): > > > > > simple set of helpers to save/restore a variable in a limited section > > > > > of code > > > > > > > > > > you can see an example of it in action at the end of the file where i > > > > > need to tweak epatch (and no, doing `LC_COLLATE=C set -- ....` does > > > > > not work). > > > > > > > > Why the ugly hackery instead of proper 'local' scope? > > > > > > there's no way to undo the local thus it affects the rest of the func. > > > this makes sure the change is actually localized to where it is needed. > > > > By use of global variables and a bunch of additional code and evals. > > the implementation details of estack_* doesn't matter It's not beautiful language with proper local scopes, so it *does* matter. > > Is: > > > > local _epatch_foo=${foo} > > local foo > > ... > > foo=${_epatch_foo} > > > > really that hurtful? > > except you aren't handling edge cases (like set vs unset), and i've replicated > this pattern before (in fact, you've filed bugs where the set/unset case wasn't > handled). API 101: implement it once correctly to simplify everyone else. Edge cases matter where they actually matter. Inventing use cases just to prove we need something doesn't help anyone. And we can't implement it correctly since we're talking about bash. Bash doesn't provide means to implement it correctly. > > Also, do you really want the collation to be changed only in this one > > place? This looks weird to me. > > yes, i only want to force it here, because it's the only place where collation > matters in the func currently. So, effectively, changing it once in the beginning of the function would be simpler and wouldn't cost anything. > > > Much like fixing tiny bug and trying to > > avoid checking whether anything else is affected. > > yeah, because forcing specific behavior for an entire function is always the > correct answer. it's like telling people to export LC_ALL=C in make.conf so > they never hit locale related problems. Feel free to try that. But on yourself, not our users. Or just grep bugzie. -- Best regards, Michał Górny