1 /* This file is part of the Project Athena Zephyr Notification System.
2  * It contains system-dependent header code.
3  *
4  *	Created by:	Greg Hudson
5  *
6  *	Copyright (c) 1988,1991 by the Massachusetts Institute of Technology.
7  *	For copying and distribution information, see the file
8  *	"mit-copyright.h".
9  */
10 
11 #ifndef __SYSDEP_H__
12 #define __SYSDEP_H__
13 
14 #include <config.h>
15 #include <stdio.h>
16 #include <errno.h>
17 #include <ctype.h>
18 #include <time.h>
19 #include <signal.h>
20 #ifndef WIN32
21 #include <syslog.h>
22 #endif
23 
24 #include <sys/types.h>
25 #include <sys/stat.h>
26 #include <sys/param.h>
27 #include <sys/time.h>
28 
29 #if defined(STDC_HEADERS) || defined(HAVE_STDLIB_H)
30 # include <stdlib.h>
31 #else
32 # ifdef HAVE_MALLOC_H
33 #  include <malloc.h>
34 # else
35 char *malloc(), *realloc(void);
36 # endif
37 char *getenv(), *strerror(), *ctime(), *strcpy(void);
38 time_t time(void);
39 ZEPHYR_INT32 random(void);
40 #endif
41 
42 #ifndef HAVE_RANDOM
43 #ifdef HAVE_LRAND48
44 #define random lrand48
45 #define srandom srand48
46 #else
47 #define random rand
48 #define srandom srand
49 #endif
50 #endif
51 
52 #ifndef HAVE_STRERROR
53 extern char *sys_errlist[];
54 # define strerror(x) (sys_errlist[(x)])
55 #endif
56 
57 /* Strings. */
58 #if defined(STDC_HEADERS) || defined(HAVE_STRING_H)
59 # include <string.h>
60 #else
61 # ifndef HAVE_STRCHR
62 #  define strchr index
63 #  define strrchr rindex
64 # endif
65 char *strchr(), *strrchr(void);
66 # ifndef HAVE_MEMCPY
67 #  define memcpy(d, s, n) bcopy ((s), (d), (n))
68 #  define memcmp bcmp
69 # endif
70 # ifndef HAVE_MEMMOVE
71 #  define memmove(d, s, n) bcopy ((s), (d), (n))
72 # endif
73 #endif
74 
75 /* Exit status handling and wait(). */
76 #ifdef HAVE_SYS_WAIT_H
77 # include <sys/wait.h>
78 #endif
79 #ifndef WEXITSTATUS
80 # define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
81 #endif
82 #ifndef WIFEXITED
83 # define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
84 #endif
85 
86 #ifdef HAVE_SYS_CDEFS_H
87 #include <sys/cdefs.h>
88 #endif
89 
90 /* Because we have public header files (and our prototypes need to agree with
91  * those header files, use __STDC__ to guess whether the compiler can handle
92  * stdarg, const, and prototypes. */
93 #ifdef __STDC__
94 # include <stdarg.h>
95 # define VA_START(ap, last) va_start(ap, last)
96 # ifndef __P
97 #  define __P(x) x
98 # endif
99 #else
100 # include <varargs.h>
101 # define VA_START(ap, last) va_start(ap)
102 # define const
103 # ifndef __P
104 #  define __P(x) ()
105 # endif
106 #endif
107 
108 /* openlog(). */
109 #ifdef LOG_AUTH
110 /* A decent syslog */
111 #define OPENLOG(str, opts, facility)	openlog(str, opts, facility)
112 #else
113 /* Probably a 4.2-type syslog */
114 #define OPENLOG(str, opts, facility)	openlog(str, opts)
115 #endif
116 
117 #ifdef HAVE_FCNTL_H
118 # include <fcntl.h>
119 #endif
120 
121 #ifdef HAVE_PATHS_H
122 # include <paths.h>
123 # define TEMP_DIRECTORY _PATH_VARTMP
124 #else
125 # define TEMP_DIRECTORY FOUND_TMP
126 #endif
127 
128 #ifdef HAVE_UNISTD_H
129 # include <unistd.h>
130 #else
131 # ifdef HAVE_SYS_FILE_H
132 #  include <sys/file.h>
133 # endif
134 uid_t getuid(void);
135 char *ttyname(void);
136 #ifdef HAVE_GETHOSTID
137 ZEPHYR_INT32 gethostid(void);
138 #endif
139 #endif
140 
141 #ifndef STDIN_FILENO
142 #define STDIN_FILENO 0
143 #define STDOUT_FILENO 1
144 #define STDERR_FILENO 2
145 #endif
146 
147 #ifdef HAVE_TERMIOS_H
148 # include <termios.h>
149 #else
150 # ifdef HAVE_SYS_FILIO_H
151 #  include <sys/filio.h>
152 # else
153 #  ifdef HAVE_SGTTY_H
154 #   include <sgtty.h>
155 #  endif
156 #  ifdef HAVE_SYS_IOCTL_H
157 #   include <sys/ioctl.h>
158 #  endif
159 # endif
160 #endif
161 
162 /* Kerberos compatibility. */
163 #ifdef ZEPHYR_USES_KERBEROS
164 # include <krb.h>
165 #ifdef WIN32
166 
167 #else
168 # include <krb_err.h>
169 #endif /* WIN32 */
170 # include <des.h>
171 #ifndef WIN32
172 # ifndef HAVE_KRB_GET_ERR_TEXT
173 #  define krb_get_err_text(n)	krb_err_txt[n]
174 # endif
175 #endif /* WIN32 */
176 # ifndef HAVE_KRB_LOG
177 #  define krb_log		log
178 # endif
179 #endif /* ZEPHYR_USES_KERBEROS */
180 
181 #ifdef HAVE_SYS_UIO_H
182 # include <sys/uio.h>
183 #endif
184 
185 #ifdef HAVE_SYS_UTSNAME_H
186 # include <sys/utsname.h>
187 #endif
188 
189 #ifdef HAVE_SYS_SELECT_H
190 # include <sys/select.h>
191 #endif
192 
193 #ifdef HAVE_SYS_MSGBUF_H
194 #include <sys/msgbuf.h>
195 #endif
196 
197 #ifndef MSG_BSIZE
198 #define MSG_BSIZE BUFSIZ
199 #endif
200 
201 #endif /* __SYSDEP_H__ */
202 
203