use $(LIBENSCVECTOR) instead of libensc_vector.a
[util-vserver.git] / util-vserver / compat.h
index a58eaa2..43d920c 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef H_UTIL_VSERVER_COMPAT_H
 #define H_UTIL_VSERVER_COMPAT_H
 
-#if defined(__dietlibc__) && defined(__STRICT_ANSI__) && defined(__STDC_VERSION__)
+#if defined(__dietlibc__) && !defined(ENSC_DIETLIBC_C99) && defined(__STRICT_ANSI__) && defined(__STDC_VERSION__)
 #  include <sys/cdefs.h>
 #  undef inline
 
 #  define __STRICT_ANSI__
 #endif
 
+#if defined(__dietlibc__)
+#  define ENSC_FIX_IOCTL(X)    do { if ((X)<-1) { errno=-(X); (X) = -1; } } while (0)
+#else
+#  define ENSC_FIX_IOCTL(X)    do { } while (0)
+#endif
+
 #if defined(__GNUC__)
 #  define UNUSED                __attribute__((__unused__))
 #  define NORETURN              __attribute__((__noreturn__))
-#  if __GNUC__>3 || (__GNUC__==3 && __GNUC__MINOR>=3)
+#  define CONST                        __attribute__((__const__))
+#  if __GNUC__*0x10000 + __GNUC_MINOR__*0x100 + __GNUC_PATCHLEVEL__ >= 0x30300
 #    define NONNULL(ARGS)      __attribute__((__nonnull__ ARGS))
 #    define ALWAYSINLINE        __attribute__((__always_inline__))
 #  else
 #    define NONNULL(ARGS)
 #    define ALWAYSINLINE
+#    define PURE
+#  endif
+#  if __GNUC__*0x10000 + __GNUC_MINOR__*0x100 + __GNUC_PATCHLEVEL__ >= 0x30303
+#    define PURE               __attribute__((__pure__))
+#  else
+#    define PURE
 #  endif
 #else
 #  define NONNULL(ARGS)
 #  define UNUSED
 #  define NORETURN
 #  define ALWAYSINLINE
+#  define PURE
+#  define CONST
+#endif
+
+  // shamelessly stolen from dietlibc
+#define LINK_WARNING(symbol,msg)                                       \
+  __asm__ (".section .gnu.warning." symbol "\n\t.string \"" msg "\"\n\t.previous")
+
+#if !defined(__builtin_expect) && (__GNUC__+0)<3
+#  define __builtin_expect(foo,bar)    (foo)
 #endif
 
 #if !defined(__STDC_VERSION__) || (__STDC_VERSION__<199901L)
 typedef uint32_t               xid_t;
 #endif
 
+#ifndef HAVE_NID_T
+#include <stdint.h>
+typedef uint32_t               nid_t;
+#endif
+
+
 #if defined(__dietlibc__)
   #define TEMP_FAILURE_RETRY(expression)                               \
   (__extension__                                                       \