1/* vi: set sw=4 ts=4: */
2/*
3 * Match fstypes for use in mount unmount
4 * We accept notmpfs,nfs but not notmpfs,nonfs
5 * This allows us to match fstypes that start with no like so
6 *   mount -at ,noddy
7 *
8 * Returns 0 for a match, otherwise -1
9 *
10 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
11 */
12
13#include "libbb.h"
14
15int match_fstype(const struct mntent *mt, const char *fstype)
16{
17	int no = 0;
18	int len;
19
20	if (!mt)
21		return -1;
22
23	if (!fstype)
24		return 0;
25
26	if (fstype[0] == 'n' && fstype[1] == 'o') {
27		no = -1;
28		fstype += 2;
29	}
30
31	len = strlen(mt->mnt_type);
32	while (fstype) {
33		if (!strncmp(mt->mnt_type, fstype, len)
34		 && (!fstype[len] || fstype[len] == ',')
35		) {
36			return no;
37		}
38		fstype = strchr(fstype, ',');
39		if (fstype)
40			fstype++;
41	}
42
43	return -(no + 1);
44}
45