Start 1.33.0 development cycle
[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 #include "libbb.h"
13
14 int FAST_FUNC fstype_matches(const char *fstype, const char *comma_list)
15 {
16         int match = 1;
17
18         if (!comma_list)
19                 return match;
20
21         if (comma_list[0] == 'n' && comma_list[1] == 'o') {
22                 match--;
23                 comma_list += 2;
24         }
25
26         while (1) {
27                 char *after_mnt_type = is_prefixed_with(comma_list, fstype);
28                 if (after_mnt_type
29                  && (*after_mnt_type == '\0' || *after_mnt_type == ',')
30                 ) {
31                         return match;
32                 }
33                 comma_list = strchr(comma_list, ',');
34                 if (!comma_list)
35                         break;
36                 comma_list++;
37         }
38
39         return !match;
40 }