summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Kaivo <jkk@ung.org>2024-01-30 13:19:07 -0500
committerJakob Kaivo <jkk@ung.org>2024-01-30 13:19:07 -0500
commit548a71c010f8adf2d71f56436c67136ad6e0f316 (patch)
tree975343a7c8b68bb097dd82364d84085f3505fce2
parent608008917d26e7b2f6d0e1041ab981c853fe9733 (diff)
update standards and safety
-rw-r--r--src/locale/__get_locale.c7
-rw-r--r--src/locale/__load_locale.c5
-rw-r--r--src/locale/localeconv.c9
-rw-r--r--src/locale/setlocale.c9
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