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.
10 * This code is derived from software contributed to Berkeley by
11 * Jan-Simon Pendry at Imperial College, London.
13 * Redistribution and use in source and binary forms, with or without
14 * modification, are permitted provided that the following conditions
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.
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
42 * File: am-utils/conf/mtab/mtab_osf.c
48 #endif /* HAVE_CONFIG_H */
54 mnt_dup(struct statfs
*mp
)
56 mntent_t
*new_mp
= ALLOC(mntent_t
);
59 char mntfrombuf
[MNAMELEN
];
63 * Under DEC OSF/1 T1.2-2 the f_mntfromname fields of
64 * the statfs structure can be in the format <fs>@<host>
65 * instead of <host>:<fs>. Here we check for this and
66 * reformat it if necessary.
68 mntfromptr
= mp
->f_mntfromname
;
74 #endif /* HAVE_FS_NFS3 */
75 at
= strchr(mp
->f_mntfromname
, '@');
77 xstrlcpy(mntfrombuf
, (at
+ 1), sizeof(mntfrombuf
));
78 xstrlcat(mntfrombuf
, ":", sizeof(mntfrombuf
));
79 strncat(mntfrombuf
, mp
->f_mntfromname
, (at
- mp
->f_mntfromname
));
80 mntfromptr
= mntfrombuf
;
83 new_mp
->mnt_fsname
= strdup(mntfromptr
);
85 new_mp
->mnt_dir
= strdup(mp
->f_mntonname
);
92 ty
= MNTTAB_TYPE_NFS3
;
94 #endif /* HAVE_FS_NFS3 */
106 new_mp
->mnt_type
= strdup(ty
);
107 new_mp
->mnt_opts
= strdup("unset");
108 new_mp
->mnt_freq
= 0;
109 new_mp
->mnt_passno
= 0;
116 * Read a mount table into memory
119 read_mtab(char *fs
, const char *mnttabname
)
122 struct statfs
*mntbufp
, *mntp
;
124 int nloc
= getmntinfo(&mntbufp
, MNT_NOWAIT
);
127 plog(XLOG_ERROR
, "Can't read mount table");
131 for (mntp
= mntbufp
; mntp
< mntbufp
+ nloc
; mntp
++) {
133 * Allocate a new slot
135 *mpp
= ALLOC(struct mntlist
);
138 * Copy the data returned by getmntent
140 (*mpp
)->mnt
= mnt_dup(mntp
);
143 * Move to next pointer
145 mpp
= &(*mpp
)->mnext
;
148 /* terminate the linked list */