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