]>
Commit | Line | Data |
---|---|---|
6dbe3af9 | 1 | /* |
2b6fc908 | 2 | * sundries.h |
6dbe3af9 | 3 | * Support function prototypes. Functions are in sundries.c. |
6dbe3af9 KZ |
4 | */ |
5 | ||
6 | #include <sys/types.h> | |
6dbe3af9 | 7 | #include <fcntl.h> |
6dbe3af9 | 8 | #include <limits.h> |
6dbe3af9 KZ |
9 | #include <signal.h> |
10 | #include <stdarg.h> | |
11 | #include <stdlib.h> | |
2b6fc908 | 12 | #if !defined(bool_t) && !defined(__GLIBC__) |
fd6b7a7f | 13 | #include <rpc/types.h> |
726f69e2 KZ |
14 | #endif |
15 | ||
726f69e2 | 16 | extern int mount_quiet; |
fd6b7a7f | 17 | extern int verbose; |
2b6fc908 | 18 | extern int sloppy; |
6dbe3af9 KZ |
19 | |
20 | #define streq(s, t) (strcmp ((s), (t)) == 0) | |
21 | ||
22 | ||
6dbe3af9 KZ |
23 | /* String list data structure. */ |
24 | typedef struct string_list | |
25 | { | |
26 | char *hd; | |
27 | struct string_list *tl; | |
28 | } *string_list; | |
29 | ||
30 | #define car(p) ((p) -> hd) | |
31 | #define cdr(p) ((p) -> tl) | |
32 | ||
33 | string_list cons (char *a, const string_list); | |
34 | ||
6dbe3af9 KZ |
35 | /* Functions in sundries.c that are used in mount.c and umount.c */ |
36 | void block_signals (int how); | |
37 | char *canonicalize (const char *path); | |
38 | char *realpath (const char *path, char *resolved_path); | |
6dbe3af9 | 39 | void error (const char *fmt, ...); |
6dbe3af9 | 40 | int matching_type (const char *type, string_list types); |
6dbe3af9 | 41 | string_list parse_list (char *strings); |
6dbe3af9 KZ |
42 | void *xmalloc (size_t size); |
43 | char *xstrdup (const char *s); | |
fd6b7a7f KZ |
44 | char *xstrndup (const char *s, int n); |
45 | char *xstrconcat2 (const char *, const char *); | |
46 | char *xstrconcat3 (const char *, const char *, const char *); | |
47 | char *xstrconcat4 (const char *, const char *, const char *, const char *); | |
6dbe3af9 KZ |
48 | |
49 | /* Here is some serious cruft. */ | |
50 | #ifdef __GNUC__ | |
51 | #if defined(__GNUC_MINOR__) && __GNUC__ == 2 && __GNUC_MINOR__ >= 5 | |
52 | void die (int errcode, const char *fmt, ...) __attribute__ ((noreturn)); | |
53 | #else /* GNUC < 2.5 */ | |
54 | void volatile die (int errcode, const char *fmt, ...); | |
55 | #endif /* GNUC < 2.5 */ | |
56 | #else /* !__GNUC__ */ | |
57 | void die (int errcode, const char *fmt, ...); | |
58 | #endif /* !__GNUC__ */ | |
59 | ||
60 | #ifdef HAVE_NFS | |
61 | int nfsmount (const char *spec, const char *node, int *flags, | |
2b6fc908 | 62 | char **orig_opts, char **opt_args, int running_bg); |
6dbe3af9 KZ |
63 | #endif |
64 | ||
fd6b7a7f KZ |
65 | /* exit status - bits below are ORed */ |
66 | #define EX_USAGE 1 /* incorrect invocation or permission */ | |
67 | #define EX_SYSERR 2 /* out of memory, cannot fork, ... */ | |
68 | #define EX_SOFTWARE 4 /* internal mount bug or wrong version */ | |
69 | #define EX_USER 8 /* user interrupt */ | |
70 | #define EX_FILEIO 16 /* problems writing, locking, ... mtab/fstab */ | |
71 | #define EX_FAIL 32 /* mount failure */ | |
72 | #define EX_SOMEOK 64 /* some mount succeeded */ | |
2b6fc908 KZ |
73 | |
74 | #define EX_BG 256 /* retry in background (internal only) */ |