On Fri, Jun 12, 2015 at 03:54:15PM +0200, Sébastien Marie wrote:
> Here a second patch which remove the use of new_categories from
> loadlocale() function.
> 
> loadlocate() use only one element from new_categories: the current
> category we want to assign to current_categories[category].
> 
> So instead of using new_categories globally, we can pass as argument the
> locale name (locname), and used it in loadlocate() body for:
>  - check if the wanted value is already set
>  - effectively load the locale (load_locale_sub call)
>  - effectively assign the value in current_categories
> 
> -- 
> Sébastien Marie
> 

ok

> 
> Index: locale/setlocale.c
> ===================================================================
> RCS file: /cvs/src/lib/libc/locale/setlocale.c,v
> retrieving revision 1.21
> diff -u -p -r1.21 setlocale.c
> --- locale/setlocale.c        9 Jun 2015 20:04:04 -0000       1.21
> +++ locale/setlocale.c        12 Jun 2015 13:46:40 -0000
> @@ -78,7 +78,7 @@ static char current_locale_string[_LC_LA
>  static char  *currentlocale(void);
>  static void revert_to_default(int);
>  static int load_locale_sub(int, const char *);
> -static char  *loadlocale(int);
> +static char  *loadlocale(int, const char *);
>  static const char *__get_locale_env(int);
>  
>  char *
> @@ -153,11 +153,11 @@ setlocale(int category, const char *loca
>       }
>  
>       if (category)
> -             return (loadlocale(category));
> +             return (loadlocale(category, new_categories[category]));
>  
>       loadlocale_success = 0;
>       for (i = 1; i < _LC_LAST; ++i) {
> -             if (loadlocale(i) != NULL)
> +             if (loadlocale(i, new_categories[i]) != NULL)
>                       loadlocale_success = 1;
>       }
>  
> @@ -272,15 +271,14 @@ load_locale_sub(int category, const char
>  }
>  
>  static char *
> -loadlocale(int category)
> +loadlocale(int category, const char *locname)
>  {
> -     if (strcmp(new_categories[category],
> -         current_categories[category]) == 0)
> +     if (strcmp(locname, current_categories[category]) == 0)
>               return (current_categories[category]);
>  
> -     if (!load_locale_sub(category, new_categories[category])) {
> +     if (!load_locale_sub(category, locname)) {
>               (void)strlcpy(current_categories[category],
> -                 new_categories[category], 
> sizeof(current_categories[category]));
> +                 locname, sizeof(current_categories[category]));
>               return current_categories[category];
>       } else {
>               return NULL;

Reply via email to