rpm
4.5
|
00001 00005 #ifndef H_SYSTEM 00006 #define H_SYSTEM 00007 00008 #ifdef HAVE_CONFIG_H 00009 #include "config.h" 00010 #endif 00011 00012 #include <sys/types.h> 00013 00014 #if defined(__LCLINT__) 00015 /*@-redef@*/ 00016 typedef unsigned int u_int32_t; 00017 typedef unsigned short u_int16_t; 00018 typedef unsigned char u_int8_t; 00019 /*@-incondefs@*/ /* LCLint 3.0.0.15 */ 00020 typedef int int32_t; 00021 /*@=incondefs@*/ 00022 /* XXX from /usr/include/bits/sigset.h */ 00023 /*@-sizeoftype@*/ 00024 # define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int))) 00025 typedef struct 00026 { 00027 unsigned long int __val[_SIGSET_NWORDS]; 00028 } __sigset_t; 00029 /*@=sizeoftype@*/ 00030 /*@=redef@*/ 00031 #endif 00032 00033 #include <sys/stat.h> 00034 #include <stdio.h> 00035 00036 #ifdef HAVE_SYS_PARAM_H 00037 #include <sys/param.h> 00038 #endif 00039 00040 /* <unistd.h> should be included before any preprocessor test 00041 of _POSIX_VERSION. */ 00042 #ifdef HAVE_UNISTD_H 00043 #include <unistd.h> 00044 #if defined(__LCLINT__) 00045 /*@-superuser -declundef -incondefs @*/ /* LCL: modifies clause missing */ 00046 extern int chroot (const char *__path) 00047 /*@globals errno, systemState @*/ 00048 /*@modifies errno, systemState @*/; 00049 /*@=superuser =declundef =incondefs @*/ 00050 #endif 00051 #if !defined(__GLIBC__) && !defined(__LCLINT__) 00052 #ifdef __APPLE__ 00053 #include <crt_externs.h> 00054 #define environ (*_NSGetEnviron()) 00055 #else 00056 extern char ** environ; 00057 #endif /* __APPLE__ */ 00058 #endif 00059 #endif 00060 00061 #if TIME_WITH_SYS_TIME 00062 # include <sys/time.h> 00063 # include <time.h> 00064 #else 00065 # if HAVE_SYS_TIME_H 00066 # include <sys/time.h> 00067 # else 00068 # include <time.h> 00069 # endif 00070 #endif 00071 00072 #if NEED_TIMEZONE 00073 extern time_t timezone; 00074 #endif 00075 00076 /* Since major is a function on SVR4, we can't use `ifndef major'. */ 00077 #if MAJOR_IN_MKDEV 00078 #include <sys/mkdev.h> 00079 #define HAVE_MAJOR 00080 #endif 00081 #if MAJOR_IN_SYSMACROS 00082 #include <sys/sysmacros.h> 00083 #define HAVE_MAJOR 00084 #endif 00085 #ifdef major /* Might be defined in sys/types.h. */ 00086 #define HAVE_MAJOR 00087 #endif 00088 00089 #ifndef HAVE_MAJOR 00090 #define major(dev) (((dev) >> 8) & 0xff) 00091 #define minor(dev) ((dev) & 0xff) 00092 #define makedev(maj, min) (((maj) << 8) | (min)) 00093 #endif 00094 #undef HAVE_MAJOR 00095 00096 #ifdef HAVE_UTIME_H 00097 #include <utime.h> 00098 #endif 00099 00100 #ifdef HAVE_STRING_H 00101 # if !STDC_HEADERS && HAVE_MEMORY_H 00102 # include <memory.h> 00103 # endif 00104 # include <string.h> 00105 #else 00106 # include <strings.h> 00107 char *memchr (); 00108 #endif 00109 00110 #if !defined(HAVE_STPCPY) 00111 char * stpcpy(/*@out@*/ char * dest, const char * src); 00112 #endif 00113 00114 #if !defined(HAVE_STPNCPY) 00115 char * stpncpy(/*@out@*/ char * dest, const char * src, size_t n); 00116 #endif 00117 00118 #include <errno.h> 00119 #ifndef errno 00120 /*@-declundef @*/ 00121 extern int errno; 00122 /*@=declundef @*/ 00123 #endif 00124 00125 #if defined(__LCLINT__) 00126 /*@-declundef @*/ 00127 /*@exits@*/ 00128 extern void error(int status, int errnum, const char *format, ...) 00129 __attribute__ ((__format__ (__printf__, 3, 4))) 00130 /*@globals fileSystem @*/ 00131 /*@modifies fileSystem @*/; 00132 /*@=declundef @*/ 00133 #else 00134 #if HAVE_ERROR && HAVE_ERROR_H 00135 #include <error.h> 00136 #endif 00137 #endif 00138 00139 #if HAVE___SECURE_GETENV && !defined(__LCLINT__) 00140 #define getenv(_s) __secure_getenv(_s) 00141 #endif 00142 00143 #ifdef STDC_HEADERS 00144 /*@-macrounrecog -incondefs -globuse -mustmod @*/ /* FIX: shrug */ 00145 #define getopt system_getopt 00146 /*@=macrounrecog =incondefs =globuse =mustmod @*/ 00147 /*@-skipansiheaders@*/ 00148 #include <stdlib.h> 00149 /*@=skipansiheaders@*/ 00150 #undef getopt 00151 #if defined(__LCLINT__) 00152 /*@-declundef -incondefs @*/ /* LCL: modifies clause missing */ 00153 extern char * realpath (const char * file_name, /*@out@*/ char * resolved_name) 00154 /*@globals errno, fileSystem @*/ 00155 /*@requires maxSet(resolved_name) >= (PATH_MAX - 1); @*/ 00156 /*@modifies *resolved_name, errno, fileSystem @*/; 00157 /*@=declundef =incondefs @*/ 00158 #endif 00159 #else /* not STDC_HEADERS */ 00160 char *getenv (const char *name); 00161 #if ! HAVE_REALPATH 00162 char *realpath(const char *path, char resolved_path []); 00163 #endif 00164 #endif /* STDC_HEADERS */ 00165 00166 /* XXX solaris2.5.1 has not */ 00167 #if !defined(EXIT_FAILURE) 00168 #define EXIT_FAILURE 1 00169 #endif 00170 00171 #ifdef HAVE_FCNTL_H 00172 #include <fcntl.h> 00173 #else 00174 #include <sys/file.h> 00175 #endif 00176 00177 #if !defined(SEEK_SET) && !defined(__LCLINT__) 00178 #define SEEK_SET 0 00179 #define SEEK_CUR 1 00180 #define SEEK_END 2 00181 #endif 00182 #if !defined(F_OK) && !defined(__LCLINT__) 00183 #define F_OK 0 00184 #define X_OK 1 00185 #define W_OK 2 00186 #define R_OK 4 00187 #endif 00188 00189 #ifdef HAVE_SIGNAL_H 00190 # include <signal.h> 00191 #endif 00192 00193 #ifdef HAVE_DIRENT_H 00194 # include <dirent.h> 00195 # define NLENGTH(direct) (strlen((direct)->d_name)) 00196 #else /* not HAVE_DIRENT_H */ 00197 # define dirent direct 00198 # define NLENGTH(direct) ((direct)->d_namlen) 00199 # ifdef HAVE_SYS_NDIR_H 00200 # include <sys/ndir.h> 00201 # endif /* HAVE_SYS_NDIR_H */ 00202 # ifdef HAVE_SYS_DIR_H 00203 # include <sys/dir.h> 00204 # endif /* HAVE_SYS_DIR_H */ 00205 # ifdef HAVE_NDIR_H 00206 # include <ndir.h> 00207 # endif /* HAVE_NDIR_H */ 00208 #endif /* HAVE_DIRENT_H */ 00209 00210 #if defined(__LCLINT__) 00211 /*@-declundef -incondefs @*/ /* LCL: missing annotation */ 00212 /*@only@*/ /*@out@*/ void * alloca (size_t __size) 00213 /*@ensures maxSet(result) == (__size - 1) @*/ 00214 /*@*/; 00215 /*@=declundef =incondefs @*/ 00216 #endif 00217 00218 #ifdef __GNUC__ 00219 # undef alloca 00220 # define alloca __builtin_alloca 00221 #else 00222 # ifdef HAVE_ALLOCA_H 00223 # include <alloca.h> 00224 # else 00225 # ifndef _AIX 00226 /* AIX alloca decl has to be the first thing in the file, bletch! */ 00227 char *alloca (); 00228 # endif 00229 # endif 00230 #endif 00231 00232 #if defined (__GLIBC__) && defined(__LCLINT__) 00233 /*@-declundef@*/ 00234 /*@unchecked@*/ 00235 extern __const __int32_t *__ctype_tolower; 00236 /*@unchecked@*/ 00237 extern __const __int32_t *__ctype_toupper; 00238 /*@=declundef@*/ 00239 #endif 00240 00241 #include <ctype.h> 00242 00243 #if defined (__GLIBC__) && defined(__LCLINT__) 00244 /*@-exportlocal@*/ 00245 extern int isalnum(int) __THROW /*@*/; 00246 extern int iscntrl(int) __THROW /*@*/; 00247 extern int isgraph(int) __THROW /*@*/; 00248 extern int islower(int) __THROW /*@*/; 00249 extern int ispunct(int) __THROW /*@*/; 00250 extern int isxdigit(int) __THROW /*@*/; 00251 extern int isascii(int) __THROW /*@*/; 00252 extern int toascii(int) __THROW /*@*/; 00253 extern int _toupper(int) __THROW /*@*/; 00254 extern int _tolower(int) __THROW /*@*/; 00255 /*@=exportlocal@*/ 00256 00257 #endif 00258 00259 #if HAVE_SYS_MMAN_H && !defined(__LCLINT__) 00260 #include <sys/mman.h> 00261 #endif 00262 00263 /* XXX FIXME: popt on sunos4.1.3: <sys/resource.h> requires <sys/time.h> */ 00264 #if HAVE_SYS_RESOURCE_H && HAVE_SYS_TIME_H 00265 #include <sys/resource.h> 00266 #endif 00267 00268 #if HAVE_SYS_UTSNAME_H 00269 #include <sys/utsname.h> 00270 #endif 00271 00272 #if HAVE_SYS_WAIT_H 00273 #include <sys/wait.h> 00274 #endif 00275 00276 #if HAVE_GETOPT_H 00277 /*@-noparams@*/ 00278 #include <getopt.h> 00279 /*@=noparams@*/ 00280 #endif 00281 00282 #if HAVE_GRP_H 00283 #include <grp.h> 00284 #endif 00285 00286 #if HAVE_LIMITS_H 00287 #include <limits.h> 00288 #endif 00289 00290 #if HAVE_ERR_H 00291 #include <err.h> 00292 #endif 00293 00294 #if HAVE_MALLOC_H && !defined(__LCLINT__) 00295 #include <malloc.h> 00296 #endif 00297 00298 #if HAVE_LIBGEN_H 00299 #include <libgen.h> 00300 #endif 00301 00302 #if WITH_SELINUX 00303 #include <selinux/selinux.h> 00304 #else 00305 typedef char * security_context_t; 00306 00307 #define freecon(_c) 00308 00309 #define getfilecon(_fn, _c) (-1) 00310 #define lgetfilecon(_fn, _c) (-1) 00311 #define fgetfilecon(_fd, _c) (-1) 00312 00313 #define setfilecon(_fn, _c) (-1) 00314 #define lsetfilecon(_fn, _c) (-1) 00315 #define fsetfilecon(_fd, _c) (-1) 00316 00317 #define security_check_context(_c) (0) 00318 00319 #define is_selinux_enabled() (-1) 00320 00321 #define rpm_execcon(_v, _fn, _av, _envp) (0) 00322 00323 #define matchpathcon_init(_fn) (-1) 00324 #define matchpathcon(_fn, _fmode, _s) (-1) 00325 #endif 00326 00327 #if defined(WITH_SELINUX) && defined(__LCLINT__) 00328 /*@-incondefs@*/ 00329 extern void freecon(/*@only@*/ security_context_t con) 00330 /*@modifies con @*/; 00331 00332 extern int getfilecon(const char *path, /*@out@*/ security_context_t *con) 00333 /*@modifies *con @*/; 00334 extern int lgetfilecon(const char *path, /*@out@*/ security_context_t *con) 00335 /*@modifies *con @*/; 00336 extern int fgetfilecon(int fd, /*@out@*/ security_context_t *con) 00337 /*@modifies *con @*/; 00338 00339 extern int setfilecon(const char *path, security_context_t con) 00340 /*@globals fileSystem @*/ 00341 /*@modifies fileSystem @*/; 00342 extern int lsetfilecon(const char *path, security_context_t con) 00343 /*@globals fileSystem @*/ 00344 /*@modifies fileSystem @*/; 00345 extern int fsetfilecon(int fd, security_context_t con) 00346 /*@globals fileSystem @*/ 00347 /*@modifies fileSystem @*/; 00348 00349 extern int getcon(/*@out@*/ security_context_t *con) 00350 /*@modifies *con @*/; 00351 extern int getexeccon(/*@out@*/ security_context_t *con) 00352 /*@modifies *con @*/; 00353 extern int setexeccon(security_context_t con) 00354 /*@globals fileSystem @*/ 00355 /*@modifies fileSystem @*/; 00356 00357 extern int security_check_context(security_context_t con) 00358 /*@globals fileSystem @*/ 00359 /*@modifies fileSystem @*/; 00360 extern int security_getenforce(void) 00361 /*@globals fileSystem @*/ 00362 /*@modifies fileSystem @*/; 00363 00364 extern int is_selinux_enabled(void) 00365 /*@globals fileSystem @*/ 00366 /*@modifies fileSystem @*/; 00367 /*@=incondefs@*/ 00368 #endif 00369 00370 /*@-declundef -incondefs @*/ /* FIX: these are macros */ 00373 /*@mayexit@*/ /*@only@*/ /*@out@*/ void * xmalloc (size_t size) 00374 /*@globals errno @*/ 00375 /*@ensures maxSet(result) == (size - 1) @*/ 00376 /*@modifies errno @*/; 00377 00380 /*@mayexit@*/ /*@only@*/ void * xcalloc (size_t nmemb, size_t size) 00381 /*@ensures maxSet(result) == (nmemb - 1) @*/ 00382 /*@*/; 00383 00387 /*@mayexit@*/ /*@only@*/ void * xrealloc (/*@null@*/ /*@only@*/ void * ptr, 00388 size_t size) 00389 /*@ensures maxSet(result) == (size - 1) @*/ 00390 /*@modifies *ptr @*/; 00391 00394 /*@mayexit@*/ /*@only@*/ char * xstrdup (const char *str) 00395 /*@*/; 00396 /*@=declundef =incondefs @*/ 00397 00400 /*@unused@*/ /*@exits@*/ /*@only@*/ void * vmefail(size_t size) 00401 /*@*/; 00402 00403 #if HAVE_MCHECK_H 00404 #include <mcheck.h> 00405 #if defined(__LCLINT__) 00406 /*@-declundef -incondefs @*/ /* LCL: missing annotations */ 00407 #if 0 00408 enum mcheck_status 00409 { 00410 MCHECK_DISABLED = -1, /* Consistency checking is not turned on. */ 00411 MCHECK_OK, /* Block is fine. */ 00412 MCHECK_FREE, /* Block freed twice. */ 00413 MCHECK_HEAD, /* Memory before the block was clobbered. */ 00414 MCHECK_TAIL /* Memory after the block was clobbered. */ 00415 }; 00416 #endif 00417 00418 extern int mcheck (void (*__abortfunc) (enum mcheck_status)) 00419 /*@globals internalState@*/ 00420 /*@modifies internalState @*/; 00421 extern int mcheck_pedantic (void (*__abortfunc) (enum mcheck_status)) 00422 /*@globals internalState@*/ 00423 /*@modifies internalState @*/; 00424 extern void mcheck_check_all (void) 00425 /*@globals internalState@*/ 00426 /*@modifies internalState @*/; 00427 extern enum mcheck_status mprobe (void *__ptr) 00428 /*@globals internalState@*/ 00429 /*@modifies internalState @*/; 00430 extern void mtrace (void) 00431 /*@globals internalState@*/ 00432 /*@modifies internalState @*/; 00433 extern void muntrace (void) 00434 /*@globals internalState@*/ 00435 /*@modifies internalState @*/; 00436 /*@=declundef =incondefs @*/ 00437 #endif /* defined(__LCLINT__) */ 00438 00439 /* Memory allocation via macro defs to get meaningful locations from mtrace() */ 00440 #if defined(__GNUC__) 00441 #define xmalloc(_size) (malloc(_size) ? : vmefail(_size)) 00442 #define xcalloc(_nmemb, _size) (calloc((_nmemb), (_size)) ? : vmefail(_size)) 00443 #define xrealloc(_ptr, _size) (realloc((_ptr), (_size)) ? : vmefail(_size)) 00444 #define xstrdup(_str) (strcpy((malloc(strlen(_str)+1) ? : vmefail(strlen(_str)+1)), (_str))) 00445 #endif /* defined(__GNUC__) */ 00446 #endif /* HAVE_MCHECK_H */ 00447 00448 /* Retrofit glibc __progname */ 00449 #if defined __GLIBC__ && __GLIBC__ >= 2 00450 #if __GLIBC_MINOR__ >= 1 00451 #define __progname __assert_program_name 00452 #endif 00453 #define setprogname(pn) 00454 #else 00455 #define __progname program_name 00456 #define setprogname(pn) \ 00457 { if ((__progname = strrchr(pn, '/')) != NULL) __progname++; \ 00458 else __progname = pn; \ 00459 } 00460 #endif 00461 /*@unchecked@*/ 00462 extern const char *__progname; 00463 00464 #if HAVE_NETDB_H 00465 #include <netdb.h> 00466 #endif 00467 00468 #if HAVE_PWD_H 00469 #include <pwd.h> 00470 #endif 00471 00472 /* Take care of NLS matters. */ 00473 00474 #if HAVE_LOCALE_H 00475 # include <locale.h> 00476 #endif 00477 #if !HAVE_SETLOCALE 00478 # define setlocale(Category, Locale) /* empty */ 00479 #endif 00480 00481 #if ENABLE_NLS && !defined(__LCLINT__) 00482 # include <libintl.h> 00483 # define _(Text) dgettext (PACKAGE, Text) 00484 # define D_(Text) Text 00485 #else 00486 # undef bindtextdomain 00487 # define bindtextdomain(Domain, Directory) /* empty */ 00488 # undef textdomain 00489 # define textdomain(Domain) /* empty */ 00490 # define _(Text) Text 00491 # define D_(Text) Text 00492 # undef dgettext 00493 # define dgettext(DomainName, Text) Text 00494 #endif 00495 00496 #define N_(Text) Text 00497 00498 /* ============== from misc/miscfn.h */ 00499 00500 #if !defined(USE_GNU_GLOB) || defined(__LCLINT__) 00501 #if HAVE_FNMATCH_H 00502 /*@-noparams@*/ 00503 #include <fnmatch.h> 00504 /*@=noparams@*/ 00505 #endif 00506 00507 #if HAVE_GLOB_H || defined(__LCLINT__) 00508 /*@-noparams@*/ 00509 #include <glob.h> 00510 /*@=noparams@*/ 00511 #endif 00512 #else 00513 /*@-noparams@*/ 00514 #include "misc/glob.h" 00515 #include "misc/fnmatch.h" 00516 /*@=noparams@*/ 00517 #endif 00518 00519 #if defined(__LCLINT__) 00520 /*@-declundef -incondefs @*/ /* LCL: missing annotation */ 00521 #if 0 00522 typedef /*@concrete@*/ struct 00523 { 00524 size_t gl_pathc; 00525 char **gl_pathv; 00526 size_t gl_offs; 00527 int gl_flags; 00528 00529 void (*gl_closedir) (void *); 00530 #ifdef _GNU_SOURCE 00531 struct dirent *(*gl_readdir) (void *); 00532 #else 00533 void *(*gl_readdir) (void *); 00534 #endif 00535 ptr_t (*gl_opendir) (const char *); 00536 #ifdef _GNU_SOURCE 00537 int (*gl_lstat) (const char *restrict, struct stat *restrict); 00538 int (*gl_stat) (const char *restrict, struct stat *restrict); 00539 #else 00540 int (*gl_lstat) (const char *restrict, void *restrict); 00541 int (*gl_stat) (const char *restrict, void *restrict); 00542 #endif 00543 } glob_t; 00544 #endif 00545 00546 #if 0 00547 /*@-constuse@*/ 00548 /*@constant int GLOB_ERR@*/ 00549 /*@constant int GLOB_MARK@*/ 00550 /*@constant int GLOB_NOSORT@*/ 00551 /*@constant int GLOB_DOOFFS@*/ 00552 /*@constant int GLOB_NOCHECK@*/ 00553 /*@constant int GLOB_APPEND@*/ 00554 /*@constant int GLOB_NOESCAPE@*/ 00555 /*@constant int GLOB_PERIOD@*/ 00556 00557 #ifdef _GNU_SOURCE 00558 /*@constant int GLOB_MAGCHAR@*/ 00559 /*@constant int GLOB_ALTDIRFUNC@*/ 00560 /*@constant int GLOB_BRACE@*/ 00561 /*@constant int GLOB_NOMAGIC@*/ 00562 /*@constant int GLOB_TILDE@*/ 00563 /*@constant int GLOB_ONLYDIR@*/ 00564 /*@constant int GLOB_TILDE_CHECK@*/ 00565 #endif 00566 00567 /*@constant int GLOB_FLAGS@*/ 00568 00569 /*@constant int GLOB_NOSPACE@*/ 00570 /*@constant int GLOB_ABORTED@*/ 00571 /*@constant int GLOB_NOMATCH@*/ 00572 /*@constant int GLOB_NOSYS@*/ 00573 #ifdef _GNU_SOURCE 00574 /*@constant int GLOB_ABEND@*/ 00575 #endif 00576 /*@=constuse@*/ 00577 #endif 00578 00579 /*@-protoparammatch -redecl@*/ 00580 /*@-type@*/ /* XXX glob64_t */ 00581 extern int glob (const char *__pattern, int __flags, 00582 int (*__errfunc) (const char *, int), 00583 /*@out@*/ glob_t *__pglob) 00584 /*@globals errno, fileSystem @*/ 00585 /*@modifies *__pglob, errno, fileSystem @*/; 00586 /* XXX only annotation is a white lie */ 00587 extern void globfree (/*@only@*/ glob_t *__pglob) 00588 /*@modifies *__pglob @*/; 00589 /*@=type@*/ 00590 #ifdef _GNU_SOURCE 00591 extern int glob_pattern_p (const char *__pattern, int __quote) 00592 /*@*/; 00593 #endif 00594 /*@=protoparammatch =redecl@*/ 00595 00596 #if 0 00597 /*@-constuse@*/ 00598 /*@constant int FNM_PATHNAME@*/ 00599 /*@constant int FNM_NOESCAPE@*/ 00600 /*@constant int FNM_PERIOD@*/ 00601 00602 #ifdef _GNU_SOURCE 00603 /*@constant int FNM_FILE_NAME@*/ /* GNU extension */ 00604 /*@constant int FNM_LEADING_DIR@*/ /* GNU extension */ 00605 /*@constant int FNM_CASEFOLD@*/ /* GNU extension */ 00606 /*@constant int FNM_EXTMATCH@*/ /* GNU extension */ 00607 #endif 00608 00609 /*@constant int FNM_NOMATCH@*/ 00610 00611 #ifdef _XOPEN_SOURCE 00612 /*@constant int FNM_NOSYS@*/ /* X/Open */ 00613 #endif 00614 /*@=constuse@*/ 00615 #endif 00616 00617 extern int fnmatch (const char *__pattern, const char *__name, int __flags) 00618 /*@*/; 00619 /*@=declundef =incondefs @*/ 00620 #endif 00621 00622 #if ! HAVE_S_IFSOCK 00623 #define S_IFSOCK (0xc000) 00624 #endif 00625 00626 #if ! HAVE_S_ISLNK 00627 #define S_ISLNK(mode) ((mode & 0xf000) == S_IFLNK) 00628 #endif 00629 00630 #if ! HAVE_S_ISSOCK 00631 #define S_ISSOCK(mode) ((mode & 0xf000) == S_IFSOCK) 00632 #endif 00633 00634 #if NEED_STRINGS_H 00635 #include <strings.h> 00636 #endif 00637 00638 #if NEED_MYREALLOC 00639 #define realloc(ptr,size) myrealloc(ptr,size) 00640 extern void *myrealloc(void *, size_t); 00641 #endif 00642 00643 #if ! HAVE_SETENV 00644 extern int setenv(const char *name, const char *value, int replace); 00645 extern void unsetenv(const char *name); 00646 #endif 00647 00648 #if HAVE_SYS_SOCKET_H 00649 #include <sys/types.h> 00650 #include <sys/socket.h> 00651 #endif 00652 00653 #if HAVE_POLL_H 00654 #include <poll.h> 00655 #else 00656 #if HAVE_SYS_SELECT_H && !defined(__LCLINT__) 00657 #include <sys/select.h> 00658 #endif 00659 #endif 00660 00661 /* Solaris <= 2.6 limits getpass return to only 8 chars */ 00662 #if HAVE_GETPASSPHRASE 00663 #define getpass getpassphrase 00664 #endif 00665 00666 #if ! HAVE_LCHOWN 00667 #define lchown chown 00668 #endif 00669 00670 #if HAVE_GETMNTINFO || HAVE_GETMNTINFO_R || HAVE_MNTCTL 00671 # define GETMNTENT_ONE 0 00672 # define GETMNTENT_TWO 0 00673 # if HAVE_SYS_MNTCTL_H 00674 # include <sys/mntctl.h> 00675 # endif 00676 # if HAVE_SYS_VMOUNT_H 00677 # include <sys/vmount.h> 00678 # endif 00679 # if HAVE_SYS_MOUNT_H 00680 # include <sys/mount.h> 00681 # endif 00682 #elif HAVE_MNTENT_H || !(HAVE_GETMNTENT) || HAVE_STRUCT_MNTTAB 00683 # if HAVE_MNTENT_H 00684 # include <stdio.h> 00685 # include <mntent.h> 00686 # define our_mntent struct mntent 00687 # define our_mntdir mnt_dir 00688 # elif HAVE_STRUCT_MNTTAB 00689 # include <stdio.h> 00690 # include <mnttab.h> 00691 struct our_mntent { 00692 char * our_mntdir; 00693 }; 00694 struct our_mntent *getmntent(FILE *filep); 00695 # define our_mntent struct our_mntent 00696 # else 00697 # include <stdio.h> 00698 struct our_mntent { 00699 char * our_mntdir; 00700 }; 00701 struct our_mntent *getmntent(FILE *filep); 00702 # define our_mntent struct our_mntent 00703 # endif 00704 # define GETMNTENT_ONE 1 00705 # define GETMNTENT_TWO 0 00706 #elif HAVE_SYS_MNTTAB_H 00707 # include <stdio.h> 00708 # include <sys/mnttab.h> 00709 # define GETMNTENT_ONE 0 00710 # define GETMNTENT_TWO 1 00711 # define our_mntent struct mnttab 00712 # define our_mntdir mnt_mountp 00713 #else /* if !HAVE_MNTCTL */ 00714 # error Neither mntent.h, mnttab.h, or mntctl() exists. I cannot build on this system. 00715 #endif 00716 00717 #ifndef MOUNTED 00718 #define MOUNTED "/etc/mnttab" 00719 #endif 00720 00721 #if defined(__LCLINT__) 00722 #define FILE_RCSID(id) 00723 #else 00724 #define FILE_RCSID(id) \ 00725 static inline const char *rcsid(const char *p) { \ 00726 return rcsid(p = id); \ 00727 } 00728 #endif 00729 00730 #endif /* H_SYSTEM */