summaryrefslogtreecommitdiff
path: root/sysdeps/common/mountlist.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/common/mountlist.c')
-rw-r--r--sysdeps/common/mountlist.c32
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;
}