1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
// $Id: compat.h 2283 2006-09-10 17:07:57Z hollow $ --*- c++ -*--
// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; version 2 of the License.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#ifndef H_UTIL_VSERVER_COMPAT_H
#define H_UTIL_VSERVER_COMPAT_H
#if defined(__dietlibc__) && !defined(ENSC_DIETLIBC_C99) && defined(__STRICT_ANSI__) && defined(__STDC_VERSION__)
# include <sys/cdefs.h>
# undef inline
# undef __STRICT_ANSI__
# include <stdint.h>
# 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__))
# 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)
# define restrict
#endif
#if !defined(HAVE_DECL_MS_MOVE) || !(HAVE_DECL_MS_MOVE)
// from <linux/fs.h>
# define MS_MOVE 8192
#endif
#ifndef HAVE_XID_T
#include <stdint.h>
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__ \
({ long int __result; \
do __result = (long int) (expression); \
while (__result == -1L && errno == EINTR); \
__result; }))
#endif
#define FMT_PREFIX utilvserver_fmt_
#endif // H_UTIL_VSERVER_COMPAT_H
|