xref: /original-bsd/usr.sbin/amd/amd/mtab.c (revision c3e32dec)
1 /*
2  * Copyright (c) 1989 Jan-Simon Pendry
3  * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
4  * Copyright (c) 1989, 1993
5  *	The Regents of the University of California.  All rights reserved.
6  *
7  * This code is derived from software contributed to Berkeley by
8  * Jan-Simon Pendry at Imperial College, London.
9  *
10  * %sccs.include.redist.c%
11  *
12  *	@(#)mtab.c	8.1 (Berkeley) 06/06/93
13  *
14  * $Id: mtab.c,v 5.2.2.1 1992/02/09 15:08:45 jsp beta $
15  *
16  */
17 
18 #include "am.h"
19 
20 /*
21  * Firewall /etc/mtab entries
22  */
23 void mnt_free P((struct mntent *mp));
24 void mnt_free(mp)
25 struct mntent *mp;
26 {
27 	free(mp->mnt_fsname);
28 	free(mp->mnt_dir);
29 	free(mp->mnt_type);
30 	free(mp->mnt_opts);
31 	free((voidp) mp);
32 }
33 
34 /*
35  * Discard memory allocated for mount list
36  */
37 void discard_mntlist P((mntlist *mp));
38 void discard_mntlist(mp)
39 mntlist *mp;
40 {
41 	mntlist *mp2;
42 
43 	while (mp2 = mp) {
44 		mp = mp->mnext;
45 		if (mp2->mnt)
46 			mnt_free(mp2->mnt);
47 		free((voidp) mp2);
48 	}
49 }
50 
51 /*
52  * Throw away a mount list
53  */
54 void free_mntlist P((mntlist *mp));
55 void free_mntlist(mp)
56 mntlist *mp;
57 {
58 	discard_mntlist(mp);
59 	unlock_mntlist();
60 }
61 
62 /*
63  * Utility routine which determines the value of a
64  * numeric option in the mount options (such as port=%d).
65  * Returns 0 if the option is not specified.
66  */
67 int hasmntval P((struct mntent *mnt, char *opt));
68 int hasmntval(mnt, opt)
69 struct mntent *mnt;
70 char *opt;
71 {
72 	char *str = hasmntopt(mnt, opt);
73 	if (str) {
74 		char *eq = strchr(str, '=');
75 		if (eq)
76 			return atoi(eq+1);
77 		else
78 			plog(XLOG_USER, "bad numeric option \"%s\" in \"%s\"", opt, str);
79 	}
80 
81 	return 0;
82 }
83