summaryrefslogtreecommitdiff
path: root/ngircd/src/portab/portab.h
blob: e0ec3e1e661b08b5854114029c6ac6e540f3a6fe (plain)
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
/*
 * ngIRCd -- The Next Generation IRC Daemon
 * Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
 *
 * 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"

/* remove assert() macro at compile time if DEBUG is not set. */

#ifndef DEBUG
# define NDEBUG
#endif

/* 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 */

#include <sys/types.h>

#ifdef HAVE_STDDEF_H
# include <stddef.h>
#endif

#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

#ifndef PROTOTYPES
# ifndef signed
#  define signed
# endif
#endif

typedef void POINTER;

#ifdef NGIRC_GOT_INTTYPES
typedef uint8_t UINT8;
typedef uint16_t UINT16;
typedef uint32_t UINT32;
#else
typedef unsigned char UINT8;
typedef unsigned short UINT16;
typedef unsigned int UINT32;
#endif

#ifdef HAVE_STDBOOL_H
# include <stdbool.h>
#else
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

#undef GLOBAL
#ifdef GLOBAL_INIT
#define GLOBAL
#else
#define GLOBAL extern
#endif

/* target constants  */

#ifndef HOST_OS
# define HOST_OS "unknown"
#endif

#ifndef HOST_CPU
# define HOST_CPU "unknown"
#endif

#ifndef HOST_VENDOR
# define HOST_VENDOR "unknown"
#endif

#ifdef __HAIKU__
# define SINGLE_USER_OS
#endif

/* configure options */

#ifndef HAVE_socklen_t
typedef int socklen_t;			/* for Mac OS X, amongst others */
#endif

#ifndef HAVE_SNPRINTF
extern int snprintf PARAMS(( char *str, size_t count, const char *fmt, ... ));
#endif

#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

#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

#ifndef PACKAGE_NAME
# define PACKAGE_NAME PACKAGE
#endif

#ifndef PACKAGE_VERSION
# define PACKAGE_VERSION VERSION
#endif

#ifndef SYSCONFDIR
# define SYSCONFDIR "/etc"
#endif

#endif

/* -eof- */