diff options
author | Jakob Kaivo <jkk@ung.org> | 2024-01-30 13:27:49 -0500 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2024-01-30 13:27:49 -0500 |
commit | 635f3167091b5f7419cef9b24810f24269f40a37 (patch) | |
tree | aae4edbab58abc6034fe46b7527ebfdc7ef5179d /src/setjmp | |
parent | 371913c93cc3ffc4dd0a4a18bc0f3021f0ec05db (diff) |
update standards and safety
Diffstat (limited to 'src/setjmp')
-rw-r--r-- | src/setjmp/_longjmp.c | 7 | ||||
-rw-r--r-- | src/setjmp/_setjmp.c | 7 | ||||
-rw-r--r-- | src/setjmp/longjmp.c | 7 | ||||
-rw-r--r-- | src/setjmp/setjmp.c | 7 | ||||
-rw-r--r-- | src/setjmp/sigjmp_buf.c | 6 | ||||
-rw-r--r-- | src/setjmp/siglongjmp.c | 6 | ||||
-rw-r--r-- | src/setjmp/sigsetjmp.c | 2 |
7 files changed, 15 insertions, 27 deletions
diff --git a/src/setjmp/_longjmp.c b/src/setjmp/_longjmp.c index 8378c9ac..c274889c 100644 --- a/src/setjmp/_longjmp.c +++ b/src/setjmp/_longjmp.c @@ -1,11 +1,11 @@ -#if 0 - #include <setjmp.h> +#include "_safety.h" /** restore calling environment **/ void _longjmp(jmp_buf env, int val) { + SIGNAL_SAFE(0); return longjmp(env, val); } @@ -31,6 +31,3 @@ UNDEFINED(THIS() is called from a nested signal handler) XOPEN(400) XOBSOLETE(700, FUNCTION(siglongjmp)) */ - - -#endif diff --git a/src/setjmp/_setjmp.c b/src/setjmp/_setjmp.c index 53bc1a2c..6ed81a7e 100644 --- a/src/setjmp/_setjmp.c +++ b/src/setjmp/_setjmp.c @@ -1,11 +1,11 @@ -#if 0 - #include <setjmp.h> +#include "_safety.h" /** save program state **/ int _setjmp(jmp_buf env) { + SIGNAL_SAFE(0); return setjmp(env); } @@ -28,6 +28,3 @@ UNDEFINED(A program defines an external identifier named LITERAL(setjmp)) XOPEN(400) XOBSOLETE(700, FUNCTION(siglongjmp)) */ - - -#endif diff --git a/src/setjmp/longjmp.c b/src/setjmp/longjmp.c index fc4305ca..26c65299 100644 --- a/src/setjmp/longjmp.c +++ b/src/setjmp/longjmp.c @@ -1,12 +1,12 @@ -#if 0 - #include <setjmp.h> +#include "_safety.h" /** restore calling environment **/ _Noreturn void longjmp(jmp_buf env, int val) { extern _Noreturn void __longjmp(jmp_buf); + SIGNAL_SAFE(0); /* use val if nonzero, otherwise 1 */ env[0] = val ? val : 1; @@ -35,6 +35,3 @@ UNDEFINED(The function containing the previous call to FUNCTION(setjmp) is no lo UNDEFINED(THIS() is called from a nested signal handler) STDC(1) */ - - -#endif diff --git a/src/setjmp/setjmp.c b/src/setjmp/setjmp.c index c5cad278..093bd7c5 100644 --- a/src/setjmp/setjmp.c +++ b/src/setjmp/setjmp.c @@ -1,13 +1,13 @@ -#if 0 - #include <setjmp.h> #include <string.h> +#include "_safety.h" /** save program state **/ int setjmp(jmp_buf env) { extern int __setjmp(jmp_buf); + SIGNAL_SAFE(0); memset(env, 0, sizeof(jmp_buf)); return __setjmp(env); } @@ -33,6 +33,3 @@ UNDEFINED(A program defines an external identifier named LITERAL(setjmp)) STDC(1) */ - - -#endif diff --git a/src/setjmp/sigjmp_buf.c b/src/setjmp/sigjmp_buf.c index a79c9f9b..54358117 100644 --- a/src/setjmp/sigjmp_buf.c +++ b/src/setjmp/sigjmp_buf.c @@ -1,5 +1,3 @@ -#if 0 - #include <setjmp.h> /** program environment with signal mask **/ @@ -12,9 +10,7 @@ environment, including the signal mask. ***/ /* +SIGNAL_SAFE(0) TYPEDEF(an array type) POSIX(1) */ - - -#endif diff --git a/src/setjmp/siglongjmp.c b/src/setjmp/siglongjmp.c index 8147c036..7dc550ce 100644 --- a/src/setjmp/siglongjmp.c +++ b/src/setjmp/siglongjmp.c @@ -3,12 +3,15 @@ #include <setjmp.h> #include <sys/types.h> #include <signal.h> +#include "_safety.h" /** restore calling environment with signal mask **/ void siglongjmp(sigjmp_buf env, int val) { - /* restor signal mask */ + SIGNAL_SAFE(0); + + /* restore signal mask */ return longjmp(env, val); } @@ -36,5 +39,4 @@ UNDEFINED(THIS() is called from a nested signal handler) POSIX(1) */ - #endif diff --git a/src/setjmp/sigsetjmp.c b/src/setjmp/sigsetjmp.c index 2d78eed5..7ca66b31 100644 --- a/src/setjmp/sigsetjmp.c +++ b/src/setjmp/sigsetjmp.c @@ -8,6 +8,8 @@ int sigsetjmp(sigjmp_buf env, int savemask) { + SIGNAL_SAFE(0); + if (savemask) { /* save mask to env */ } |