annotate src/lib/compat.h @ 3671:77135b9e26b5 HEAD

Include inttypes.h with Tru64 to get uint32_t etc. types defined.
author Timo Sirainen <tss@iki.fi>
date Thu, 20 Oct 2005 12:15:57 +0300
parents 085ebc6e341c
children b18e05b0170d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1 #ifndef __COMPAT_H
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2 #define __COMPAT_H
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3
3671
77135b9e26b5 Include inttypes.h with Tru64 to get uint32_t etc. types defined.
Timo Sirainen <tss@iki.fi>
parents: 3623
diff changeset
4 #if defined (HAVE_INTTYPES_H) && defined(TRU64)
77135b9e26b5 Include inttypes.h with Tru64 to get uint32_t etc. types defined.
Timo Sirainen <tss@iki.fi>
parents: 3623
diff changeset
5 # include <inttypes.h>
77135b9e26b5 Include inttypes.h with Tru64 to get uint32_t etc. types defined.
Timo Sirainen <tss@iki.fi>
parents: 3623
diff changeset
6 #endif
77135b9e26b5 Include inttypes.h with Tru64 to get uint32_t etc. types defined.
Timo Sirainen <tss@iki.fi>
parents: 3623
diff changeset
7
56
62fc6c729962 64bit off_t fixes
Timo Sirainen <tss@iki.fi>
parents: 5
diff changeset
8 /* well, this is obviously wrong since it assumes it's 64bit, but older
62fc6c729962 64bit off_t fixes
Timo Sirainen <tss@iki.fi>
parents: 5
diff changeset
9 GCCs don't define it and we really want it. */
62fc6c729962 64bit off_t fixes
Timo Sirainen <tss@iki.fi>
parents: 5
diff changeset
10 #ifndef LLONG_MAX
62fc6c729962 64bit off_t fixes
Timo Sirainen <tss@iki.fi>
parents: 5
diff changeset
11 # define LLONG_MAX 9223372036854775807LL
62fc6c729962 64bit off_t fixes
Timo Sirainen <tss@iki.fi>
parents: 5
diff changeset
12 #endif
62fc6c729962 64bit off_t fixes
Timo Sirainen <tss@iki.fi>
parents: 5
diff changeset
13
179
0ffecd4e7e1a added dec2str() function and largest_t type, removed itoa() and ltoa()
Timo Sirainen <tss@iki.fi>
parents: 56
diff changeset
14 #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
15 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
16 #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
17 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
18 #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
19 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
20 #else
0ffecd4e7e1a added dec2str() function and largest_t type, removed itoa() and ltoa()
Timo Sirainen <tss@iki.fi>
parents: 56
diff changeset
21 # 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
22 #endif
0ffecd4e7e1a added dec2str() function and largest_t type, removed itoa() and ltoa()
Timo Sirainen <tss@iki.fi>
parents: 56
diff changeset
23
678
1e5c655bad25 Renamed largest_t to uintmax_t which already exists in C99.
Timo Sirainen <tss@iki.fi>
parents: 572
diff changeset
24 #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
25 # 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
26 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
27 # else
1e5c655bad25 Renamed largest_t to uintmax_t which already exists in C99.
Timo Sirainen <tss@iki.fi>
parents: 572
diff changeset
28 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
29 # endif
908
bc55266563cd Use separate check for uint_fast32_t.
Timo Sirainen <tss@iki.fi>
parents: 903
diff changeset
30 #endif
903
fd8888f6f037 Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents: 805
diff changeset
31
908
bc55266563cd Use separate check for uint_fast32_t.
Timo Sirainen <tss@iki.fi>
parents: 903
diff changeset
32 #ifndef HAVE_UINT_FAST32_T
903
fd8888f6f037 Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents: 805
diff changeset
33 # if SIZEOF_INT >= 4
fd8888f6f037 Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents: 805
diff changeset
34 typedef unsigned int uint_fast32_t;
fd8888f6f037 Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents: 805
diff changeset
35 # else
fd8888f6f037 Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents: 805
diff changeset
36 typedef unsigned long uint_fast32_t;
fd8888f6f037 Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents: 805
diff changeset
37 # endif
678
1e5c655bad25 Renamed largest_t to uintmax_t which already exists in C99.
Timo Sirainen <tss@iki.fi>
parents: 572
diff changeset
38 #endif
1e5c655bad25 Renamed largest_t to uintmax_t which already exists in C99.
Timo Sirainen <tss@iki.fi>
parents: 572
diff changeset
39
1e5c655bad25 Renamed largest_t to uintmax_t which already exists in C99.
Timo Sirainen <tss@iki.fi>
parents: 572
diff changeset
40 #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
41 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
42 #endif
0ffecd4e7e1a added dec2str() function and largest_t type, removed itoa() and ltoa()
Timo Sirainen <tss@iki.fi>
parents: 56
diff changeset
43
692
359f73bf84b5 Added CMP_DEV_T macro which uses major()/minor() if possible but fallbacks
Timo Sirainen <tss@iki.fi>
parents: 678
diff changeset
44 #ifdef HAVE_SYS_SYSMACROS_H
693
21233287e9c1 And the missing sys/sysmacros.h include..
Timo Sirainen <tss@iki.fi>
parents: 692
diff changeset
45 # 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
46 # 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
47 #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
48 # 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
49 #else
359f73bf84b5 Added CMP_DEV_T macro which uses major()/minor() if possible but fallbacks
Timo Sirainen <tss@iki.fi>
parents: 678
diff changeset
50 # 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
51 #endif
359f73bf84b5 Added CMP_DEV_T macro which uses major()/minor() if possible but fallbacks
Timo Sirainen <tss@iki.fi>
parents: 678
diff changeset
52
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
53 /* strcasecmp(), strncasecmp() */
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
54 #ifndef HAVE_STRCASECMP
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
55 # ifdef HAVE_STRICMP
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
56 # define strcasecmp stricmp
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
57 # define strncasecmp strnicmp
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
58 # else
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
59 # define strcasecmp my_strcasecmp
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
60 # define strncasecmp my_strncasecmp
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
61 int my_strcasecmp(const char *s1, const char *s2);
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
62 int my_strncasecmp(const char *s1, const char *s2, size_t max_chars);
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
63 # endif
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
64 #endif
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
65
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
66 #ifndef HAVE_INET_ATON
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
67 # include <sys/socket.h>
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
68 # include <netinet/in.h>
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
69 # include <arpa/inet.h>
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
70 # define inet_aton my_inet_aton
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
71 int my_inet_aton(const char *cp, struct in_addr *inp);
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
72 #endif
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
73
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
74 #ifndef HAVE_VSYSLOG
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
75 # define vsyslog my_vsyslog
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
76 void my_vsyslog(int priority, const char *format, va_list args);
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
77 #endif
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
78
5
1b34ec11fff8 Message data is parsed in blocks (no longer entirely mmap()ed). Several
Timo Sirainen <tss@iki.fi>
parents: 0
diff changeset
79 #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
80 # 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
81 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
82 #endif
1b34ec11fff8 Message data is parsed in blocks (no longer entirely mmap()ed). Several
Timo Sirainen <tss@iki.fi>
parents: 0
diff changeset
83
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
84 #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
85 # 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
86 #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
87
1915
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1852
diff changeset
88 struct const_iovec {
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1852
diff changeset
89 const void *iov_base;
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1852
diff changeset
90 size_t iov_len;
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1852
diff changeset
91 };
79790750c349 importing new index code. mbox still broken.
Timo Sirainen <tss@iki.fi>
parents: 1852
diff changeset
92
410
1f0e7229ee58 Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents: 204
diff changeset
93 #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
94 struct iovec {
1f0e7229ee58 Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents: 204
diff changeset
95 void *iov_base;
1f0e7229ee58 Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents: 204
diff changeset
96 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
97 };
1f0e7229ee58 Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents: 204
diff changeset
98 #endif
1f0e7229ee58 Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents: 204
diff changeset
99
3623
085ebc6e341c Use IOV_MAX instead of UIO_MAXIOV when available.
Timo Sirainen <tss@iki.fi>
parents: 3237
diff changeset
100 /* IOV_MAX should be in limits.h nowadays. Linux still (2005) requires
085ebc6e341c Use IOV_MAX instead of UIO_MAXIOV when available.
Timo Sirainen <tss@iki.fi>
parents: 3237
diff changeset
101 defining _XOPEN_SOURCE to get that value. UIO_MAXIOV works with it though,
085ebc6e341c Use IOV_MAX instead of UIO_MAXIOV when available.
Timo Sirainen <tss@iki.fi>
parents: 3237
diff changeset
102 so use it instead. 16 is the lowest acceptable value for all OSes. */
085ebc6e341c Use IOV_MAX instead of UIO_MAXIOV when available.
Timo Sirainen <tss@iki.fi>
parents: 3237
diff changeset
103 #ifndef IOV_MAX
085ebc6e341c Use IOV_MAX instead of UIO_MAXIOV when available.
Timo Sirainen <tss@iki.fi>
parents: 3237
diff changeset
104 # include <sys/uio.h>
085ebc6e341c Use IOV_MAX instead of UIO_MAXIOV when available.
Timo Sirainen <tss@iki.fi>
parents: 3237
diff changeset
105 # ifdef UIO_MAXIOV
085ebc6e341c Use IOV_MAX instead of UIO_MAXIOV when available.
Timo Sirainen <tss@iki.fi>
parents: 3237
diff changeset
106 # define IOV_MAX UIO_MAXIOV
085ebc6e341c Use IOV_MAX instead of UIO_MAXIOV when available.
Timo Sirainen <tss@iki.fi>
parents: 3237
diff changeset
107 # else
085ebc6e341c Use IOV_MAX instead of UIO_MAXIOV when available.
Timo Sirainen <tss@iki.fi>
parents: 3237
diff changeset
108 # define IOV_MAX 16
085ebc6e341c Use IOV_MAX instead of UIO_MAXIOV when available.
Timo Sirainen <tss@iki.fi>
parents: 3237
diff changeset
109 # endif
085ebc6e341c Use IOV_MAX instead of UIO_MAXIOV when available.
Timo Sirainen <tss@iki.fi>
parents: 3237
diff changeset
110 #endif
085ebc6e341c Use IOV_MAX instead of UIO_MAXIOV when available.
Timo Sirainen <tss@iki.fi>
parents: 3237
diff changeset
111
410
1f0e7229ee58 Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents: 204
diff changeset
112 #ifndef HAVE_WRITEV
1f0e7229ee58 Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents: 204
diff changeset
113 # 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
114 struct iovec;
704
fdc1fafb533d writev()'s 3rd parameter is declared as "int" pretty much everywhere, so we
Timo Sirainen <tss@iki.fi>
parents: 696
diff changeset
115 ssize_t my_writev(int fd, const struct iovec *iov, int iov_len);
410
1f0e7229ee58 Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents: 204
diff changeset
116 #endif
1f0e7229ee58 Split IOBuffer into mmaped IBuffer, file IBuffer, memory data IBuffer and
Timo Sirainen <tss@iki.fi>
parents: 204
diff changeset
117
1849
83c635deda0b pread/pwrite fixes
Timo Sirainen <tss@iki.fi>
parents: 1793
diff changeset
118 #if !defined (HAVE_PREAD) || defined (PREAD_WRAPPERS)
1852
29729fa90bb2 more kludgeing to get pread/pwrite working
Timo Sirainen <tss@iki.fi>
parents: 1849
diff changeset
119 # ifndef IN_COMPAT_C
29729fa90bb2 more kludgeing to get pread/pwrite working
Timo Sirainen <tss@iki.fi>
parents: 1849
diff changeset
120 # define pread my_pread
29729fa90bb2 more kludgeing to get pread/pwrite working
Timo Sirainen <tss@iki.fi>
parents: 1849
diff changeset
121 # define pwrite my_pwrite
29729fa90bb2 more kludgeing to get pread/pwrite working
Timo Sirainen <tss@iki.fi>
parents: 1849
diff changeset
122 # endif
1793
82e19ad18784 If we don't have function foo, do it always as #define foo my_foo and create
Timo Sirainen <tss@iki.fi>
parents: 1669
diff changeset
123 ssize_t my_pread(int fd, void *buf, size_t count, off_t offset);
82e19ad18784 If we don't have function foo, do it always as #define foo my_foo and create
Timo Sirainen <tss@iki.fi>
parents: 1669
diff changeset
124 ssize_t my_pwrite(int fd, const void *buf, size_t count, off_t offset);
1669
a0dd52443420 Added pwrite() compatibility
Timo Sirainen <tss@iki.fi>
parents: 1483
diff changeset
125 #endif
a0dd52443420 Added pwrite() compatibility
Timo Sirainen <tss@iki.fi>
parents: 1483
diff changeset
126
2705
20dcf58cc05c Add seteuid() wrapper for HP-UX
Timo Sirainen <tss@iki.fi>
parents: 1915
diff changeset
127 #ifndef HAVE_SETEUID
2872
c0e2a38b7647 Check for libgen.h and if it's not found, use my_basename(). Also
Timo Sirainen <tss@iki.fi>
parents: 2705
diff changeset
128 # define seteuid my_seteuid
2705
20dcf58cc05c Add seteuid() wrapper for HP-UX
Timo Sirainen <tss@iki.fi>
parents: 1915
diff changeset
129 int my_seteuid(uid_t euid);
20dcf58cc05c Add seteuid() wrapper for HP-UX
Timo Sirainen <tss@iki.fi>
parents: 1915
diff changeset
130 #endif
20dcf58cc05c Add seteuid() wrapper for HP-UX
Timo Sirainen <tss@iki.fi>
parents: 1915
diff changeset
131
3237
2f57438d9542 Added setegid() emulation for HP-UX.
Timo Sirainen <tss@iki.fi>
parents: 3002
diff changeset
132 #ifndef HAVE_SETEGID
2f57438d9542 Added setegid() emulation for HP-UX.
Timo Sirainen <tss@iki.fi>
parents: 3002
diff changeset
133 # define setegid my_setegid
2f57438d9542 Added setegid() emulation for HP-UX.
Timo Sirainen <tss@iki.fi>
parents: 3002
diff changeset
134 int my_setegid(gid_t egid);
2f57438d9542 Added setegid() emulation for HP-UX.
Timo Sirainen <tss@iki.fi>
parents: 3002
diff changeset
135 #endif
2f57438d9542 Added setegid() emulation for HP-UX.
Timo Sirainen <tss@iki.fi>
parents: 3002
diff changeset
136
2872
c0e2a38b7647 Check for libgen.h and if it's not found, use my_basename(). Also
Timo Sirainen <tss@iki.fi>
parents: 2705
diff changeset
137 #ifndef HAVE_LIBGEN_H
c0e2a38b7647 Check for libgen.h and if it's not found, use my_basename(). Also
Timo Sirainen <tss@iki.fi>
parents: 2705
diff changeset
138 # define basename my_basename
c0e2a38b7647 Check for libgen.h and if it's not found, use my_basename(). Also
Timo Sirainen <tss@iki.fi>
parents: 2705
diff changeset
139 char *my_basename(char *path);
c0e2a38b7647 Check for libgen.h and if it's not found, use my_basename(). Also
Timo Sirainen <tss@iki.fi>
parents: 2705
diff changeset
140 #endif
c0e2a38b7647 Check for libgen.h and if it's not found, use my_basename(). Also
Timo Sirainen <tss@iki.fi>
parents: 2705
diff changeset
141
3002
9f765960fca6 If strtoull() isn't supported, fallback to strtouq(). If that's not found
Timo Sirainen <tss@iki.fi>
parents: 2872
diff changeset
142 #ifndef HAVE_STRTOULL
9f765960fca6 If strtoull() isn't supported, fallback to strtouq(). If that's not found
Timo Sirainen <tss@iki.fi>
parents: 2872
diff changeset
143 # define strtoull my_strtoull
9f765960fca6 If strtoull() isn't supported, fallback to strtouq(). If that's not found
Timo Sirainen <tss@iki.fi>
parents: 2872
diff changeset
144 unsigned long long int my_strtoull(const char *nptr, char **endptr, int base);
9f765960fca6 If strtoull() isn't supported, fallback to strtouq(). If that's not found
Timo Sirainen <tss@iki.fi>
parents: 2872
diff changeset
145 #endif
9f765960fca6 If strtoull() isn't supported, fallback to strtouq(). If that's not found
Timo Sirainen <tss@iki.fi>
parents: 2872
diff changeset
146
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
147 /* ctype.h isn't safe with signed chars,
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
148 use our own instead if really needed */
696
c7f42a8e7176 Reverted back the isdigit()/etc. They're defined to get int argument, so we
Timo Sirainen <tss@iki.fi>
parents: 694
diff changeset
149 #define i_toupper(x) ((char) toupper((int) (unsigned char) (x)))
c7f42a8e7176 Reverted back the isdigit()/etc. They're defined to get int argument, so we
Timo Sirainen <tss@iki.fi>
parents: 694
diff changeset
150 #define i_tolower(x) ((char) tolower((int) (unsigned char) (x)))
c7f42a8e7176 Reverted back the isdigit()/etc. They're defined to get int argument, so we
Timo Sirainen <tss@iki.fi>
parents: 694
diff changeset
151 #define i_isalnum(x) isalnum((int) (unsigned char) (x))
c7f42a8e7176 Reverted back the isdigit()/etc. They're defined to get int argument, so we
Timo Sirainen <tss@iki.fi>
parents: 694
diff changeset
152 #define i_isalpha(x) isalpha((int) (unsigned char) (x))
c7f42a8e7176 Reverted back the isdigit()/etc. They're defined to get int argument, so we
Timo Sirainen <tss@iki.fi>
parents: 694
diff changeset
153 #define i_isascii(x) isascii((int) (unsigned char) (x))
c7f42a8e7176 Reverted back the isdigit()/etc. They're defined to get int argument, so we
Timo Sirainen <tss@iki.fi>
parents: 694
diff changeset
154 #define i_isblank(x) isblank((int) (unsigned char) (x))
c7f42a8e7176 Reverted back the isdigit()/etc. They're defined to get int argument, so we
Timo Sirainen <tss@iki.fi>
parents: 694
diff changeset
155 #define i_iscntrl(x) iscntrl((int) (unsigned char) (x))
c7f42a8e7176 Reverted back the isdigit()/etc. They're defined to get int argument, so we
Timo Sirainen <tss@iki.fi>
parents: 694
diff changeset
156 #define i_isdigit(x) isdigit((int) (unsigned char) (x))
c7f42a8e7176 Reverted back the isdigit()/etc. They're defined to get int argument, so we
Timo Sirainen <tss@iki.fi>
parents: 694
diff changeset
157 #define i_isgraph(x) isgraph((int) (unsigned char) (x))
c7f42a8e7176 Reverted back the isdigit()/etc. They're defined to get int argument, so we
Timo Sirainen <tss@iki.fi>
parents: 694
diff changeset
158 #define i_islower(x) islower((int) (unsigned char) (x))
c7f42a8e7176 Reverted back the isdigit()/etc. They're defined to get int argument, so we
Timo Sirainen <tss@iki.fi>
parents: 694
diff changeset
159 #define i_isprint(x) isprint((int) (unsigned char) (x))
c7f42a8e7176 Reverted back the isdigit()/etc. They're defined to get int argument, so we
Timo Sirainen <tss@iki.fi>
parents: 694
diff changeset
160 #define i_ispunct(x) ispunct((int) (unsigned char) (x))
c7f42a8e7176 Reverted back the isdigit()/etc. They're defined to get int argument, so we
Timo Sirainen <tss@iki.fi>
parents: 694
diff changeset
161 #define i_isspace(x) isspace((int) (unsigned char) (x))
c7f42a8e7176 Reverted back the isdigit()/etc. They're defined to get int argument, so we
Timo Sirainen <tss@iki.fi>
parents: 694
diff changeset
162 #define i_isupper(x) isupper((int) (unsigned char) (x))
c7f42a8e7176 Reverted back the isdigit()/etc. They're defined to get int argument, so we
Timo Sirainen <tss@iki.fi>
parents: 694
diff changeset
163 #define i_isxdigit(x) isxdigit((int) (unsigned char) (x))
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
164
572
3c6a0cb061c6 EOVERFLOW doesn't exist everywhere, fallback it to EINVAL.
Timo Sirainen <tss@iki.fi>
parents: 494
diff changeset
165 #ifndef EOVERFLOW
3c6a0cb061c6 EOVERFLOW doesn't exist everywhere, fallback it to EINVAL.
Timo Sirainen <tss@iki.fi>
parents: 494
diff changeset
166 # define EOVERFLOW EINVAL
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
167 #endif
572
3c6a0cb061c6 EOVERFLOW doesn't exist everywhere, fallback it to EINVAL.
Timo Sirainen <tss@iki.fi>
parents: 494
diff changeset
168
1325
e026f8e4d241 Handle EDQUOT errno as "not enough disk space" like ENOSPC.
Timo Sirainen <tss@iki.fi>
parents: 908
diff changeset
169 #ifdef EDQUOT
e026f8e4d241 Handle EDQUOT errno as "not enough disk space" like ENOSPC.
Timo Sirainen <tss@iki.fi>
parents: 908
diff changeset
170 # define ENOSPACE(errno) ((errno) == ENOSPC || (errno) == EDQUOT)
e026f8e4d241 Handle EDQUOT errno as "not enough disk space" like ENOSPC.
Timo Sirainen <tss@iki.fi>
parents: 908
diff changeset
171 #else
e026f8e4d241 Handle EDQUOT errno as "not enough disk space" like ENOSPC.
Timo Sirainen <tss@iki.fi>
parents: 908
diff changeset
172 # define ENOSPACE(errno) ((errno) == ENOSPC)
572
3c6a0cb061c6 EOVERFLOW doesn't exist everywhere, fallback it to EINVAL.
Timo Sirainen <tss@iki.fi>
parents: 494
diff changeset
173 #endif
1325
e026f8e4d241 Handle EDQUOT errno as "not enough disk space" like ENOSPC.
Timo Sirainen <tss@iki.fi>
parents: 908
diff changeset
174
1483
836c952e17ec More robust error handling for mbox.
Timo Sirainen <tss@iki.fi>
parents: 1325
diff changeset
175 /* EPERM is returned sometimes if device doesn't support such modification */
836c952e17ec More robust error handling for mbox.
Timo Sirainen <tss@iki.fi>
parents: 1325
diff changeset
176 #ifdef EROFS
836c952e17ec More robust error handling for mbox.
Timo Sirainen <tss@iki.fi>
parents: 1325
diff changeset
177 # define ENOACCESS(errno) \
836c952e17ec More robust error handling for mbox.
Timo Sirainen <tss@iki.fi>
parents: 1325
diff changeset
178 ((errno) == EACCES || (errno) == EROFS || (errno) == EPERM)
836c952e17ec More robust error handling for mbox.
Timo Sirainen <tss@iki.fi>
parents: 1325
diff changeset
179 #else
836c952e17ec More robust error handling for mbox.
Timo Sirainen <tss@iki.fi>
parents: 1325
diff changeset
180 # define ENOACCESS(errno) ((errno) == EACCES || (errno) == EPERM)
1325
e026f8e4d241 Handle EDQUOT errno as "not enough disk space" like ENOSPC.
Timo Sirainen <tss@iki.fi>
parents: 908
diff changeset
181 #endif
1483
836c952e17ec More robust error handling for mbox.
Timo Sirainen <tss@iki.fi>
parents: 1325
diff changeset
182
836c952e17ec More robust error handling for mbox.
Timo Sirainen <tss@iki.fi>
parents: 1325
diff changeset
183 #define ENOTFOUND(errno) \
836c952e17ec More robust error handling for mbox.
Timo Sirainen <tss@iki.fi>
parents: 1325
diff changeset
184 ((errno) == ENOENT || (errno) == ENOTDIR || (errno) == ELOOP)
836c952e17ec More robust error handling for mbox.
Timo Sirainen <tss@iki.fi>
parents: 1325
diff changeset
185
836c952e17ec More robust error handling for mbox.
Timo Sirainen <tss@iki.fi>
parents: 1325
diff changeset
186 #endif