diff options
Diffstat (limited to 'sysdeps/common/mountlist.c')
-rw-r--r-- | sysdeps/common/mountlist.c | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/sysdeps/common/mountlist.c b/sysdeps/common/mountlist.c index 30ae0b6b..8cf21516 100644 --- a/sysdeps/common/mountlist.c +++ b/sysdeps/common/mountlist.c @@ -21,6 +21,7 @@ #include <glib.h> #include <stdio.h> +#include <stdlib.h> #include <sys/types.h> #if defined(STDC_HEADERS) || defined(HAVE_STRING_H) @@ -535,31 +536,28 @@ read_filesystem_list (void) static gboolean ignore_mount_entry(const struct mount_entry *me) { + /* keep sorted */ static const char ignored[][12] = { - "proc", - "procfs", "autofs", - "sysfs", - "usbfs", - "none", - "devpts", - "usbdevfs", "binfmt_misc", - "supermount", + "devpts", "mntfs", + "none", "openpromfs", - "unknown" + "proc", + "procfs", + "supermount", + "sysfs", + "unknown", + "usbdevfs", + "usbfs" }; - const char (*i)[12] = &ignored[0]; - - while(i != (&ignored[0] + G_N_ELEMENTS(ignored))) { - if(strcmp(*i, me->me_type) == 0) - return TRUE; - ++i; - } + typedef int (*Comparator)(const void*, const void*); - return FALSE; + return bsearch(me->me_type, + ignored, G_N_ELEMENTS(ignored), sizeof ignored[0], + (Comparator) strcmp) != NULL; } |