]> git.meshlink.io Git - meshlink/commitdiff
Check for the presence of stdatomic.h before using it.
authorGuus Sliepen <guus@meshlink.io>
Tue, 7 Jul 2020 08:26:21 +0000 (10:26 +0200)
committerGuus Sliepen <guus@meshlink.io>
Tue, 7 Jul 2020 08:26:42 +0000 (10:26 +0200)
configure.ac
src/adns.c
src/event.c
src/event.h
src/have.h

index 1047dc1b7101b69f3419f3c244bc306403305d0e..f9a93259e7ceb7d3b2adc1a15d55e0f3750acbc9 100644 (file)
@@ -123,7 +123,7 @@ AM_CONDITIONAL(INSTALL_TESTS, test "$install_tests" = true)
 dnl Checks for header files.
 dnl We do this in multiple stages, because unlike Linux all the other operating systems really suck and don't include their own dependencies.
 
 dnl Checks for header files.
 dnl We do this in multiple stages, because unlike Linux all the other operating systems really suck and don't include their own dependencies.
 
-AC_CHECK_HEADERS([syslog.h sys/file.h sys/param.h sys/resource.h sys/socket.h sys/time.h sys/un.h sys/wait.h netdb.h arpa/inet.h dirent.h curses.h ifaddrs.h])
+AC_CHECK_HEADERS([syslog.h sys/file.h sys/param.h sys/resource.h sys/socket.h sys/time.h sys/un.h sys/wait.h netdb.h arpa/inet.h dirent.h curses.h ifaddrs.h stdatomic.h])
 
 dnl Checks for typedefs, structures, and compiler characteristics.
 MeshLink_ATTRIBUTE(__malloc__)
 
 dnl Checks for typedefs, structures, and compiler characteristics.
 MeshLink_ATTRIBUTE(__malloc__)
index cae8234f499d506d8dedb2ed02a47c9f3ba1cd59..758c08088bd5f6fbbe97b23afae94f1143fbbed5 100644 (file)
@@ -20,7 +20,6 @@
 #include "system.h"
 
 #include <pthread.h>
 #include "system.h"
 
 #include <pthread.h>
-#include <stdatomic.h>
 
 #include "adns.h"
 #include "devtools.h"
 
 #include "adns.h"
 #include "devtools.h"
index 8ceab36240224ab8192a80071469ff8160f0cba0..a7c1f25a3f3b9b05edd94a6ee579b818dd5b3412 100644 (file)
@@ -199,7 +199,9 @@ static void signalio_handler(event_loop_t *loop, void *data, int flags) {
        });
 
        if(sig) {
        });
 
        if(sig) {
+#ifdef HAVE_STDATOMIC_H
                atomic_flag_clear(&sig->set);
                atomic_flag_clear(&sig->set);
+#endif
                sig->cb(loop, sig->data);
        }
 }
                sig->cb(loop, sig->data);
        }
 }
@@ -224,10 +226,14 @@ static void pipe_exit(event_loop_t *loop) {
 }
 
 void signal_trigger(event_loop_t *loop, signal_t *sig) {
 }
 
 void signal_trigger(event_loop_t *loop, signal_t *sig) {
+#ifdef HAVE_STDATOMIC_H
+
        if(atomic_flag_test_and_set(&sig->set)) {
                return;
        }
 
        if(atomic_flag_test_and_set(&sig->set)) {
                return;
        }
 
+#endif
+
        uint8_t signum = sig->signum;
        write(loop->pipefd[1], &signum, 1);
        return;
        uint8_t signum = sig->signum;
        write(loop->pipefd[1], &signum, 1);
        return;
@@ -241,7 +247,9 @@ void signal_add(event_loop_t *loop, signal_t *sig, signal_cb_t cb, void *data, u
        sig->signum = signum;
        sig->node.data = sig;
 
        sig->signum = signum;
        sig->node.data = sig;
 
+#ifdef HAVE_STDATOMIC_H
        atomic_flag_clear(&sig->set);
        atomic_flag_clear(&sig->set);
+#endif
 
        if(loop->pipefd[0] == -1) {
                pipe_init(loop);
 
        if(loop->pipefd[0] == -1) {
                pipe_init(loop);
index ce6701ac441491cce83fe2f67717fb8d9c8097a7..bec32045e0bf501bd9c39985870b6d9d0268b82f 100644 (file)
@@ -52,7 +52,9 @@ typedef struct timeout_t {
 typedef struct signal_t {
        struct splay_node_t node;
        int signum;
 typedef struct signal_t {
        struct splay_node_t node;
        int signum;
+#ifdef HAVE_STDATOMIC_H
        volatile atomic_flag set;
        volatile atomic_flag set;
+#endif
        signal_cb_t cb;
        void *data;
 } signal_t;
        signal_cb_t cb;
        void *data;
 } signal_t;
index c0686a54ec6fdd26be2e2d312a4d09be34fd0f27..e7da316771d5ae6868faccfb2ebfcd0f2938d82b 100644 (file)
@@ -32,7 +32,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
-#include <stdatomic.h>
 #include <stdbool.h>
 #include <stdint.h>
 #include <inttypes.h>
 #include <stdbool.h>
 #include <stdint.h>
 #include <inttypes.h>
 #include <limits.h>
 #include <assert.h>
 
 #include <limits.h>
 #include <assert.h>
 
+#ifdef HAVE_STDATOMIC_H
+#include <stdatomic.h>
+#endif
+
 #ifdef HAVE_MINGW
 #include <w32api.h>
 #include <winsock2.h>
 #ifdef HAVE_MINGW
 #include <w32api.h>
 #include <winsock2.h>