On 15/08/2024 11:03, Thomas Munro wrote:
Here's a new patch to add to this pile, this time for check_locale().
I also improved the error handling and comments in the other patches.
There's a similar function in initdb, check_locale_name. I wonder if that could reuse the same code.


I wonder if it would be more clear to split this into three functions:

/*
 * Get the name of the locale in "native environment",
 * like setlocale(category, NULL) does
 */
char *get_native_locale(int category);

/*
 * Return true if 'locale' is valid locale name for 'category
 */
bool check_locale(int category, const char *locale);

/*
 * Return a canonical name of given locale
 */
char *canonicalize_locale(int category, const char *locale);

        result = malloc(strlen(canonical) + 1);
        if (!result)
                goto exit;
        strcpy(result, canonical);

Could use "result = strdup(canonical)" here. Or even better, could we use palloc()/pstrdup() here, and save the caller the trouble to copy it?

--
Heikki Linnakangas
Neon (https://neon.tech)



Reply via email to