getenv: return NULL if empty #2574

Making an environment variable empty can be a way of unsetting it for
platforms that don't support unsetenv(). In most cases, we treat empty
variables as having been unset. For all others, use os_env_exists().
This commit is contained in:
Scott Prager
2015-05-03 09:25:53 -04:00
parent fa0f122221
commit 412d246be7
10 changed files with 67 additions and 60 deletions

View File

@@ -3025,10 +3025,11 @@ char *get_mess_lang(void)
# endif
# else
p = os_getenv("LC_ALL");
if (p == NULL || *p == NUL) {
if (p == NULL) {
p = os_getenv("LC_MESSAGES");
if (p == NULL || *p == NUL)
if (p == NULL) {
p = os_getenv("LANG");
}
}
# endif
return p;
@@ -3044,15 +3045,17 @@ static char_u *get_mess_env(void)
char_u *p;
p = (char_u *)os_getenv("LC_ALL");
if (p == NULL || *p == NUL) {
if (p == NULL) {
p = (char_u *)os_getenv("LC_MESSAGES");
if (p == NULL || *p == NUL) {
if (p == NULL) {
p = (char_u *)os_getenv("LANG");
if (p != NULL && ascii_isdigit(*p))
if (p != NULL && ascii_isdigit(*p)) {
p = NULL; /* ignore something like "1043" */
}
# ifdef HAVE_GET_LOCALE_VAL
if (p == NULL || *p == NUL)
if (p == NULL) {
p = (char_u *)get_locale_val(LC_CTYPE);
}
# endif
}
}