]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/portab/portab.h
private strndup() implementation in case libc does not provide it
[ngircd-alex.git] / src / portab / portab.h
index 8522441b3ccdfba1c6493ae7c72a2c0b47cb887b..a968a3b9bd924fbbe6e04eee47d1dc5f4f925e21 100644 (file)
 /*
  * ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
+ * Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors.
  *
- * Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
- * der GNU General Public License (GPL), wie von der Free Software Foundation
- * herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
- * der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
- * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
- * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
- *
- * $Id: portab.h,v 1.1 2002/03/12 14:36:44 alex Exp $
- *
- * portab.h: "Portabilitaets-Definitionen"
+ * 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; either version 2 of the License, or
+ * (at your option) any later version.
+ * Please read the file COPYING, README and AUTHORS for more information.
  */
 
-
 #ifndef __PORTAB__
 #define __PORTAB__
 
+/**
+ * @file
+ * Portability functions and declarations (header)
+ */
 
 #include "config.h"
 
+#ifndef DEBUG
+# define NDEBUG
+#endif
 
-/* Keywords */
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
 
-#define EXTERN extern
-#define STATIC static
-#define LOCAL static
-#define CONST const
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+# define NGIRC_GOT_INTTYPES
+#else
+# ifdef HAVE_STDINT_H
+#  include <stdint.h>
+#  define NGIRC_GOT_INTTYPES
+# endif
+#endif
 
+#ifdef HAVE_STDDEF_H
+# include <stddef.h>
+#endif
+
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#endif
 
-/* Datatentypen */
+/* compiler features */
+
+#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 7))
+# define PUNUSED(x) __attribute__ ((unused)) x
+# define UNUSED     __attribute__ ((unused))
+#else
+# define PUNUSED(x) x
+# define UNUSED
+#endif
+
+#ifndef PARAMS
+# if PROTOTYPES
+#  define PARAMS(args) args
+# else
+#  define PARAMS(args) ()
+# endif
+#endif
+
+
+/* datatypes */
+
+#ifndef PROTOTYPES
+# ifndef signed
+#  define signed
+# endif
+#endif
 
-typedef void VOID;
 typedef void POINTER;
 
-typedef signed int INT;
-typedef unsigned int UINT;
-typedef signed char INT8;
+#ifdef NGIRC_GOT_INTTYPES
+typedef uint8_t UINT8;
+typedef uint16_t UINT16;
+typedef uint32_t UINT32;
+#else
 typedef unsigned char UINT8;
-typedef signed short INT16;
 typedef unsigned short UINT16;
-typedef signed long INT32;
-typedef unsigned long UINT32;
+typedef unsigned int UINT32;
+#endif
+
+#ifndef HAVE_STDBOOL_H
+typedef unsigned char bool;
+#define true (bool)1
+#define false (bool)0
+#endif
+
+#ifndef NULL
+#ifdef PROTOTYPES
+# define NULL (void *)0
+#else
+# define NULL 0L
+#endif
+#endif
+
+#ifdef NeXT
+#define S_IRUSR 0000400                /* read permission, owner */
+#define S_IWUSR 0000200                /* write permission, owner */
+#define S_IRGRP 0000040                /* read permission, group */
+#define S_IROTH 0000004                /* read permission, other */
+#define ssize_t int
+#endif
 
-typedef float FLOAT;
+#undef GLOBAL
+#define GLOBAL
 
-typedef char CHAR;
 
-typedef UINT8 BOOLEAN;
+/* SPLint */
 
-#undef TRUE
-#define TRUE (BOOLEAN)1
+#ifdef S_SPLINT_S
+#include "splint.h"
+#endif
 
-#undef FALSE
-#define FALSE (BOOLEAN)0
 
-#undef NULL
-#define NULL (VOID *)0
+/* target constants  */
 
-#undef GLOBAL
-#define GLOBAL
+#ifndef HOST_OS
+#define HOST_OS "unknown"
+#endif
 
+#ifndef HOST_CPU
+#define HOST_CPU "unknown"
+#endif
+
+#ifndef HOST_VENDOR
+#define HOST_VENDOR "unknown"
+#endif
 
-/* configure-Optionen */
+#ifdef __HAIKU__
+#define SINGLE_USER_OS
+#endif
+
+/* configure options */
 
 #ifndef HAVE_socklen_t
-#define socklen_t int                  /* u.a. fuer Mac OS X */
+typedef int socklen_t;                 /* for Mac OS X, amongst others */
 #endif
 
-#ifndef HAVE_INET_ATON
-#define inet_aton( opt, bind ) 0       /* Dummy fuer inet_aton() */
+#ifndef HAVE_SNPRINTF
+extern int snprintf PARAMS(( char *str, size_t count, const char *fmt, ... ));
 #endif
 
-#if OS_UNIX_AUX
-#define _POSIX_SOURCE                  /* muss unter A/UX definiert sein */
+#ifndef HAVE_STRLCAT
+extern size_t strlcat PARAMS(( char *dst, const char *src, size_t size ));
 #endif
 
+#ifndef HAVE_STRLCPY
+extern size_t strlcpy PARAMS(( char *dst, const char *src, size_t size ));
+#endif
 
-/* Konstanten */
+#ifndef HAVE_STRDUP
+extern char * strdup PARAMS(( const char *s ));
+#endif
+
+#ifndef HAVE_STRNDUP
+extern char * strndup PARAMS((const char *s, size_t maxlen));
+#endif
+
+#ifndef HAVE_STRTOK_R
+extern char * strtok_r PARAMS((char *str, const char *delim, char **saveptr));
+#endif
+
+#ifndef HAVE_VSNPRINTF
+#include <stdarg.h>
+extern int vsnprintf PARAMS(( char *str, size_t count, const char *fmt, va_list args ));
+#endif
+
+#ifndef HAVE_GAI_STRERROR
+#define gai_strerror(r) "unknown error"
+#endif
 
-#define P_OSNAME "unknown"
-#define P_ARCHNAME "unknown"
+#ifndef PACKAGE_NAME
+#define PACKAGE_NAME PACKAGE
+#endif
+
+#ifndef PACKAGE_VERSION
+#define PACKAGE_VERSION VERSION
+#endif
 
 
 #endif