summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/utils_disk.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/lib/utils_disk.c b/lib/utils_disk.c
index cfd6a979..96f5a306 100644
--- a/lib/utils_disk.c
+++ b/lib/utils_disk.c
@@ -98,25 +98,26 @@ np_set_best_match(struct parameter_list *desired, struct mount_entry *mount_list
98 size_t best_match_len = 0; 98 size_t best_match_len = 0;
99 struct mount_entry *best_match = NULL; 99 struct mount_entry *best_match = NULL;
100 100
101 /* set best match if path name exactly matches a mounted device name */
101 for (me = mount_list; me; me = me->me_next) { 102 for (me = mount_list; me; me = me->me_next) {
102 size_t len = strlen (me->me_mountdir); 103 if (strcmp(me->me_devname, d->name)==0)
103 if ((exact == FALSE && (best_match_len <= len && len <= name_len &&
104 (len == 1 || strncmp (me->me_mountdir, d->name, len) == 0)))
105 || (exact == TRUE && strcmp(me->me_mountdir, d->name)==0))
106 {
107 best_match = me; 104 best_match = me;
108 best_match_len = len; 105 }
109 } else { 106
110 len = strlen (me->me_devname); 107 /* set best match by directory name if no match was found by devname */
111 if ((exact == FALSE && (best_match_len <= len && len <= name_len && 108 if (! best_match) {
112 (len == 1 || strncmp (me->me_devname, d->name, len) == 0))) 109 for (me = mount_list; me; me = me->me_next) {
113 || (exact == TRUE && strcmp(me->me_devname, d->name)==0)) 110 size_t len = strlen (me->me_mountdir);
111 if ((exact == FALSE && (best_match_len <= len && len <= name_len &&
112 (len == 1 || strncmp (me->me_mountdir, d->name, len) == 0)))
113 || (exact == TRUE && strcmp(me->me_mountdir, d->name)==0))
114 { 114 {
115 best_match = me; 115 best_match = me;
116 best_match_len = len; 116 best_match_len = len;
117 } 117 }
118 } 118 }
119 } 119 }
120
120 if (best_match) { 121 if (best_match) {
121 d->best_match = best_match; 122 d->best_match = best_match;
122 } else { 123 } else {