|
@@ -48,10 +48,13 @@ char *setlocale(int cat, const char *name)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
char *s = buf;
|
|
char *s = buf;
|
|
|
|
+ const char *part;
|
|
|
|
+ int same = 0;
|
|
for (i=0; i<LC_ALL; i++) {
|
|
for (i=0; i<LC_ALL; i++) {
|
|
const struct __locale_map *lm =
|
|
const struct __locale_map *lm =
|
|
libc.global_locale.cat[i];
|
|
libc.global_locale.cat[i];
|
|
- const char *part = lm ? lm->name : "C";
|
|
|
|
|
|
+ if (lm == libc.global_locale.cat[0]) same++;
|
|
|
|
+ part = lm ? lm->name : "C";
|
|
size_t l = strlen(part);
|
|
size_t l = strlen(part);
|
|
memcpy(s, part, l);
|
|
memcpy(s, part, l);
|
|
s[l] = ';';
|
|
s[l] = ';';
|
|
@@ -59,7 +62,7 @@ char *setlocale(int cat, const char *name)
|
|
}
|
|
}
|
|
*--s = 0;
|
|
*--s = 0;
|
|
UNLOCK(lock);
|
|
UNLOCK(lock);
|
|
- return buf;
|
|
|
|
|
|
+ return same==LC_ALL ? (char *)part : buf;
|
|
}
|
|
}
|
|
|
|
|
|
char *ret = setlocale_one_unlocked(cat, name);
|
|
char *ret = setlocale_one_unlocked(cat, name);
|