libbb: make "COMMON_BUFSIZE = 1024 bytes, the buffer will be malloced" work
[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 #include "libbb.h"
14
15 #ifdef HAVE_MNTENT_H
16
17 int FAST_FUNC match_fstype(const struct mntent *mt, const char *t_fstype)
18 {
19         int match = 1;
20
21         if (!t_fstype)
22                 return match;
23
24         if (t_fstype[0] == 'n' && t_fstype[1] == 'o') {
25                 match--;
26                 t_fstype += 2;
27         }
28
29         while (1) {
30                 char *after_mnt_type = is_prefixed_with(t_fstype, mt->mnt_type);
31                 if (after_mnt_type
32                  && (*after_mnt_type == '\0' || *after_mnt_type == ',')
33                 ) {
34                         return match;
35                 }
36                 t_fstype = strchr(t_fstype, ',');
37                 if (!t_fstype)
38                         break;
39                 t_fstype++;
40         }
41
42         return !match;
43 }
44
45 #endif /* HAVE_MNTENT_H */