from Jan Pendry
[unix-history] / usr / src / usr.sbin / amd / config / mtab_bsd.c
CommitLineData
e1a31032
KM
1/*
2 * $Id: mtab_bsd.c,v 5.2 90/06/23 22:20:40 jsp Rel $
3 *
4 * Copyright (c) 1990 Jan-Simon Pendry
5 * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
6 * Copyright (c) 1990 The Regents of the University of California.
7 * All rights reserved.
8 *
9 * This code is derived from software contributed to Berkeley by
10 * Jan-Simon Pendry at Imperial College, London.
11 *
12 * %sccs.include.redist.c%
13 *
14 * @(#)mtab_bsd.c 5.1 (Berkeley) %G%
15 */
16
17#include "am.h"
18
19#ifdef READ_MTAB_BSD_STYLE
20
21#include <sys/mount.h>
22
23static struct mntent *mnt_dup(mp)
24struct statfs *mp;
25{
26 struct mntent *new_mp = ALLOC(mntent);
27 char *ty;
28
29 new_mp->mnt_fsname = strdup(mp->f_mntfromname);
30 new_mp->mnt_dir = strdup(mp->f_mntonname);
31 switch (mp->f_type) {
32 case MOUNT_UFS: ty = MTAB_TYPE_UFS; break;
33 case MOUNT_NFS: ty = MTAB_TYPE_NFS; break;
34 case MOUNT_MFS: ty = MTAB_TYPE_MFS; break;
35 default: ty = "unknown"; break;
36 }
37 new_mp->mnt_type = strdup(ty);
38 new_mp->mnt_opts = strdup("unset");
39 new_mp->mnt_freq = 0;
40 new_mp->mnt_passno = 0;
41
42 return new_mp;
43}
44
45/*
46 * Read a mount table into memory
47 */
48mntlist *read_mtab(fs)
49char *fs;
50{
51 mntlist **mpp, *mhp;
52 struct statfs *mntbufp, *mntp;
53
54 int nloc = getmntinfo(&mntbufp, MNT_NOWAIT);
55
56 if (nloc == 0) {
57 plog(XLOG_ERROR, "Can't read mount table");
58 return 0;
59 }
60
61 mpp = &mhp;
62 for (mntp = mntbufp; mntp < mntbufp + nloc; mntp++) {
63 /*
64 * Allocate a new slot
65 */
66 *mpp = ALLOC(mntlist);
67
68 /*
69 * Copy the data returned by getmntent
70 */
71 (*mpp)->mnt = mnt_dup(mntp);
72
73 /*
74 * Move to next pointer
75 */
76 mpp = &(*mpp)->mnext;
77 }
78
79 return mhp;
80}
81
82#endif /* READ_MTAB_BSD_STYLE */