Towards https://gitlab.com/graphviz/graphviz/-/issues/2178.
bitarray.h
cghdr.h
cgraph.h
+ exit.h
itos.h
likely.h
prisize_t.h
endif
pkginclude_HEADERS = cgraph.h
-noinst_HEADERS = agxbuf.h bitarray.h cghdr.h itos.h likely.h prisize_t.h \
+noinst_HEADERS = agxbuf.h bitarray.h cghdr.h exit.h itos.h likely.h prisize_t.h \
sprint.h strcasecmp.h unreachable.h
noinst_LTLIBRARIES = libcgraph_C.la
lib_LTLIBRARIES = libcgraph.la
<ClInclude Include="bitarray.h" />
<ClInclude Include="cghdr.h" />
<ClInclude Include="cgraph.h" />
+ <ClInclude Include="exit.h" />
<ClInclude Include="itos.h" />
<ClInclude Include="likely.h" />
<ClInclude Include="prisize_t.h" />
<ClInclude Include="cgraph.h">
<Filter>Header Files</Filter>
</ClInclude>
+ <ClInclude Include="exit.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
<ClInclude Include="itos.h">
<Filter>Header Files</Filter>
</ClInclude>
--- /dev/null
+#pragma once
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef __GNUC__
+// FIXME: use _Noreturn for all compilers when we move to C11
+#define NORETURN __attribute__((noreturn))
+#elif defined(_MSC_VER)
+#define NORETURN __declspec(noreturn)
+#else
+#define NORETURN /* nothing */
+#endif
+
+static inline NORETURN void graphviz_exit(int status) {
+#ifdef __MINGW32__
+ // workaround for https://gitlab.com/graphviz/graphviz/-/issues/2178
+ fflush(stdout);
+ fflush(stderr);
+#endif
+ exit(status);
+}
+
+#undef NORETURN
+
+#ifdef __cplusplus
+}
+#endif