diff options
author | Jakob Kaivo <jkk@ung.org> | 2024-01-30 13:19:07 -0500 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2024-01-30 13:19:07 -0500 |
commit | 548a71c010f8adf2d71f56436c67136ad6e0f316 (patch) | |
tree | 975343a7c8b68bb097dd82364d84085f3505fce2 | |
parent | 608008917d26e7b2f6d0e1041ab981c853fe9733 (diff) |
update standards and safety
-rw-r--r-- | src/locale/__get_locale.c | 7 | ||||
-rw-r--r-- | src/locale/__load_locale.c | 5 | ||||
-rw-r--r-- | src/locale/localeconv.c | 9 | ||||
-rw-r--r-- | src/locale/setlocale.c | 9 |
4 files changed, 19 insertions, 11 deletions
diff --git a/src/locale/__get_locale.c b/src/locale/__get_locale.c index 3b89377f..9efad8d9 100644 --- a/src/locale/__get_locale.c +++ b/src/locale/__get_locale.c @@ -1,4 +1,5 @@ #include "_locale.h" +#include "_safety.h" /* This implementation only supports a single, global locale. A second @@ -15,9 +16,15 @@ struct __locale_t * __get_locale(void) { static struct __locale_t l; static int loaded = 0; + SIGNAL_SAFE(1); + if (!loaded) { loaded = 1; __load_locale(&l, LC_ALL_MASK, DEFAULT_LOCALE); } return &l; } + +/* +STDC(0) +*/ diff --git a/src/locale/__load_locale.c b/src/locale/__load_locale.c index 66177eb6..0f6bd496 100644 --- a/src/locale/__load_locale.c +++ b/src/locale/__load_locale.c @@ -5,6 +5,7 @@ #include "_locale.h" #include "ctype/_ctype.h" +#include "_safety.h" #define setall(_map, _input, _mask) do { \ size_t _i; \ @@ -15,6 +16,8 @@ char * __load_locale(struct __locale_t *loc, int mask, const char *name) { + SIGNAL_SAFE(1); + if (name == NULL) { name = ""; } @@ -22,7 +25,7 @@ char * __load_locale(struct __locale_t *loc, int mask, const char *name) char localepath[FILENAME_MAX] = "/lib/locale/"; strcat(localepath, name); - FILE *localefile = fopen(localepath, "rb"); + FILE *localefile = NULL; //fopen(localepath, "rb"); if (localefile == NULL && strcmp(name, "C") && strcmp(name, "POSIX")) { return NULL; } diff --git a/src/locale/localeconv.c b/src/locale/localeconv.c index 58405261..fecb9176 100644 --- a/src/locale/localeconv.c +++ b/src/locale/localeconv.c @@ -1,12 +1,14 @@ -#if 0 - #include <locale.h> #include "_locale.h" +#include "_safety.h" +#undef localeconv /** return locale-specific information **/ struct lconv * localeconv(void) { + SIGNAL_SAFE(0); + /* RETURN_SUCCESS(a pointer to a filled-in STRUCTDEF(lconv) for the current locale); */ @@ -23,6 +25,3 @@ LC_MONETARY LC_NUMERIC STDC(1) */ - - -#endif diff --git a/src/locale/setlocale.c b/src/locale/setlocale.c index 4e8e909f..5a2b6859 100644 --- a/src/locale/setlocale.c +++ b/src/locale/setlocale.c @@ -1,9 +1,9 @@ -#if 0 - #include <locale.h> #include <string.h> #include <stdlib.h> #include "_locale.h" +#include "_safety.h" +#undef setlocale /** get or set program locale **/ @@ -12,6 +12,8 @@ char * setlocale(int category, const char *locale) struct __locale_t *l = __get_locale(); int mask = 0; + SIGNAL_SAFE(0); + if (locale == NULL) { switch (category) { case LC_ALL: return l->all; @@ -85,6 +87,3 @@ RETURN(NONNULL, the current locale name for ARGUMENT(category)) IMPLEMENTATION(The native environment) STDC(1) */ - - -#endif |