2 /* some useful defines */
9 #define ISDIGIT_LOCALE(c) (IN_CTYPE_DOMAIN (c) && isdigit (c))
11 /* Take care of NLS matters. */
17 # define setlocale(category, locale) (NULL)
23 #define gettext_noop(String) (String)
24 /* #define gettext_def(String) "#define String" */
28 # define _(Text) gettext (Text)
30 # undef bindtextdomain
31 # define bindtextdomain(Domain, Directory) (NULL)
33 # define textdomain(Domain) (NULL)
35 # define ngettext(Msgid1, Msgid2, N) \
36 ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
42 #else /* not STDC_HEADERS */
45 # define strrchr rindex
47 char *strchr (), *strrchr (), *strtok ();
50 # define memcpy(d, s, n) bcopy((s), (d), (n))
52 #endif /* not STDC_HEADERS */
59 #include <sys/types.h>
61 # include <sys/wait.h>
64 # define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
67 # define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
74 #if TIME_WITH_SYS_TIME
75 # include <sys/time.h>
77 #else /* not TIME_WITH_SYS_TIME */
79 # include <sys/time.h>
83 #endif /* not TIME_WITH_SYS_TIME */
86 # define memzero(ptr, size) memset((void *)(ptr), 0, (size))
88 # define memzero(ptr, size) bzero((char *)(ptr), (size))
90 #define strzero(s) memzero(s, strlen(s)) /* warning: evaluates twice */
92 #ifdef HAVE_DIRENT_H /* DIR_SYSV */
94 # define DIRECT dirent
96 # ifdef HAVE_SYS_NDIR_H /* DIR_XENIX */
97 # include <sys/ndir.h>
99 # ifdef HAVE_SYS_DIR_H /* DIR_??? */
100 # include <sys/dir.h>
102 # ifdef HAVE_NDIR_H /* DIR_BSD */
105 # define DIRECT direct
110 * - /usr/include/shadow.h exists and includes the shadow group stuff.
111 * - /usr/include/shadow.h exists, but we use our own gshadow.h.
114 #if defined(SHADOWGRP) && !defined(GSHADOW)
115 #include "gshadow_.h"
122 #define NGROUPS_MAX NGROUPS
124 #define NGROUPS_MAX 64
132 #define LOG_WARN LOG_WARNING
135 /* LOG_NOWAIT is deprecated */
140 /* LOG_AUTH is deprecated, use LOG_AUTHPRIV instead */
142 #define LOG_AUTHPRIV LOG_AUTH
145 /* cleaner than lots of #ifdefs everywhere - use this as follows:
146 SYSLOG((LOG_CRIT, "user %s cracked root", user)); */
148 /* Temporarily set LC_TIME to "C" to avoid strange dates in syslog.
149 This is a workaround for a more general syslog(d) design problem -
150 syslogd should log the current system time for each event, and not
151 trust the formatted time received from the unix domain (or worse,
153 /* Avoid translated PAM error messages: Set LC_ALL to "C".
157 char *saved_locale = setlocale(LC_ALL, NULL); \
159 saved_locale = strdup(saved_locale); \
161 setlocale(LC_ALL, "C"); \
163 if (saved_locale) { \
164 setlocale(LC_ALL, saved_locale); \
165 free(saved_locale); \
168 #else /* !ENABLE_NLS */
169 #define SYSLOG(x) syslog x
170 #endif /* !ENABLE_NLS */
172 #else /* !USE_SYSLOG */
174 #define SYSLOG(x) /* empty */
175 #define openlog(a,b,c) /* empty */
176 #define closelog() /* empty */
178 #endif /* !USE_SYSLOG */
180 /* The default syslog settings can now be changed here,
181 in just one place. */
183 #ifndef SYSLOG_OPTIONS
184 /* #define SYSLOG_OPTIONS (LOG_PID | LOG_CONS | LOG_NOWAIT) */
185 #define SYSLOG_OPTIONS (LOG_PID)
188 #ifndef SYSLOG_FACILITY
189 #define SYSLOG_FACILITY LOG_AUTHPRIV
192 #define OPENLOG(progname) openlog(progname, SYSLOG_OPTIONS, SYSLOG_FACILITY)
207 #ifdef STAT_MACROS_BROKEN
208 # define S_ISDIR(x) ((x) & S_IFMT) == S_IFDIR)
209 # define S_ISREG(x) ((x) & S_IFMT) == S_IFREG)
211 # define S_ISLNK(x) ((x) & S_IFMT) == S_IFLNK)
216 #define S_ISLNK(x) (0)
220 #define LCHOWN lchown
232 # include <termios.h>
233 # define STTY(fd, termio) tcsetattr(fd, TCSANOW, termio)
234 # define GTTY(fd, termio) tcgetattr(fd, termio)
235 # define TERMIO struct termios
237 #else /* assumed HAVE_TERMIO_H */
238 # include <sys/ioctl.h>
240 # define STTY(fd, termio) ioctl(fd, TCSETA, termio)
241 # define GTTY(fd, termio) ioctl(fd, TCGETA, termio)
242 # define TEMRIO struct termio
247 * Password aging constants
249 * DAY - seconds / day
250 * WEEK - seconds / week
251 * SCALE - seconds / aging unit
254 /* Solaris defines this in shadow.h */
256 #define DAY (24L*3600L)
267 /* Copy string pointed by B to array A with size checking. It was originally
268 in lmain.c but is _very_ useful elsewhere. Some setuid root programs with
269 very sloppy coding used to assume that BUFSIZ will always be enough... */
271 /* danger - side effects */
272 #define STRFCPY(A,B) \
273 (strncpy((A), (B), sizeof(A) - 1), (A)[sizeof(A) - 1] = '\0')
276 #define PASSWD_FILE "/etc/passwd"
280 #define GROUP_FILE "/etc/group"
284 #define SHADOW_FILE "/etc/shadow"
289 #define SGROUP_FILE "/etc/gshadow"
294 #define NULL ((void *) 0)
297 #ifdef sun /* hacks for compiling on SunOS */
300 extern char *strdup ();
301 extern char *strerror ();
306 * string to use for the pw_passwd field in /etc/passwd when using
307 * shadow passwords - most systems use "x" but there are a few
308 * exceptions, so it can be changed here if necessary. --marekm
310 #ifndef SHADOW_PASSWD_STRING
311 #define SHADOW_PASSWD_STRING "x"
314 #define SHADOW_SP_FLAG_UNSET ((unsigned long int)-1)
317 #ifdef __u8 /* in case we use pam < 0.80 */
324 #include <libaudit.h>
327 /* To be used for verified unused parameters */
328 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
329 # define unused __attribute__((unused))
335 # include <stdbool.h>
341 typedef unsigned char _Bool;
347 # define __bool_true_false_are_defined 1
350 #endif /* _DEFINES_H_ */