]> git.ipfire.org Git - thirdparty/json-c.git/commitdiff
PR #336: since we can't use function overriding (due to problems with it on
authorEric Haszlakiewicz <erh+git@nimenees.com>
Sat, 15 Jul 2017 14:12:44 +0000 (07:12 -0700)
committerEric Haszlakiewicz <erh+git@nimenees.com>
Sat, 15 Jul 2017 14:12:44 +0000 (07:12 -0700)
OSX) always include the _json_c_strerror function but only enable it with a flag
 during tests.

Makefile.am
configure.ac
strerror_override.c
strerror_override.h
tests/test_json_pointer.c
tests/test_util_file.c

index 6f8652502f01d80ac7bffca7bf0e716eb206bf5b..8728ff0e5768b33f5b251fe0d2f110ba691a82c1 100644 (file)
@@ -51,14 +51,8 @@ libjson_c_la_SOURCES = \
        json_visit.c \
        linkhash.c \
        printbuf.c \
-       random_seed.c
-
-if ENABLE_STRERROR_OVERRIDE
-libjson_cinclude_HEADERS+= \
-       strerror_override.h
-libjson_c_la_SOURCES+= \
+       random_seed.c \
        strerror_override.c
-endif
 
 distclean-local:
        -rm -rf $(testsubdir)
index 7af60bf5552ad3f4202c18a9e6169583948e74ef..bbaacf51964c1bf29d779603df02f6b60d49aef3 100644 (file)
@@ -23,22 +23,6 @@ else
   AC_MSG_RESULT([RDRAND Hardware RNG Hash Seed disabled. Use --enable-rdrand to enable])
 fi
 
-AC_ARG_ENABLE(strerror-override,
- AS_HELP_STRING([--enable-strerror-override],
-   [Override strerror() function with internal version.]),
-[if test x$enableval = xyes; then
-  enable_strerror_override=yes
-  AC_DEFINE(ENABLE_STRERROR_OVERRIDE, 1, [Override strerror() with internal version])
-fi])
-
-AM_CONDITIONAL([ENABLE_STRERROR_OVERRIDE], [test "x$enable_strerror_override" = "xyes"])
-
-if test "x$enable_strerror_override" = "xyes"; then
-  AC_MSG_RESULT([Overriding `strerror()` function with internal version])
-else
-  AC_MSG_RESULT([Using libc's `strerror()` function])
-fi
-
 # enable silent build by default
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
 
index 6cad0c09e3bde092e47028b77aa6d9a288a4ec9f..ccabe97a7f7d7f217e2b63890356d47f5cc0a8d8 100644 (file)
@@ -1,3 +1,4 @@
+#define STERROR_OVERRIDE_IMPL 1
 #include "strerror_override.h"
 
 /*
@@ -52,6 +53,9 @@ static struct {
        { 0, (char *)0 }
 };
 
+// Enabled during tests
+int _json_c_strerror_enable = 0;
+
 #define PREFIX "ERRNO="
 static char errno_buf[128] = PREFIX;
 char *_json_c_strerror(int errno_in)
@@ -60,6 +64,9 @@ char *_json_c_strerror(int errno_in)
        char digbuf[20];
        int ii, jj;
 
+       if (!_json_c_strerror_enable)
+               return strerror(errno_in);
+
        // Avoid standard functions, so we don't need to include any
        // headers, or guess at signatures.
 
index 96e6bc6da2176d1b22b0f365f5033f3f84ab5a52..48b29b3868917de81a67c5cf84f227be27abd497 100644 (file)
@@ -1,12 +1,13 @@
-#ifndef __STRERROR_OVERRIDE_H__
-#define __STRERROR_OVERRIDE_H__
+#ifndef _json_strerror_override_h_
+#define _json_strerror_override_h_
 
 #include "config.h"
 #include <errno.h>
 
-#if ENABLE_STRERROR_OVERRIDE
 char *_json_c_strerror(int errno_in);
+
+#ifndef STRERROR_OVERRIDE_IMPL
 #define strerror       _json_c_strerror
 #endif
 
-#endif /* __STRERROR_OVERRIDE_H__ */ 
+#endif /* _json_strerror_override_h_ */ 
index cc96ab93b88c02210f1413f4ef13a8a43bd4b0b4..97566e2635718312c40a3ec4f57fc1a5cefb8bf2 100644 (file)
@@ -1,4 +1,5 @@
 #include "strerror_override.h"
+#include "strerror_override_private.h"
 #include <assert.h>
 #include <stdio.h>
 #include <string.h>
@@ -280,6 +281,8 @@ static void test_wrong_inputs_set()
 
 int main(int argc, char **argv)
 {
+       _json_c_strerror_enable = 1;
+
        test_example_get();
        test_recursion_get();
        test_wrong_inputs_get();
index b4918bee57f7aa90b3e4bee424e7841d686ba385..5a8a8a08692baaead28b7a36bcc1578359d96a37 100644 (file)
@@ -1,4 +1,5 @@
 #include "strerror_override.h"
+#include "strerror_override_private.h"
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
@@ -114,6 +115,8 @@ int main(int argc, char **argv)
 //     json_object_to_file(file, obj);
 //     json_object_to_file_ext(file, obj, flags);
 
+       _json_c_strerror_enable = 1;
+
        const char *testdir;
        if (argc < 2)
        {