1 | /* $NetBSD: am_compat.h,v 1.4 2015/01/17 17:46:31 christos Exp $ */ |
2 | |
3 | /* |
4 | * Copyright (c) 1997-2014 Erez Zadok |
5 | * Copyright (c) 1990 Jan-Simon Pendry |
6 | * Copyright (c) 1990 Imperial College of Science, Technology & Medicine |
7 | * Copyright (c) 1990 The Regents of the University of California. |
8 | * All rights reserved. |
9 | * |
10 | * This code is derived from software contributed to Berkeley by |
11 | * Jan-Simon Pendry at Imperial College, London. |
12 | * |
13 | * Redistribution and use in source and binary forms, with or without |
14 | * modification, are permitted provided that the following conditions |
15 | * are met: |
16 | * 1. Redistributions of source code must retain the above copyright |
17 | * notice, this list of conditions and the following disclaimer. |
18 | * 2. Redistributions in binary form must reproduce the above copyright |
19 | * notice, this list of conditions and the following disclaimer in the |
20 | * documentation and/or other materials provided with the distribution. |
21 | * 3. Neither the name of the University nor the names of its contributors |
22 | * may be used to endorse or promote products derived from this software |
23 | * without specific prior written permission. |
24 | * |
25 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
26 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
27 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
28 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
29 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
30 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
31 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
32 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
33 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
34 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
35 | * SUCH DAMAGE. |
36 | * |
37 | * |
38 | * File: am-utils/include/am_compat.h |
39 | * |
40 | */ |
41 | |
42 | /* |
43 | * |
44 | * This file contains compatibility functions and macros, all of which |
45 | * should be auto-discovered, but for one reason or another (mostly |
46 | * brain-damage on the part of system designers and header files) they cannot. |
47 | * |
48 | * Each compatibility macro/function must include instructions on how/when |
49 | * it can be removed the am-utils code. |
50 | * |
51 | */ |
52 | |
53 | #ifndef _AM_COMPAT_H |
54 | # define _AM_COMPAT_H |
55 | |
56 | /* |
57 | * incomplete mount options definitions (sunos4, irix6, linux, etc.) |
58 | */ |
59 | |
60 | |
61 | /* |
62 | * Complete MNTTAB_OPT_* options based on MNT2_NFS_OPT_* mount options. |
63 | */ |
64 | #if defined(MNT2_NFS_OPT_ACDIRMAX) && !defined(MNTTAB_OPT_ACDIRMAX) |
65 | # define MNTTAB_OPT_ACDIRMAX "acdirmax" |
66 | #endif /* defined(MNT2_NFS_OPT_ACDIRMAX) && !defined(MNTTAB_OPT_ACDIRMAX) */ |
67 | |
68 | #if defined(MNT2_NFS_OPT_ACDIRMIN) && !defined(MNTTAB_OPT_ACDIRMIN) |
69 | # define MNTTAB_OPT_ACDIRMIN "acdirmin" |
70 | #endif /* defined(MNT2_NFS_OPT_ACDIRMIN) && !defined(MNTTAB_OPT_ACDIRMIN) */ |
71 | |
72 | #if defined(MNT2_NFS_OPT_ACREGMAX) && !defined(MNTTAB_OPT_ACREGMAX) |
73 | # define MNTTAB_OPT_ACREGMAX "acregmax" |
74 | #endif /* defined(MNT2_NFS_OPT_ACREGMAX) && !defined(MNTTAB_OPT_ACREGMAX) */ |
75 | |
76 | #if defined(MNT2_NFS_OPT_ACREGMIN) && !defined(MNTTAB_OPT_ACREGMIN) |
77 | # define MNTTAB_OPT_ACREGMIN "acregmin" |
78 | #endif /* defined(MNT2_NFS_OPT_ACREGMIN) && !defined(MNTTAB_OPT_ACREGMIN) */ |
79 | |
80 | #if !defined(MNTTAB_OPT_IGNORE) |
81 | /* SunOS 4.1.x and others define "noauto" option, but not "auto" */ |
82 | # if defined(MNTTAB_OPT_NOAUTO) && !defined(MNTTAB_OPT_AUTO) |
83 | # define MNTTAB_OPT_AUTO "auto" |
84 | # endif /* defined(MNTTAB_OPT_NOAUTO) && !defined(MNTTAB_OPT_AUTO) */ |
85 | #endif /* !defined(MNTTAB_OPT_IGNORE) */ |
86 | |
87 | #if defined(MNT2_NFS_OPT_NOAC) && !defined(MNTTAB_OPT_NOAC) |
88 | # define MNTTAB_OPT_NOAC "noac" |
89 | #endif /* defined(MNT2_NFS_OPT_NOAC) && !defined(MNTTAB_OPT_NOAC) */ |
90 | |
91 | #if defined(MNT2_NFS_OPT_NOACL) && !defined(MNTTAB_OPT_NOACL) |
92 | # define MNTTAB_OPT_NOACL "noacl" |
93 | #endif /* defined(MNT2_NFS_OPT_NOACL) && !defined(MNTTAB_OPT_NOACL) */ |
94 | |
95 | #if defined(MNT2_NFS_OPT_NOCONN) && !defined(MNTTAB_OPT_NOCONN) |
96 | # define MNTTAB_OPT_NOCONN "noconn" |
97 | # ifndef MNTTAB_OPT_CONN |
98 | # define MNTTAB_OPT_CONN "conn" |
99 | # endif /* MNTTAB_OPT_CONN */ |
100 | #endif /* defined(MNT2_NFS_OPT_NOCONN) && !defined(MNTTAB_OPT_NOCONN) */ |
101 | |
102 | #if defined(MNT2_NFS_OPT_PGTHRESH) && !defined(MNTTAB_OPT_PGTHRESH) |
103 | # define MNTTAB_OPT_PGTHRESH "pgthresh" |
104 | #endif /* defined(MNT2_NFS_OPT_PGTHRESH) && !defined(MNTTAB_OPT_PGTHRESH) */ |
105 | |
106 | #if defined(MNT2_NFS_OPT_PRIVATE) && !defined(MNTTAB_OPT_PRIVATE) |
107 | # define MNTTAB_OPT_PRIVATE "private" |
108 | #endif /* defined(MNT2_NFS_OPT_PRIVATE) && !defined(MNTTAB_OPT_PRIVATE) */ |
109 | |
110 | #if defined(MNT2_NFS_OPT_RETRANS) && !defined(MNTTAB_OPT_RETRANS) |
111 | # define MNTTAB_OPT_RETRANS "retrans" |
112 | #endif /* defined(MNT2_NFS_OPT_RETRANS) && !defined(MNTTAB_OPT_RETRANS) */ |
113 | |
114 | #if defined(MNT2_NFS_OPT_RSIZE) && !defined(MNTTAB_OPT_RSIZE) |
115 | # define MNTTAB_OPT_RSIZE "rsize" |
116 | #endif /* defined(MNT2_NFS_OPT_RSIZE) && !defined(MNTTAB_OPT_RSIZE) */ |
117 | |
118 | #if defined(MNT2_NFS_OPT_SOFT) && !defined(MNTTAB_OPT_SOFT) |
119 | # define MNTTAB_OPT_SOFT "soft" |
120 | # ifndef MNTTAB_OPT_HARD |
121 | # define MNTTAB_OPT_HARD "hard" |
122 | # endif /* not MNTTAB_OPT_HARD */ |
123 | #endif /* defined(MNT2_NFS_OPT_SOFT) && !defined(MNTTAB_OPT_SOFT) */ |
124 | |
125 | #if defined(MNT2_NFS_OPT_TIMEO) && !defined(MNTTAB_OPT_TIMEO) |
126 | # define MNTTAB_OPT_TIMEO "timeo" |
127 | #endif /* defined(MNT2_NFS_OPT_TIMEO) && !defined(MNTTAB_OPT_TIMEO) */ |
128 | |
129 | #if defined(MNT2_NFS_OPT_WSIZE) && !defined(MNTTAB_OPT_WSIZE) |
130 | # define MNTTAB_OPT_WSIZE "wsize" |
131 | #endif /* defined(MNT2_NFS_OPT_WSIZE) && !defined(MNTTAB_OPT_WSIZE) */ |
132 | |
133 | #if defined(MNT2_NFS_OPT_MAXGRPS) && !defined(MNTTAB_OPT_MAXGROUPS) |
134 | # define MNTTAB_OPT_MAXGROUPS "maxgroups" |
135 | #endif /* defined(MNT2_NFS_OPT_MAXGRPS) && !defined(MNTTAB_OPT_MAXGROUPS) */ |
136 | |
137 | #if defined(MNT2_NFS_OPT_PROPLIST) && !defined(MNTTAB_OPT_PROPLIST) |
138 | # define MNTTAB_OPT_PROPLIST "proplist" |
139 | #endif /* defined(MNT2_NFS_OPT_PROPLIST) && !defined(MNTTAB_OPT_PROPLIST) */ |
140 | |
141 | #if defined(MNT2_NFS_OPT_NONLM) && !defined(MNTTAB_OPT_NOLOCK) |
142 | # define MNTTAB_OPT_NOLOCK "nolock" |
143 | #endif /* defined(MNT2_NFS_OPT_NONLM) && !defined(MNTTAB_OPT_NOLOCK) */ |
144 | |
145 | #if defined(MNT2_NFS_OPT_XLATECOOKIE) && !defined(MNTTAB_OPT_XLATECOOKIE) |
146 | # define MNTTAB_OPT_XLATECOOKIE "xlatecookie" |
147 | #endif /* defined(MNT2_NFS_OPT_XLATECOOKIE) && !defined(MNTTAB_OPT_XLATECOOKIE) */ |
148 | |
149 | /* |
150 | * Complete MNTTAB_OPT_* options based on MNT2_CDFS_OPT_* mount options. |
151 | */ |
152 | #if defined(MNT2_CDFS_OPT_DEFPERM) && !defined(MNTTAB_OPT_DEFPERM) |
153 | # define MNTTAB_OPT_DEFPERM "defperm" |
154 | #endif /* defined(MNT2_CDFS_OPT_DEFPERM) && !defined(MNTTAB_OPT_DEFPERM) */ |
155 | |
156 | #if defined(MNT2_CDFS_OPT_NODEFPERM) && !defined(MNTTAB_OPT_NODEFPERM) |
157 | # define MNTTAB_OPT_NODEFPERM "nodefperm" |
158 | /* |
159 | * DEC OSF/1 V3.x/Digital UNIX V4.0 have M_NODEFPERM only, but |
160 | * both mnttab ops. |
161 | */ |
162 | # ifndef MNTTAB_OPT_DEFPERM |
163 | # define MNTTAB_OPT_DEFPERM "defperm" |
164 | # endif /* not MNTTAB_OPT_DEFPERM */ |
165 | #endif /* defined(MNT2_CDFS_OPT_NODEFPERM) && !defined(MNTTAB_OPT_NODEFPERM) */ |
166 | |
167 | #if defined(MNT2_CDFS_OPT_NOVERSION) && !defined(MNTTAB_OPT_NOVERSION) |
168 | # define MNTTAB_OPT_NOVERSION "noversion" |
169 | #endif /* defined(MNT2_CDFS_OPT_NOVERSION) && !defined(MNTTAB_OPT_NOVERSION) */ |
170 | |
171 | #if defined(MNT2_CDFS_OPT_RRIP) && !defined(MNTTAB_OPT_RRIP) |
172 | # define MNTTAB_OPT_RRIP "rrip" |
173 | #endif /* defined(MNT2_CDFS_OPT_RRIP) && !defined(MNTTAB_OPT_RRIP) */ |
174 | #if defined(MNT2_CDFS_OPT_NORRIP) && !defined(MNTTAB_OPT_NORRIP) |
175 | # define MNTTAB_OPT_NORRIP "norrip" |
176 | #endif /* defined(MNT2_CDFS_OPT_NORRIP) && !defined(MNTTAB_OPT_NORRIP) */ |
177 | |
178 | #if defined(MNT2_CDFS_OPT_GENS) && !defined(MNTTAB_OPT_GENS) |
179 | # define MNTTAB_OPT_GENS "gens" |
180 | #endif /* defined(MNT2_CDFS_OPT_GENS) && !defined(MNTTAB_OPT_GENS) */ |
181 | |
182 | #if defined(MNT2_CDFS_OPT_EXTATT) && !defined(MNTTAB_OPT_EXTATT) |
183 | # define MNTTAB_OPT_EXTATT "extatt" |
184 | #endif /* defined(MNT2_CDFS_OPT_EXTATT) && !defined(MNTTAB_OPT_EXTATT) */ |
185 | |
186 | #if defined(MNT2_CDFS_OPT_NOJOLIET) && !defined(MNTTAB_OPT_NOJOLIET) |
187 | # define MNTTAB_OPT_NOJOLIET "nojoliet" |
188 | #endif /* defined(MNT2_CDFS_OPT_NOJOLIET) && !defined(MNTTAB_OPT_NOJOLIET) */ |
189 | |
190 | #if defined(MNT2_CDFS_OPT_NOCASETRANS) && !defined(MNTTAB_OPT_NOCASETRANS) |
191 | # define MNTTAB_OPT_NOCASETRANS "nocasetrans" |
192 | #endif /* defined(MNT2_CDFS_OPT_NOCASETRANS) && !defined(MNTTAB_OPT_NOCASETRANS) */ |
193 | |
194 | #if defined(MNT2_CDFS_OPT_RRCASEINS) && !defined(MNTTAB_OPT_RRCASEINS) |
195 | # define MNTTAB_OPT_RRCASEINS "rrcaseins" |
196 | #endif /* defined(MNT2_CDFS_OPT_RRCASEINS) && !defined(MNTTAB_OPT_RRCASEINS) */ |
197 | |
198 | /* |
199 | * Complete MNTTAB_OPT_* options based on MNT2_UDF_OPT_* mount options. |
200 | */ |
201 | #if defined(MNT2_UDF_OPT_CLOSESESSION) && !defined(MNTTAB_OPT_CLOSESESSION) |
202 | # define MNTTAB_OPT_CLOSESESSION "closesession" |
203 | #endif /* defined(MNT2_UDF_OPT_CLOSESESSION) && !defined(MNTTAB_OPT_CLOSESESSION) */ |
204 | |
205 | /* |
206 | * Complete MNTTAB_OPT_* options based on MNT2_PCFS_OPT_* mount options. |
207 | */ |
208 | #if defined(MNT2_PCFS_OPT_LONGNAME) && !defined(MNTTAB_OPT_LONGNAME) |
209 | # define MNTTAB_OPT_LONGNAME "longnames" |
210 | #endif /* defined(MNT2_PCFS_OPT_LONGNAME) && !defined(MNTTAB_OPT_LONGNAME) */ |
211 | #if defined(MNT2_PCFS_OPT_NOWIN95) && !defined(MNTTAB_OPT_NOWIN95) |
212 | # define MNTTAB_OPT_NOWIN95 "nowin95" |
213 | #endif /* defined(MNT2_PCFS_OPT_NOWIN95) && !defined(MNTTAB_OPT_NOWIN95) */ |
214 | #if defined(MNT2_PCFS_OPT_SHORTNAME) && !defined(MNTTAB_OPT_SHORTNAME) |
215 | # define MNTTAB_OPT_SHORTNAME "shortnames" |
216 | #endif /* defined(MNT2_PCFS_OPT_SHORTNAME) && !defined(MNTTAB_OPT_SHORTNAME) */ |
217 | |
218 | /* |
219 | * Complete MNTTAB_OPT_* options based on MNT2_GEN_OPT_* mount options. |
220 | */ |
221 | #if defined(MNT2_GEN_OPT_GRPID) && !defined(MNTTAB_OPT_GRPID) |
222 | # define MNTTAB_OPT_GRPID "grpid" |
223 | #endif /* defined(MNT2_GEN_OPT_GRPID) && !defined(MNTTAB_OPT_GRPID) */ |
224 | |
225 | #if defined(MNT2_GEN_OPT_NOCACHE) && !defined(MNTTAB_OPT_NOCACHE) |
226 | # define MNTTAB_OPT_NOCACHE "nocache" |
227 | #endif /* defined(MNT2_GEN_OPT_NOCACHE) && !defined(MNTTAB_OPT_NOCACHE) */ |
228 | |
229 | #if defined(MNT2_GEN_OPT_NOSUID) && !defined(MNTTAB_OPT_NOSUID) |
230 | # define MNTTAB_OPT_NOSUID "nosuid" |
231 | #endif /* defined(MNT2_GEN_OPT_NOSUID) && !defined(MNTTAB_OPT_NOSUID) */ |
232 | |
233 | #if defined(MNT2_GEN_OPT_OVERLAY) && !defined(MNTTAB_OPT_OVERLAY) |
234 | # define MNTTAB_OPT_OVERLAY "overlay" |
235 | #endif /* defined(MNT2_GEN_OPT_OVERLAY) && !defined(MNTTAB_OPT_OVERLAY) */ |
236 | |
237 | /* |
238 | * Complete MNTTAB_OPT_* options and their inverse based on MNT2_GEN_OPT_* |
239 | * options. |
240 | */ |
241 | #if defined(MNT2_GEN_OPT_NODEV) && !defined(MNTTAB_OPT_NODEV) |
242 | # define MNTTAB_OPT_NODEV "nodev" |
243 | #endif /* defined(MNT2_GEN_OPT_NODEV) && !defined(MNTTAB_OPT_NODEV) */ |
244 | |
245 | #if defined(MNT2_GEN_OPT_NOEXEC) && !defined(MNTTAB_OPT_NOEXEC) |
246 | # define MNTTAB_OPT_NOEXEC "noexec" |
247 | /* this is missing under some versions of Linux */ |
248 | # ifndef MNTTAB_OPT_EXEC |
249 | # define MNTTAB_OPT_EXEC "exec" |
250 | # endif /* not MNTTAB_OPT_EXEC */ |
251 | #endif /* defined(MNT2_GEN_OPT_NOEXEC) && !defined(MNTTAB_OPT_NOEXEC) */ |
252 | |
253 | #if defined(MNT2_GEN_OPT_QUOTA) && !defined(MNTTAB_OPT_QUOTA) |
254 | # define MNTTAB_OPT_QUOTA "quota" |
255 | #endif /* defined(MNT2_GEN_OPT_QUOTA) && !defined(MNTTAB_OPT_QUOTA) */ |
256 | |
257 | #if defined(MNT2_GEN_OPT_SYNC) && !defined(MNTTAB_OPT_SYNC) |
258 | # define MNTTAB_OPT_SYNC "sync" |
259 | #endif /* defined(MNT2_GEN_OPT_SYNC) && !defined(MNTTAB_OPT_SYNC) */ |
260 | |
261 | #if defined(MNT2_GEN_OPT_LOG) && !defined(MNTTAB_OPT_LOG) |
262 | # define MNTTAB_OPT_LOG "log" |
263 | #endif /* defined(MNT2_GEN_OPT_LOG) && !defined(MNTTAB_OPT_LOG) */ |
264 | |
265 | #if defined(MNT2_GEN_OPT_NOATIME) && !defined(MNTTAB_OPT_NOATIME) |
266 | # define MNTTAB_OPT_NOATIME "noatime" |
267 | #endif /* defined(MNT2_GEN_OPT_NOATIME) && !defined(MNTTAB_OPT_NOATIME) */ |
268 | |
269 | #if defined(MNT2_GEN_OPT_NODEVMTIME) && !defined(MNTTAB_OPT_NODEVMTIME) |
270 | # define MNTTAB_OPT_NODEVMTIME "nodevmtime" |
271 | #endif /* defined(MNT2_GEN_OPT_NODEVMTIME) && !defined(MNTTAB_OPT_NODEVMTIME) */ |
272 | |
273 | #if defined(MNT2_GEN_OPT_SOFTDEP) && !defined(MNTTAB_OPT_SOFTDEP) |
274 | # define MNTTAB_OPT_SOFTDEP "softdep" |
275 | #endif /* defined(MNT2_GEN_OPT_SOFTDEP) && !defined(MNTTAB_OPT_SOFTDEP) */ |
276 | |
277 | #if defined(MNT2_GEN_OPT_SYMPERM) && !defined(MNTTAB_OPT_SYMPERM) |
278 | # define MNTTAB_OPT_SYMPERM "symperm" |
279 | #endif /* defined(MNT2_GEN_OPT_SYMPERM) && !defined(MNTTAB_OPT_SYMPERM) */ |
280 | |
281 | #if defined(MNT2_GEN_OPT_UNION) && !defined(MNTTAB_OPT_UNION) |
282 | # define MNTTAB_OPT_UNION "union" |
283 | #endif /* defined(MNT2_GEN_OPT_UNION) && !defined(MNTTAB_OPT_UNION) */ |
284 | |
285 | /* |
286 | * Add missing MNTTAB_OPT_* options. |
287 | */ |
288 | #ifndef MNTTAB_OPT_ACTIMEO |
289 | # define MNTTAB_OPT_ACTIMEO "actimeo" |
290 | #endif /* not MNTTAB_OPT_ACTIMEO */ |
291 | |
292 | #ifndef MNTTAB_OPT_INTR |
293 | # define MNTTAB_OPT_INTR "intr" |
294 | #endif /* not MNTTAB_OPT_INTR */ |
295 | |
296 | #ifndef MNTTAB_OPT_PORT |
297 | # define MNTTAB_OPT_PORT "port" |
298 | #endif /* not MNTTAB_OPT_PORT */ |
299 | |
300 | #ifndef MNTTAB_OPT_PUBLIC |
301 | # define MNTTAB_OPT_PUBLIC "public" |
302 | #endif /* not MNTTAB_OPT_PUBLIC */ |
303 | |
304 | #ifndef MNTTAB_OPT_RETRANS |
305 | # define MNTTAB_OPT_RETRANS "retrans" |
306 | #endif /* not MNTTAB_OPT_RETRANS */ |
307 | |
308 | #ifndef MNTTAB_OPT_RETRY |
309 | # define MNTTAB_OPT_RETRY "retry" |
310 | #endif /* not MNTTAB_OPT_RETRY */ |
311 | |
312 | #ifndef MNTTAB_OPT_RO |
313 | # define MNTTAB_OPT_RO "ro" |
314 | #endif /* not MNTTAB_OPT_RO */ |
315 | |
316 | #ifndef MNTTAB_OPT_RSIZE |
317 | # define MNTTAB_OPT_RSIZE "rsize" |
318 | #endif /* not MNTTAB_OPT_RSIZE */ |
319 | |
320 | #ifndef MNTTAB_OPT_RW |
321 | # define MNTTAB_OPT_RW "rw" |
322 | #endif /* not MNTTAB_OPT_RW */ |
323 | |
324 | #ifndef MNTTAB_OPT_TIMEO |
325 | # define MNTTAB_OPT_TIMEO "timeo" |
326 | #endif /* not MNTTAB_OPT_TIMEO */ |
327 | |
328 | #ifndef MNTTAB_OPT_WSIZE |
329 | # define MNTTAB_OPT_WSIZE "wsize" |
330 | #endif /* not MNTTAB_OPT_WSIZE */ |
331 | |
332 | /* next four are useful for pcfs mounts */ |
333 | #ifndef MNTTAB_OPT_USER |
334 | # define MNTTAB_OPT_USER "user" |
335 | #endif /* not MNTTAB_OPT_USER */ |
336 | #ifndef MNTTAB_OPT_GROUP |
337 | # define MNTTAB_OPT_GROUP "group" |
338 | #endif /* not MNTTAB_OPT_GROUP */ |
339 | #ifndef MNTTAB_OPT_MASK |
340 | # define MNTTAB_OPT_MASK "mask" |
341 | #endif /* not MNTTAB_OPT_MASK */ |
342 | #ifndef MNTTAB_OPT_DIRMASK |
343 | # define MNTTAB_OPT_DIRMASK "dirmask" |
344 | #endif /* not MNTTAB_OPT_DIRMASK */ |
345 | |
346 | /* useful for udf mounts */ |
347 | #ifndef MNTTAB_OPT_USER |
348 | # define MNTTAB_OPT_USER "user" |
349 | #endif /* not MNTTAB_OPT_USER */ |
350 | #ifndef MNTTAB_OPT_GROUP |
351 | # define MNTTAB_OPT_GROUP "group" |
352 | #endif /* not MNTTAB_OPT_GROUP */ |
353 | #ifndef MNTTAB_OPT_GMTOFF |
354 | # define MNTTAB_OPT_GMTOFF "gmtoff" |
355 | #endif /* not MNTTAB_OPT_GMTOFF */ |
356 | #ifndef MNTTAB_OPT_SESSIONNR |
357 | # define MNTTAB_OPT_SESSIONNR "sessionnr" |
358 | #endif /* not MNTTAB_OPT_SESSIONNR */ |
359 | |
360 | /* |
361 | * Incomplete filesystem definitions (sunos4, irix6, solaris2) |
362 | */ |
363 | #if defined(HAVE_FS_CDFS) && defined(MOUNT_TYPE_CDFS) && !defined(MNTTYPE_CDFS) |
364 | # define MNTTYPE_CDFS "hsfs" |
365 | #endif /* defined(HAVE_FS_CDFS) && defined(MOUNT_TYPE_CDFS) && !defined(MNTTYPE_CDFS) */ |
366 | |
367 | #ifndef cdfs_args_t |
368 | /* |
369 | * Solaris has an HSFS filesystem, but does not define hsfs_args. |
370 | * XXX: the definition here for solaris is wrong, since under solaris, |
371 | * hsfs_args should be a single integer used as a bit-field for options. |
372 | * so this code has to be fixed later. -Erez. |
373 | */ |
374 | struct hsfs_args { |
375 | char *fspec; /* name of filesystem to mount */ |
376 | int norrip; |
377 | }; |
378 | # define cdfs_args_t struct hsfs_args |
379 | # define HAVE_CDFS_ARGS_T_NORRIP |
380 | #endif /* not cdfs_args_t */ |
381 | |
382 | /* |
383 | * if does not define struct pc_args, assume integer bit-field (irix6) |
384 | */ |
385 | #if defined(HAVE_FS_PCFS) && !defined(pcfs_args_t) |
386 | # define pcfs_args_t u_int |
387 | #endif /* defined(HAVE_FS_PCFS) && !defined(pcfs_args_t) */ |
388 | |
389 | /* |
390 | * if does not define struct ufs_args, assume integer bit-field (linux) |
391 | */ |
392 | #if defined(HAVE_FS_UFS) && !defined(ufs_args_t) |
393 | # define ufs_args_t u_int |
394 | #endif /* defined(HAVE_FS_UFS) && !defined(ufs_args_t) */ |
395 | |
396 | /* |
397 | * if does not define struct udf_args, assume integer bit-field (linux) |
398 | */ |
399 | #if defined(HAVE_FS_UDF) && !defined(udf_args_t) |
400 | # define udf_args_t u_int |
401 | #endif /* defined(HAVE_FS_UDF) && !defined(udf_args_t) */ |
402 | |
403 | /* |
404 | * if does not define struct efs_args, assume integer bit-field (linux) |
405 | */ |
406 | #if defined(HAVE_FS_EFS) && !defined(efs_args_t) |
407 | # define efs_args_t u_int |
408 | #endif /* defined(HAVE_FS_EFS) && !defined(efs_args_t) */ |
409 | |
410 | #if defined(HAVE_FS_TMPFS) && !defined(tmpfs_args_t) |
411 | # define tmpfs_args_t u_int |
412 | #endif /* defined(HAVE_FS_TMPFS) && !defined(tmpfs_args_t) */ |
413 | |
414 | /* |
415 | * if does not define struct xfs_args, assume integer bit-field (linux) |
416 | */ |
417 | #if defined(HAVE_FS_XFS) && !defined(xfs_args_t) |
418 | # define xfs_args_t u_int |
419 | #endif /* defined(HAVE_FS_XFS) && !defined(xfs_args_t) */ |
420 | #if defined(HAVE_FS_EXT) && !defined(ext_args_t) |
421 | # define ext_args_t u_int |
422 | #endif /* defined(HAVE_FS_EXT) && !defined(ext_args_t) */ |
423 | |
424 | #if defined(HAVE_FS_AUTOFS) && defined(MOUNT_TYPE_AUTOFS) && !defined(MNTTYPE_AUTOFS) |
425 | # define MNTTYPE_AUTOFS "autofs" |
426 | #endif /* defined(HAVE_FS_AUTOFS) && defined(MOUNT_TYPE_AUTOFS) && !defined(MNTTYPE_AUTOFS) */ |
427 | |
428 | /* |
429 | * If NFS3, then make sure that "proto" and "vers" mnttab options |
430 | * are available. |
431 | */ |
432 | #ifdef HAVE_FS_NFS3 |
433 | # ifndef MNTTAB_OPT_VERS |
434 | # define MNTTAB_OPT_VERS "vers" |
435 | # endif /* not MNTTAB_OPT_VERS */ |
436 | # ifndef MNTTAB_OPT_PROTO |
437 | # define MNTTAB_OPT_PROTO "proto" |
438 | # endif /* not MNTTAB_OPT_PROTO */ |
439 | #endif /* not HAVE_FS_NFS3 */ |
440 | |
441 | /* |
442 | * If NFS4, then make sure that the "sec" mnttab option is available. |
443 | */ |
444 | #ifdef HAVE_FS_NFS4 |
445 | # ifndef MNTTAB_OPT_SEC |
446 | # define MNTTAB_OPT_SEC "sec" |
447 | # endif /* not MNTTAB_OPT_SEC */ |
448 | #endif /* not HAVE_FS_NFS4 */ |
449 | /* |
450 | * If loop device (header file) exists, define mount table option |
451 | */ |
452 | #if defined(HAVE_LOOP_DEVICE) && !defined(MNTTAB_OPT_LOOP) |
453 | # define MNTTAB_OPT_LOOP "loop" |
454 | #endif /* defined(HAVE_LOOP_DEVICE) && !defined(MNTTAB_OPT_LOOP) */ |
455 | |
456 | /* |
457 | * Define a dummy struct netconfig for non-TLI systems |
458 | */ |
459 | #if !defined(HAVE_NETCONFIG_H) && !defined(HAVE_SYS_NETCONFIG_H) |
460 | struct netconfig { |
461 | int dummy; |
462 | }; |
463 | #endif /* not HAVE_NETCONFIG_H and not HAVE_SYS_NETCONFIG_H */ |
464 | |
465 | /* some OSs don't define INADDR_NONE and assume it's unsigned -1 */ |
466 | #ifndef INADDR_NONE |
467 | # define INADDR_NONE 0xffffffffU |
468 | #endif /* INADDR_NONE */ |
469 | /* some OSs don't define INADDR_LOOPBACK */ |
470 | #ifndef INADDR_LOOPBACK |
471 | # define INADDR_LOOPBACK 0x7f000001 |
472 | #endif /* not INADDR_LOOPBACK */ |
473 | |
474 | #endif /* not _AM_COMPAT_H */ |
475 | |