X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fhave.h;h=5d99cc235bc8bd96e9002fd63b9a79052c334080;hb=9c577bd201009f14b4cb5d8540b6dc03246f6165;hp=2428151af6c10946e5075480d3b1227c2f185345;hpb=0530bf8704f92e9741d969d6576bf8e2bbf026be;p=tinc diff --git a/src/have.h b/src/have.h index 2428151a..5d99cc23 100644 --- a/src/have.h +++ b/src/have.h @@ -51,6 +51,40 @@ #define STATIC_ASSERT(check, msg) #endif +#ifdef HAVE_ATTR_PACKED +#define PACKED(...) __VA_ARGS__ __attribute__((__packed__)) +#else +#ifdef _MSC_VER +#define PACKED(...) __pragma(pack(push, 1)) __VA_ARGS__ __pragma(pack(pop)) +#else +#warning Your compiler does not support __packed__. Use at your own risk. +#endif +#endif + +#ifdef HAVE_ATTR_MALLOC +#define ATTR_MALLOC __attribute__((__malloc__)) +#else +#define ATTR_MALLOC +#endif + +#ifdef HAVE_ATTR_NONNULL +#define ATTR_NONNULL __attribute__((__nonnull__)) +#else +#define ATTR_NONNULL +#endif + +#ifdef HAVE_ATTR_WARN_UNUSED_RESULT +#define ATTR_WARN_UNUSED __attribute__((__warn_unused_result__)) +#else +#define ATTR_WARN_UNUSED +#endif + +#ifdef HAVE_ATTR_FORMAT +#define ATTR_FORMAT(func, str, nonstr) __attribute__((format(func, str, nonstr))) +#else +#define ATTR_FORMAT(func, str, nonstr) +#endif + #ifdef HAVE_ALLOCA_H #include #elif defined(HAVE_NETBSD)