/* clang-format on */
// Enabled during tests
-int _json_c_strerror_enable = 0;
+static int _json_c_strerror_enable = 0;
+extern char *getenv(const char *name); // Avoid including stdlib.h
#define PREFIX "ERRNO="
static char errno_buf[128] = PREFIX;
int ii, jj;
if (!_json_c_strerror_enable)
+ _json_c_strerror_enable = (getenv("_JSON_C_STRERROR_ENABLE") == NULL) ? -1 : 1;
+ if (_json_c_strerror_enable == -1)
return strerror(errno_in);
// Avoid standard functions, so we don't need to include any
test_object_iterator)
add_executable(${TESTNAME} ${TESTNAME}.c)
+if(${TESTNAME} STREQUAL test_util_file)
+# For output consistency, we need _json_c_strerror() in some tests:
+target_sources(${TESTNAME} PRIVATE ../strerror_override.c)
+endif()
add_test(NAME ${TESTNAME} COMMAND ${PROJECT_SOURCE_DIR}/tests/${TESTNAME}.test)
# XXX using the non-target_ versions of these doesn't work :(
#!/bin/sh
+export _JSON_C_STRERROR_ENABLE=1
+
# Common definitions
if test -z "$srcdir"; then
srcdir="${0%/*}"
-#include "strerror_override.h"
-#include "strerror_override_private.h"
#ifdef NDEBUG
#undef NDEBUG
#endif
#include <assert.h>
+#include <errno.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
- _json_c_strerror_enable = 1;
-
test_example_get();
test_recursion_get();
test_wrong_inputs_get();
// 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)
{