Fixes for FreeBSD build
[oweals/busybox.git] / libbb / match_fstype.c
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 1 for a match, otherwise 0
9  *
10  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
11  */
12
13 #ifdef HAVE_MNTENT_H
14
15 #include "libbb.h"
16
17 int FAST_FUNC match_fstype(const struct mntent *mt, const char *t_fstype)
18 {
19         int match = 1;
20         int len;
21
22         if (!t_fstype)
23                 return match;
24
25         if (t_fstype[0] == 'n' && t_fstype[1] == 'o') {
26                 match--;
27                 t_fstype += 2;
28         }
29
30         len = strlen(mt->mnt_type);
31         while (1) {
32                 if (strncmp(mt->mnt_type, t_fstype, len) == 0
33                  && (t_fstype[len] == '\0' || t_fstype[len] == ',')
34                 ) {
35                         return match;
36                 }
37                 t_fstype = strchr(t_fstype, ',');
38                 if (!t_fstype)
39                         break;
40                 t_fstype++;
41         }
42
43         return !match;
44 }
45
46 #endif /* HAVE_MNTENT_H */