1/* $NetBSD: am_compat.h,v 1.3 2009/03/20 20:30:53 christos Exp $ */ 2 3/* 4 * Copyright (c) 1997-2009 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. All advertising materials mentioning features or use of this software 22 * must display the following acknowledgment: 23 * This product includes software developed by the University of 24 * California, Berkeley and its contributors. 25 * 4. Neither the name of the University nor the names of its contributors 26 * may be used to endorse or promote products derived from this software 27 * without specific prior written permission. 28 * 29 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 30 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 31 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 32 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 33 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 34 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 35 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 37 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 38 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 39 * SUCH DAMAGE. 40 * 41 * 42 * File: am-utils/include/am_compat.h 43 * 44 */ 45 46/* 47 * 48 * This file contains compatibility functions and macros, all of which 49 * should be auto-discovered, but for one reason or another (mostly 50 * brain-damage on the part of system designers and header files) they cannot. 51 * 52 * Each compatibility macro/function must include instructions on how/when 53 * it can be removed the am-utils code. 54 * 55 */ 56 57#ifndef _AM_COMPAT_H 58# define _AM_COMPAT_H 59 60/* 61 * incomplete mount options definitions (sunos4, irix6, linux, etc.) 62 */ 63 64 65/* 66 * Complete MNTTAB_OPT_* options based on MNT2_NFS_OPT_* mount options. 67 */ 68#if defined(MNT2_NFS_OPT_ACDIRMAX) && !defined(MNTTAB_OPT_ACDIRMAX) 69# define MNTTAB_OPT_ACDIRMAX "acdirmax" 70#endif /* defined(MNT2_NFS_OPT_ACDIRMAX) && !defined(MNTTAB_OPT_ACDIRMAX) */ 71 72#if defined(MNT2_NFS_OPT_ACDIRMIN) && !defined(MNTTAB_OPT_ACDIRMIN) 73# define MNTTAB_OPT_ACDIRMIN "acdirmin" 74#endif /* defined(MNT2_NFS_OPT_ACDIRMIN) && !defined(MNTTAB_OPT_ACDIRMIN) */ 75 76#if defined(MNT2_NFS_OPT_ACREGMAX) && !defined(MNTTAB_OPT_ACREGMAX) 77# define MNTTAB_OPT_ACREGMAX "acregmax" 78#endif /* defined(MNT2_NFS_OPT_ACREGMAX) && !defined(MNTTAB_OPT_ACREGMAX) */ 79 80#if defined(MNT2_NFS_OPT_ACREGMIN) && !defined(MNTTAB_OPT_ACREGMIN) 81# define MNTTAB_OPT_ACREGMIN "acregmin" 82#endif /* defined(MNT2_NFS_OPT_ACREGMIN) && !defined(MNTTAB_OPT_ACREGMIN) */ 83 84#if !defined(MNTTAB_OPT_IGNORE) 85/* SunOS 4.1.x and others define "noauto" option, but not "auto" */ 86# if defined(MNTTAB_OPT_NOAUTO) && !defined(MNTTAB_OPT_AUTO) 87# define MNTTAB_OPT_AUTO "auto" 88# endif /* defined(MNTTAB_OPT_NOAUTO) && !defined(MNTTAB_OPT_AUTO) */ 89#endif /* !defined(MNTTAB_OPT_IGNORE) */ 90 91#if defined(MNT2_NFS_OPT_NOAC) && !defined(MNTTAB_OPT_NOAC) 92# define MNTTAB_OPT_NOAC "noac" 93#endif /* defined(MNT2_NFS_OPT_NOAC) && !defined(MNTTAB_OPT_NOAC) */ 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_LOG "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_LOG "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_LOG "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_LOG "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_LOG "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 */ 374struct 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 421#if defined(HAVE_FS_AUTOFS) && defined(MOUNT_TYPE_AUTOFS) && !defined(MNTTYPE_AUTOFS) 422# define MNTTYPE_AUTOFS "autofs" 423#endif /* defined(HAVE_FS_AUTOFS) && defined(MOUNT_TYPE_AUTOFS) && !defined(MNTTYPE_AUTOFS) */ 424 425/* 426 * If NFS3, then make sure that "proto" and "vers" mnttab options 427 * are available. 428 */ 429#ifdef HAVE_FS_NFS3 430# ifndef MNTTAB_OPT_VERS 431# define MNTTAB_OPT_VERS "vers" 432# endif /* not MNTTAB_OPT_VERS */ 433# ifndef MNTTAB_OPT_PROTO 434# define MNTTAB_OPT_PROTO "proto" 435# endif /* not MNTTAB_OPT_PROTO */ 436#endif /* not HAVE_FS_NFS3 */ 437 438/* 439 * If loop device (header file) exists, define mount table option 440 */ 441#if defined(HAVE_LOOP_DEVICE) && !defined(MNTTAB_OPT_LOOP) 442# define MNTTAB_OPT_LOOP "loop" 443#endif /* defined(HAVE_LOOP_DEVICE) && !defined(MNTTAB_OPT_LOOP) */ 444 445/* 446 * Define a dummy struct netconfig for non-TLI systems 447 */ 448#if !defined(HAVE_NETCONFIG_H) && !defined(HAVE_SYS_NETCONFIG_H) 449struct netconfig { 450 int dummy; 451}; 452#endif /* not HAVE_NETCONFIG_H and not HAVE_SYS_NETCONFIG_H */ 453 454/* some OSs don't define INADDR_NONE and assume it's unsigned -1 */ 455#ifndef INADDR_NONE 456# define INADDR_NONE 0xffffffffU 457#endif /* INADDR_NONE */ 458/* some OSs don't define INADDR_LOOPBACK */ 459#ifndef INADDR_LOOPBACK 460# define INADDR_LOOPBACK 0x7f000001 461#endif /* not INADDR_LOOPBACK */ 462 463#endif /* not _AM_COMPAT_H */ 464