diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libc/locale/setlocale.3 | 2 | ||||
-rw-r--r-- | lib/libc/locale/setlocale.c | 23 |
2 files changed, 13 insertions, 12 deletions
diff --git a/lib/libc/locale/setlocale.3 b/lib/libc/locale/setlocale.3 index 18db81120cd9..7494f2d06b96 100644 --- a/lib/libc/locale/setlocale.3 +++ b/lib/libc/locale/setlocale.3 @@ -88,6 +88,8 @@ alphabetic or non-alphabetic characters, and so on. The real work is done by the .Fn setrunelocale function. +.It Dv LC_MESSAGES +Set a locale for message catalogs. .It Dv LC_MONETARY Set a locale for formatting monetary values; this affects the diff --git a/lib/libc/locale/setlocale.c b/lib/libc/locale/setlocale.c index 4b86a813a2dc..ac8729dcbb33 100644 --- a/lib/libc/locale/setlocale.c +++ b/lib/libc/locale/setlocale.c @@ -33,12 +33,12 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: setlocale.c,v 1.21 1997/04/07 08:54:35 ache Exp $ + * $Id: setlocale.c,v 1.22 1998/01/15 09:58:07 jb Exp $ */ #ifdef LIBC_RCS static const char rcsid[] = - "$Id: setlocale.c,v 1.21 1997/04/07 08:54:35 ache Exp $"; + "$Id: setlocale.c,v 1.22 1998/01/15 09:58:07 jb Exp $"; #endif #if defined(LIBC_SCCS) && !defined(lint) @@ -66,6 +66,7 @@ static char *categories[_LC_LAST] = { "LC_MONETARY", "LC_NUMERIC", "LC_TIME", + "LC_MESSAGES", }; /* @@ -78,6 +79,7 @@ static char current_categories[_LC_LAST][ENCODING_LEN + 1] = { "C", "C", "C", + "C", }; /* @@ -200,15 +202,10 @@ currentlocale() for (i = 2; i < _LC_LAST; ++i) if (strcmp(current_categories[1], current_categories[i])) { - (void) strcpy(current_locale_string, current_categories[1]); - (void) strcat(current_locale_string, "/"); - (void) strcat(current_locale_string, current_categories[2]); - (void) strcat(current_locale_string, "/"); - (void) strcat(current_locale_string, current_categories[3]); - (void) strcat(current_locale_string, "/"); - (void) strcat(current_locale_string, current_categories[4]); - (void) strcat(current_locale_string, "/"); - (void) strcat(current_locale_string, current_categories[5]); + for (i = 2; i < _LC_LAST; ++i) { + (void) strcat(current_locale_string, "/"); + (void) strcat(current_locale_string, current_categories[i]); + } break; } return (current_locale_string); @@ -278,7 +275,9 @@ loadlocale(category) return (ret); } - if (category == LC_MONETARY || category == LC_NUMERIC) { + if (category == LC_MONETARY || + category == LC_MESSAGES || + category == LC_NUMERIC) { ret = stub_load_locale(new) ? NULL : new; if (!ret) (void)stub_load_locale(old); |