Annotation of src/usr.bin/sudo/compat.h, Revision 1.1.1.1
1.1 millert 1: /*
2: * Copyright (c) 1996, 1998, 1999 Todd C. Miller <Todd.Miller@courtesan.com>
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms, with or without
6: * modification, are permitted provided that the following conditions
7: * are met:
8: *
9: * 1. Redistributions of source code must retain the above copyright
10: * notice, this list of conditions and the following disclaimer.
11: *
12: * 2. Redistributions in binary form must reproduce the above copyright
13: * notice, this list of conditions and the following disclaimer in the
14: * documentation and/or other materials provided with the distribution.
15: *
16: * 3. The name of the author may not be used to endorse or promote products
17: * derived from this software without specific prior written permission.
18: *
19: * 4. Products derived from this software may not be called "Sudo" nor
20: * may "Sudo" appear in their names without specific prior written
21: * permission from the author.
22: *
23: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
24: * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
25: * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
26: * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
27: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
28: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
29: * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
30: * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
31: * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
32: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33: *
34: * $Sudo: compat.h,v 1.54 1999/10/08 01:12:49 millert Exp $
35: */
36:
37: #ifndef _SUDO_COMPAT_H
38: #define _SUDO_COMPAT_H
39:
40: /*
41: * Macros that may be missing on some Operating Systems
42: */
43:
44: /* Deal with ANSI stuff reasonably. */
45: #ifndef __P
46: # if defined (__cplusplus) || defined (__STDC__)
47: # define __P(args) args
48: # else
49: # define __P(args) ()
50: # endif
51: #endif /* __P */
52:
53: /*
54: * Some systems (ie ISC V/386) do not define MAXPATHLEN even in param.h
55: */
56: #ifndef MAXPATHLEN
57: # define MAXPATHLEN 1024
58: #endif
59:
60: /*
61: * Some systems do not define MAXHOSTNAMELEN.
62: */
63: #ifndef MAXHOSTNAMELEN
64: # define MAXHOSTNAMELEN 64
65: #endif
66:
67: /*
68: * 4.2BSD lacks FD_* macros (we only use FD_SET and FD_ZERO)
69: */
70: #ifndef FD_SETSIZE
71: # define FD_SET(fd, fds) ((fds) -> fds_bits[0] |= (1 << (fd)))
72: # define FD_ZERO(fds) ((fds) -> fds_bits[0] = 0)
73: #endif /* !FD_SETSIZE */
74:
75: /*
76: * Posix versions for those without...
77: */
78: #ifndef _S_IFMT
79: # define _S_IFMT S_IFMT
80: #endif /* _S_IFMT */
81: #ifndef _S_IFREG
82: # define _S_IFREG S_IFREG
83: #endif /* _S_IFREG */
84: #ifndef _S_IFDIR
85: # define _S_IFDIR S_IFDIR
86: #endif /* _S_IFDIR */
87: #ifndef _S_IFLNK
88: # define _S_IFLNK S_IFLNK
89: #endif /* _S_IFLNK */
90: #ifndef S_ISREG
91: # define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG)
92: #endif /* S_ISREG */
93: #ifndef S_ISDIR
94: # define S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR)
95: #endif /* S_ISDIR */
96:
97: /*
98: * Some OS's may not have this.
99: */
100: #ifndef S_IRWXU
101: # define S_IRWXU 0000700 /* rwx for owner */
102: #endif /* S_IRWXU */
103:
104: /*
105: * In case this is not defined in <sys/types.h> or <sys/select.h>
106: */
107: #ifndef howmany
108: # define howmany(x, y) (((x) + ((y) - 1)) / (y))
109: #endif
110:
111: /*
112: * These should be defined in <unistd.h> but not everyone has them.
113: */
114: #ifndef STDIN_FILENO
115: # define STDIN_FILENO 0
116: #endif
117: #ifndef STDOUT_FILENO
118: # define STDOUT_FILENO 1
119: #endif
120: #ifndef STDERR_FILENO
121: # define STDERR_FILENO 2
122: #endif
123:
124: /*
125: * These should be defined in <unistd.h> but not everyone has them.
126: */
127: #ifndef SEEK_SET
128: # define SEEK_SET 0
129: #endif
130: #ifndef SEEK_CUR
131: # define SEEK_CUR 1
132: #endif
133: #ifndef SEEK_END
134: # define SEEK_END 2
135: #endif
136:
137: /*
138: * BSD defines these in <sys/param.h> but others may not.
139: */
140: #ifndef MIN
141: # define MIN(a,b) (((a)<(b))?(a):(b))
142: #endif
143: #ifndef MAX
144: # define MAX(a,b) (((a)>(b))?(a):(b))
145: #endif
146:
147: /*
148: * Emulate seteuid() for HP-UX via setresuid(2) and seteuid(2) for others.
149: */
150: #ifndef HAVE_SETEUID
151: # ifdef __hpux
152: # define seteuid(_EUID) (setresuid((uid_t) -1, _EUID, (uid_t) -1))
153: # else
154: # define seteuid(_EUID) (setreuid((uid_t) -1, _EUID))
155: # endif /* __hpux */
156: #endif /* HAVE_SETEUID */
157:
158: /*
159: * On POSIX systems, O_NOCTTY is the default so some OS's may lack this define.
160: */
161: #ifndef O_NOCTTY
162: # define O_NOCTTY 0
163: #endif /* O_NOCTTY */
164:
165: #endif /* _SUDO_COMPAT_H */