Implement data ack in CADET MQ API
[oweals/gnunet.git] / src / include / platform.h
index 4bdebf90f436e37833ea44fe5dcb0fcd60f9be22..add58821f77b1c5b77575b5976ea7843ba05cb9d 100644 (file)
@@ -1,10 +1,10 @@
 /*
      This file is part of GNUnet.
 /*
      This file is part of GNUnet.
-     (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2012 GNUnet e.V.
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
 
      GNUnet 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; either version 2, or (at your
+     by the Free Software Foundation; either version 3, or (at your
      option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
      option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
 
      You should have received a copy of the GNU General Public License
      along with GNUnet; see the file COPYING.  If not, write to the
 
      You should have received a copy of the GNU General Public License
      along with GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
+     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
 */
 
 /**
 */
 
 /**
- * @file include/platform.h
- * @brief plaform specifics
- *
  * @author Nils Durner
  * @author Nils Durner
+ * @author Christian Grothoff
+ *
+ * @file
+ * Plaform specific includes and defines.
  *
  * This file should never be included by installed
  *
  * This file should never be included by installed
- * header files (thos starting with "gnunet_").
+ * header files (those starting with "gnunet_").
  */
  */
-
 #ifndef PLATFORM_H
 #define PLATFORM_H
 
 #ifndef PLATFORM_H
 #define PLATFORM_H
 
 #include <sys/types.h>
 #endif
 
 #include <sys/types.h>
 #endif
 
-#define ALLOW_EXTRA_CHECKS GNUNET_NO
+/**
+ * These may be expensive, but good for debugging...
+ */
+#define ALLOW_EXTRA_CHECKS GNUNET_YES
 
 /**
  * For strptime (glibc2 needs this).
  */
 #ifndef _XOPEN_SOURCE
 
 /**
  * For strptime (glibc2 needs this).
  */
 #ifndef _XOPEN_SOURCE
-#define _XOPEN_SOURCE
+#define _XOPEN_SOURCE 499
 #endif
 
 #ifndef _REENTRANT
 #endif
 
 #ifndef _REENTRANT
 
 #ifdef CYGWIN
 #include <sys/reent.h>
 
 #ifdef CYGWIN
 #include <sys/reent.h>
-#define _REENT_ONLY
-#endif
-
-#ifdef CYGWIN
-#undef _REENT_ONLY
 #endif
 
 #ifdef _MSC_VER
 #endif
 
 #ifdef _MSC_VER
+#ifndef FD_SETSIZE
+#define FD_SETSIZE 1024
+#endif
 #include <Winsock2.h>
 #include <ws2tcpip.h>
 #else
 #include <Winsock2.h>
 #include <ws2tcpip.h>
 #else
@@ -90,7 +91,9 @@
 #if HAVE_NETINET_IN_SYSTM_H
 #include <netinet/in_systm.h>
 #endif
 #if HAVE_NETINET_IN_SYSTM_H
 #include <netinet/in_systm.h>
 #endif
-#include <netinet/ip.h> /* superset of previous */
+#if HAVE_NETINET_IP_H
+#include <netinet/ip.h>         /* superset of previous */
+#endif
 #include <arpa/inet.h>
 #include <netinet/tcp.h>
 #include <pwd.h>
 #include <arpa/inet.h>
 #include <netinet/tcp.h>
 #include <pwd.h>
 #include <stdarg.h>
 #include <errno.h>
 #include <signal.h>
 #include <stdarg.h>
 #include <errno.h>
 #include <signal.h>
+#include <libgen.h>
 #ifdef WINDOWS
 #ifdef WINDOWS
-#include <malloc.h> /* for alloca(), on other OSes it's in stdlib.h */
+#include <malloc.h>             /* for alloca(), on other OSes it's in stdlib.h */
+#endif
+#ifdef HAVE_MALLOC_H
+#include <malloc.h>             /* for mallinfo on GNU */
 #endif
 #ifndef _MSC_VER
 #include <unistd.h>             /* KLB_FIX */
 #endif
 #ifndef _MSC_VER
 #include <unistd.h>             /* KLB_FIX */
 #ifdef SOMEBSD
 #include <net/if.h>
 #endif
 #ifdef SOMEBSD
 #include <net/if.h>
 #endif
-#ifdef GNUNET_freeBSD
+#ifdef FREEBSD
 #include <semaphore.h>
 #endif
 #ifdef DARWIN
 #include <semaphore.h>
 #endif
 #ifdef DARWIN
 #include <semaphore.h>
 #include <net/if.h>
 #endif
 #include <semaphore.h>
 #include <net/if.h>
 #endif
-#ifdef LINUX
+#if defined(LINUX) || defined(GNU)
 #include <net/if.h>
 #endif
 #ifdef SOLARIS
 #include <net/if.h>
 #endif
 #ifdef SOLARIS
 #if HAVE_UCRED_H
 #include <ucred.h>
 #endif
 #if HAVE_UCRED_H
 #include <ucred.h>
 #endif
+#if HAVE_SYS_UCRED_H
+#include <sys/ucred.h>
+#endif
 #ifdef CYGWIN
 #include <windows.h>
 #include <cygwin/if.h>
 #ifdef CYGWIN
 #include <windows.h>
 #include <cygwin/if.h>
 
 
 #if !HAVE_ATOLL
 
 
 #if !HAVE_ATOLL
-long long atoll (const char *nptr);
+long long
+atoll (const char *nptr);
 #endif
 
 #if ENABLE_NLS
 #endif
 
 #if ENABLE_NLS
@@ -241,10 +252,31 @@ long long atoll (const char *nptr);
 #define O_LARGEFILE 0
 #endif
 
 #define O_LARGEFILE 0
 #endif
 
+/**
+ * AI_NUMERICSERV not defined in windows.  Then we just do without.
+ */
+#ifndef AI_NUMERICSERV
+#define AI_NUMERICSERV 0
+#endif
+
+
 #if defined(__sparc__)
 #define MAKE_UNALIGNED(val) ({ __typeof__((val)) __tmp; memmove(&__tmp, &(val), sizeof((val))); __tmp; })
 #else
 #define MAKE_UNALIGNED(val) val
 #endif
 
 #if defined(__sparc__)
 #define MAKE_UNALIGNED(val) ({ __typeof__((val)) __tmp; memmove(&__tmp, &(val), sizeof((val))); __tmp; })
 #else
 #define MAKE_UNALIGNED(val) val
 #endif
 
+#if WINDOWS
+#define FDTYPE HANDLE
+#define SOCKTYPE SOCKET
+#else
+#define FDTYPE int
+#define SOCKTYPE int
+#endif
+
+/**
+ * The termination signal
+ */
+#define GNUNET_TERM_SIG SIGTERM
+
 #endif
 #endif