|
Message-ID: <20170211235938.GC1520@brightrain.aerifal.cx> Date: Sat, 11 Feb 2017 18:59:38 -0500 From: Rich Felker <dalias@...c.org> To: musl@...ts.openwall.com Subject: Re: Re: a bug in bindtextdomain() and strip '.UTF-8' On Sat, Feb 11, 2017 at 02:00:56PM +0800, He X wrote: > fresh patch :) > 1. It's easier that just stopping at dot, and i think this should be > commented in the wiki or somewhere. > 2. I read your first part of reply for 20mins, but im not sure; If i > understand right, you mean, let the __locale_map* and strcut binding* be > the id-card for msgcat list instead of the long name string, not only > faster, but also more easy to construct pathname string. Yes. The values needed for the "id-card" (key) for the lookup are: 1. loc->cat[category] 2. category 3. The struct binding * active for domainname; gettextdir should be replaced with a function to lookup the binding rather than just returning the dir name. These three pointer/integer values uniquely determine the pathname(s) to try, and thus the mapped translation file to use. > But there's some > questions: > + I removed name from msgcat, i can't find its use there, is it safe? I think that's fine. > + gettextdir() is replaced by a new loop, since i need the pointer of > struct binding not only the dirname, but then, gettextdir() is only called > by bindtextdomain(), is there a need to keep it? Or we have a better way to > get the pointer of struct binding? It could be replaced with a function calle getdomainbinding that returns the struct binding * for the domain argument. Then the caller can use the returned pointer to lookup an existing mapped msgcat, or read out the ->dirname member if it needs to construct a path to map a new one. > + you said msgcat's indexed by ( struct __locale_map *, struct binding *, > category ), but i found lm(locale_map) is located by category, so if > category is different, then we can't get the same lm, so we can just > compare lm, right? If LC_TIME and LC_MESSAGES are both the same locale, then loc->cat[LC_TIME] and loc->cat[LC_MESSAGES] will both be the same pointer. Thus category also needs to be kept for the lookup (and path expansion). Does this help? I'll review the patch code separately. Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.