diff options
Diffstat (limited to 'src/shared')
-rw-r--r-- | src/shared/locale-util.c | 20 | ||||
-rw-r--r-- | src/shared/locale-util.h | 25 |
2 files changed, 45 insertions, 0 deletions
diff --git a/src/shared/locale-util.c b/src/shared/locale-util.c index 68851ae13d..d5eaff3d9e 100644 --- a/src/shared/locale-util.c +++ b/src/shared/locale-util.c @@ -25,6 +25,7 @@ #include "util.h" #include "utf8.h" #include "strv.h" +#include "util.h" #include "locale-util.h" @@ -203,3 +204,22 @@ bool locale_is_valid(const char *name) { return true; } + +static const char * const locale_variable_table[_VARIABLE_LC_MAX] = { + [VARIABLE_LANG] = "LANG", + [VARIABLE_LANGUAGE] = "LANGUAGE", + [VARIABLE_LC_CTYPE] = "LC_CTYPE", + [VARIABLE_LC_NUMERIC] = "LC_NUMERIC", + [VARIABLE_LC_TIME] = "LC_TIME", + [VARIABLE_LC_COLLATE] = "LC_COLLATE", + [VARIABLE_LC_MONETARY] = "LC_MONETARY", + [VARIABLE_LC_MESSAGES] = "LC_MESSAGES", + [VARIABLE_LC_PAPER] = "LC_PAPER", + [VARIABLE_LC_NAME] = "LC_NAME", + [VARIABLE_LC_ADDRESS] = "LC_ADDRESS", + [VARIABLE_LC_TELEPHONE] = "LC_TELEPHONE", + [VARIABLE_LC_MEASUREMENT] = "LC_MEASUREMENT", + [VARIABLE_LC_IDENTIFICATION] = "LC_IDENTIFICATION" +}; + +DEFINE_STRING_TABLE_LOOKUP(locale_variable, LocaleVariable); diff --git a/src/shared/locale-util.h b/src/shared/locale-util.h index 7be9af2b4e..d7a3e4fae6 100644 --- a/src/shared/locale-util.h +++ b/src/shared/locale-util.h @@ -21,5 +21,30 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +typedef enum LocaleVariable { + /* We don't list LC_ALL here on purpose. People should be + * using LANG instead. */ + + VARIABLE_LANG, + VARIABLE_LANGUAGE, + VARIABLE_LC_CTYPE, + VARIABLE_LC_NUMERIC, + VARIABLE_LC_TIME, + VARIABLE_LC_COLLATE, + VARIABLE_LC_MONETARY, + VARIABLE_LC_MESSAGES, + VARIABLE_LC_PAPER, + VARIABLE_LC_NAME, + VARIABLE_LC_ADDRESS, + VARIABLE_LC_TELEPHONE, + VARIABLE_LC_MEASUREMENT, + VARIABLE_LC_IDENTIFICATION, + _VARIABLE_LC_MAX, + _VARIABLE_LC_INVALID = -1 +} LocaleVariable; + int get_locales(char ***l); bool locale_is_valid(const char *name); + +const char* locale_variable_to_string(LocaleVariable i) _const_; +LocaleVariable locale_variable_from_string(const char *s) _pure_; |