Mercurial > dovecot > original-hg > dovecot-1.2
annotate src/lib/compat.h @ 694:944758e83111 HEAD
Cast chars to (unsigned int) instead of (int) in i_isdigit() etc. macros.
Hopefully fixes some warnings with HP/UX.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 26 Nov 2002 21:09:00 +0200 |
parents | 21233287e9c1 |
children | c7f42a8e7176 |
rev | line source |
---|---|
0 | 1 #ifndef __COMPAT_H |
2 #define __COMPAT_H | |
3 | |
56 | 4 /* well, this is obviously wrong since it assumes it's 64bit, but older |
5 GCCs don't define it and we really want it. */ | |
6 #ifndef LLONG_MAX | |
7 # define LLONG_MAX 9223372036854775807LL | |
8 #endif | |
9 | |
179
0ffecd4e7e1a
added dec2str() function and largest_t type, removed itoa() and ltoa()
Timo Sirainen <tss@iki.fi>
parents:
56
diff
changeset
|
10 #if defined (UOFF_T_INT) |
0ffecd4e7e1a
added dec2str() function and largest_t type, removed itoa() and ltoa()
Timo Sirainen <tss@iki.fi>
parents:
56
diff
changeset
|
11 typedef unsigned int uoff_t; |
0ffecd4e7e1a
added dec2str() function and largest_t type, removed itoa() and ltoa()
Timo Sirainen <tss@iki.fi>
parents:
56
diff
changeset
|
12 #elif defined (UOFF_T_LONG) |
0ffecd4e7e1a
added dec2str() function and largest_t type, removed itoa() and ltoa()
Timo Sirainen <tss@iki.fi>
parents:
56
diff
changeset
|
13 typedef unsigned long uoff_t; |
0ffecd4e7e1a
added dec2str() function and largest_t type, removed itoa() and ltoa()
Timo Sirainen <tss@iki.fi>
parents:
56
diff
changeset
|
14 #elif defined (UOFF_T_LONG_LONG) |
0ffecd4e7e1a
added dec2str() function and largest_t type, removed itoa() and ltoa()
Timo Sirainen <tss@iki.fi>
parents:
56
diff
changeset
|
15 typedef unsigned long long uoff_t; |
0ffecd4e7e1a
added dec2str() function and largest_t type, removed itoa() and ltoa()
Timo Sirainen <tss@iki.fi>
parents:
56
diff
changeset
|
16 #else |
0ffecd4e7e1a
added dec2str() function and largest_t type, removed itoa() and ltoa()
Timo Sirainen <tss@iki.fi>
parents:
56
diff
changeset
|
17 # error uoff_t size not set |
0ffecd4e7e1a
added dec2str() function and largest_t type, removed itoa() and ltoa()
Timo Sirainen <tss@iki.fi>
parents:
56
diff
changeset
|
18 #endif |
0ffecd4e7e1a
added dec2str() function and largest_t type, removed itoa() and ltoa()
Timo Sirainen <tss@iki.fi>
parents:
56
diff
changeset
|
19 |
678
1e5c655bad25
Renamed largest_t to uintmax_t which already exists in C99.
Timo Sirainen <tss@iki.fi>
parents:
572
diff
changeset
|
20 #ifndef HAVE_UINTMAX_T |
1e5c655bad25
Renamed largest_t to uintmax_t which already exists in C99.
Timo Sirainen <tss@iki.fi>
parents:
572
diff
changeset
|
21 # if SIZEOF_LONG_LONG > 0 |
1e5c655bad25
Renamed largest_t to uintmax_t which already exists in C99.
Timo Sirainen <tss@iki.fi>
parents:
572
diff
changeset
|
22 typedef unsigned long long uintmax_t; |
1e5c655bad25
Renamed largest_t to uintmax_t which already exists in C99.
Timo Sirainen <tss@iki.fi>
parents:
572
diff
changeset
|
23 # else |
1e5c655bad25
Renamed largest_t to uintmax_t which already exists in C99.
Timo Sirainen <tss@iki.fi>
parents:
572
diff
changeset
|
24 typedef unsigned long uintmax_t; |
1e5c655bad25
Renamed largest_t to uintmax_t which already exists in C99.
Timo Sirainen <tss@iki.fi>
parents:
572
diff
changeset
|
25 # endif |
1e5c655bad25
Renamed largest_t to uintmax_t which already exists in C99.
Timo Sirainen <tss@iki.fi>
parents:
572
diff
changeset
|
26 #endif |
1e5c655bad25
Renamed largest_t to uintmax_t which already exists in C99.
Timo Sirainen <tss@iki.fi>
parents:
572
diff
changeset
|
27 |
1e5c655bad25
Renamed largest_t to uintmax_t which already exists in C99.
Timo Sirainen <tss@iki.fi>
parents:
572
diff
changeset
|
28 #ifndef HAVE_SOCKLEN_T |
1e5c655bad25
Renamed largest_t to uintmax_t which already exists in C99.
Timo Sirainen <tss@iki.fi>
parents:
572
diff
changeset
|
29 typedef int socklen_t; |
179
0ffecd4e7e1a
added dec2str() function and largest_t type, removed itoa() and ltoa()
Timo Sirainen <tss@iki.fi>
parents:
56
diff
changeset
|
30 #endif |
0ffecd4e7e1a
added dec2str() function and largest_t type, removed itoa() and ltoa()
Timo Sirainen <tss@iki.fi>
parents:
56
diff
changeset
|
31 |
692
359f73bf84b5
Added CMP_DEV_T macro which uses major()/minor() if possible but fallbacks
Timo Sirainen <tss@iki.fi>
parents:
678
diff
changeset
|
32 #ifdef HAVE_SYS_SYSMACROS_H |
693
21233287e9c1
And the missing sys/sysmacros.h include..
Timo Sirainen <tss@iki.fi>
parents:
692
diff
changeset
|
33 # include <sys/sysmacros.h> |
692
359f73bf84b5
Added CMP_DEV_T macro which uses major()/minor() if possible but fallbacks
Timo Sirainen <tss@iki.fi>
parents:
678
diff
changeset
|
34 # define CMP_DEV_T(a, b) (major(a) == major(b) && minor(a) == minor(b)) |
359f73bf84b5
Added CMP_DEV_T macro which uses major()/minor() if possible but fallbacks
Timo Sirainen <tss@iki.fi>
parents:
678
diff
changeset
|
35 #elif !defined (DEV_T_STRUCT) |
359f73bf84b5
Added CMP_DEV_T macro which uses major()/minor() if possible but fallbacks
Timo Sirainen <tss@iki.fi>
parents:
678
diff
changeset
|
36 # define CMP_DEV_T(a, b) ((a) == (b)) |
359f73bf84b5
Added CMP_DEV_T macro which uses major()/minor() if possible but fallbacks
Timo Sirainen <tss@iki.fi>
parents:
678
diff
changeset
|
37 #else |
359f73bf84b5
Added CMP_DEV_T macro which uses major()/minor() if possible but fallbacks
Timo Sirainen <tss@iki.fi>
parents:
678
diff
changeset
|
38 # error I do not know how to compare dev_t |
359f73bf84b5
Added CMP_DEV_T macro which uses major()/minor() if possible but fallbacks
Timo Sirainen <tss@iki.fi>
parents:
678
diff
changeset
|
39 #endif |
359f73bf84b5
Added CMP_DEV_T macro which uses major()/minor() if possible but fallbacks
Timo Sirainen <tss@iki.fi>
parents:
678
diff
changeset
|
40 |
0 | 41 /* memmove() */ |
42 #ifndef HAVE_MEMMOVE | |
43 # define memmove my_memmove | |
44 void *my_memmove(void *dest, const void *src, size_t n); | |
45 #endif | |
46 | |
47 /* strcasecmp(), strncasecmp() */ | |
48 #ifndef HAVE_STRCASECMP | |
49 # ifdef HAVE_STRICMP | |
50 # define strcasecmp stricmp | |
51 # define strncasecmp strnicmp | |
52 # else | |
53 # define strcasecmp my_strcasecmp | |
54 # define strncasecmp my_strncasecmp | |
55 int my_strcasecmp(const char *s1, const char *s2); | |
56 int my_strncasecmp(const char *s1, const char *s2, size_t max_chars); | |
57 # endif | |
58 #endif | |
59 | |
60 #ifndef HAVE_INET_ATON | |
61 # include <sys/socket.h> | |
62 # include <netinet/in.h> | |
63 # include <arpa/inet.h> | |
64 # define inet_aton my_inet_aton | |
65 int my_inet_aton(const char *cp, struct in_addr *inp); | |
66 #endif | |
67 | |
68 #ifndef HAVE_VSYSLOG | |
69 # define vsyslog my_vsyslog | |
70 void my_vsyslog(int priority, const char *format, va_list args); | |
71 #endif | |
72 | |
5
1b34ec11fff8
Message data is parsed in blocks (no longer entirely mmap()ed). Several
Timo Sirainen <tss@iki.fi>
parents:
0
diff
changeset
|
73 #ifndef HAVE_GETPAGESIZE |
1b34ec11fff8
Message data is parsed in blocks (no longer entirely mmap()ed). Several
Timo Sirainen <tss@iki.fi>
parents:
0
diff
changeset
|
74 # define getpagesize my_getpagesize |
1b34ec11fff8
Message data is parsed in blocks (no longer entirely mmap()ed). Several
Timo Sirainen <tss@iki.fi>
parents:
0
diff
changeset
|
75 int my_getpagesize(void); |
1b34ec11fff8
Message data is parsed in blocks (no longer entirely mmap()ed). Several
Timo Sirainen <tss@iki.fi>
parents:
0
diff
changeset
|
76 #endif |
1b34ec11fff8
Message data is parsed in blocks (no longer entirely mmap()ed). Several
Timo Sirainen <tss@iki.fi>
parents:
0
diff
changeset
|
77 |
494
83d4617e1dca
Check fdatasync() from -lrt if it's not in libc (solaris). Also fallback to
Timo Sirainen <tss@iki.fi>
parents:
410
diff
changeset
|
78 #ifndef HAVE_FDATASYNC |
83d4617e1dca
Check fdatasync() from -lrt if it's not in libc (solaris). Also fallback to
Timo Sirainen <tss@iki.fi>
parents:
410
diff
changeset
|
79 # define fdatasync fsync |
83d4617e1dca
Check fdatasync() from -lrt if it's not in libc (solaris). Also fallback to
Timo Sirainen <tss@iki.fi>
parents:
410
diff
changeset
|
80 #endif |
83d4617e1dca
Check fdatasync() from -lrt if it's not in libc (solaris). Also fallback to
Timo Sirainen <tss@iki.fi>
parents:
410
diff
changeset
|
81 |
410
1f0e7229ee58
Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents:
204
diff
changeset
|
82 #ifndef HAVE_STRUCT_IOVEC |
1f0e7229ee58
Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents:
204
diff
changeset
|
83 struct iovec { |
1f0e7229ee58
Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents:
204
diff
changeset
|
84 void *iov_base; |
1f0e7229ee58
Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents:
204
diff
changeset
|
85 size_t iov_len; |
1f0e7229ee58
Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents:
204
diff
changeset
|
86 }; |
1f0e7229ee58
Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents:
204
diff
changeset
|
87 #endif |
1f0e7229ee58
Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents:
204
diff
changeset
|
88 |
1f0e7229ee58
Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents:
204
diff
changeset
|
89 #ifndef HAVE_WRITEV |
1f0e7229ee58
Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents:
204
diff
changeset
|
90 # define writev my_writev |
1f0e7229ee58
Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents:
204
diff
changeset
|
91 struct iovec; |
1f0e7229ee58
Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents:
204
diff
changeset
|
92 ssize_t my_writev(int fd, const struct iovec *iov, size_t iov_len); |
1f0e7229ee58
Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents:
204
diff
changeset
|
93 #endif |
1f0e7229ee58
Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents:
204
diff
changeset
|
94 |
0 | 95 /* ctype.h isn't safe with signed chars, |
96 use our own instead if really needed */ | |
694
944758e83111
Cast chars to (unsigned int) instead of (int) in i_isdigit() etc. macros.
Timo Sirainen <tss@iki.fi>
parents:
693
diff
changeset
|
97 #define i_toupper(x) ((char) toupper((unsigned int) (unsigned char) (x))) |
944758e83111
Cast chars to (unsigned int) instead of (int) in i_isdigit() etc. macros.
Timo Sirainen <tss@iki.fi>
parents:
693
diff
changeset
|
98 #define i_tolower(x) ((char) tolower((unsigned int) (unsigned char) (x))) |
944758e83111
Cast chars to (unsigned int) instead of (int) in i_isdigit() etc. macros.
Timo Sirainen <tss@iki.fi>
parents:
693
diff
changeset
|
99 #define i_isalnum(x) isalnum((unsigned int) (unsigned char) (x)) |
944758e83111
Cast chars to (unsigned int) instead of (int) in i_isdigit() etc. macros.
Timo Sirainen <tss@iki.fi>
parents:
693
diff
changeset
|
100 #define i_isalpha(x) isalpha((unsigned int) (unsigned char) (x)) |
944758e83111
Cast chars to (unsigned int) instead of (int) in i_isdigit() etc. macros.
Timo Sirainen <tss@iki.fi>
parents:
693
diff
changeset
|
101 #define i_isascii(x) isascii((unsigned int) (unsigned char) (x)) |
944758e83111
Cast chars to (unsigned int) instead of (int) in i_isdigit() etc. macros.
Timo Sirainen <tss@iki.fi>
parents:
693
diff
changeset
|
102 #define i_isblank(x) isblank((unsigned int) (unsigned char) (x)) |
944758e83111
Cast chars to (unsigned int) instead of (int) in i_isdigit() etc. macros.
Timo Sirainen <tss@iki.fi>
parents:
693
diff
changeset
|
103 #define i_iscntrl(x) iscntrl((unsigned int) (unsigned char) (x)) |
944758e83111
Cast chars to (unsigned int) instead of (int) in i_isdigit() etc. macros.
Timo Sirainen <tss@iki.fi>
parents:
693
diff
changeset
|
104 #define i_isdigit(x) isdigit((unsigned int) (unsigned char) (x)) |
944758e83111
Cast chars to (unsigned int) instead of (int) in i_isdigit() etc. macros.
Timo Sirainen <tss@iki.fi>
parents:
693
diff
changeset
|
105 #define i_isgraph(x) isgraph((unsigned int) (unsigned char) (x)) |
944758e83111
Cast chars to (unsigned int) instead of (int) in i_isdigit() etc. macros.
Timo Sirainen <tss@iki.fi>
parents:
693
diff
changeset
|
106 #define i_islower(x) islower((unsigned int) (unsigned char) (x)) |
944758e83111
Cast chars to (unsigned int) instead of (int) in i_isdigit() etc. macros.
Timo Sirainen <tss@iki.fi>
parents:
693
diff
changeset
|
107 #define i_isprint(x) isprint((unsigned int) (unsigned char) (x)) |
944758e83111
Cast chars to (unsigned int) instead of (int) in i_isdigit() etc. macros.
Timo Sirainen <tss@iki.fi>
parents:
693
diff
changeset
|
108 #define i_ispunct(x) ispunct((unsigned int) (unsigned char) (x)) |
944758e83111
Cast chars to (unsigned int) instead of (int) in i_isdigit() etc. macros.
Timo Sirainen <tss@iki.fi>
parents:
693
diff
changeset
|
109 #define i_isspace(x) isspace((unsigned int) (unsigned char) (x)) |
944758e83111
Cast chars to (unsigned int) instead of (int) in i_isdigit() etc. macros.
Timo Sirainen <tss@iki.fi>
parents:
693
diff
changeset
|
110 #define i_isupper(x) isupper((unsigned int) (unsigned char) (x)) |
944758e83111
Cast chars to (unsigned int) instead of (int) in i_isdigit() etc. macros.
Timo Sirainen <tss@iki.fi>
parents:
693
diff
changeset
|
111 #define i_isxdigit(x) isxdigit((unsigned int) (unsigned char) (x)) |
0 | 112 |
572
3c6a0cb061c6
EOVERFLOW doesn't exist everywhere, fallback it to EINVAL.
Timo Sirainen <tss@iki.fi>
parents:
494
diff
changeset
|
113 #ifndef EOVERFLOW |
3c6a0cb061c6
EOVERFLOW doesn't exist everywhere, fallback it to EINVAL.
Timo Sirainen <tss@iki.fi>
parents:
494
diff
changeset
|
114 # define EOVERFLOW EINVAL |
0 | 115 #endif |
572
3c6a0cb061c6
EOVERFLOW doesn't exist everywhere, fallback it to EINVAL.
Timo Sirainen <tss@iki.fi>
parents:
494
diff
changeset
|
116 |
3c6a0cb061c6
EOVERFLOW doesn't exist everywhere, fallback it to EINVAL.
Timo Sirainen <tss@iki.fi>
parents:
494
diff
changeset
|
117 #endif |