diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/utils_disk.c | 17 | 
1 files changed, 9 insertions, 8 deletions
| diff --git a/lib/utils_disk.c b/lib/utils_disk.c index 468769b1..582d3ea1 100644 --- a/lib/utils_disk.c +++ b/lib/utils_disk.c | |||
| @@ -147,24 +147,25 @@ np_set_best_match(struct parameter_list *desired, struct mount_entry *mount_list | |||
| 147 | 147 | ||
| 148 | /* set best match if path name exactly matches a mounted device name */ | 148 | /* set best match if path name exactly matches a mounted device name */ | 
| 149 | for (me = mount_list; me; me = me->me_next) { | 149 | for (me = mount_list; me; me = me->me_next) { | 
| 150 | if (get_fs_usage(me->me_mountdir, me->me_devname, &fsp) < 0) | 150 | if (strcmp(me->me_devname, d->name)==0) { | 
| 151 | continue; /* skip if permissions do not suffice for accessing device */ | 151 | if (get_fs_usage(me->me_mountdir, me->me_devname, &fsp) >= 0) { | 
| 152 | if (strcmp(me->me_devname, d->name)==0) | 152 | best_match = me; | 
| 153 | best_match = me; | 153 | } | 
| 154 | } | ||
| 154 | } | 155 | } | 
| 155 | 156 | ||
| 156 | /* set best match by directory name if no match was found by devname */ | 157 | /* set best match by directory name if no match was found by devname */ | 
| 157 | if (! best_match) { | 158 | if (! best_match) { | 
| 158 | for (me = mount_list; me; me = me->me_next) { | 159 | for (me = mount_list; me; me = me->me_next) { | 
| 159 | if (get_fs_usage(me->me_mountdir, me->me_devname, &fsp) < 0) | ||
| 160 | continue; /* skip if permissions do not suffice for accessing device */ | ||
| 161 | size_t len = strlen (me->me_mountdir); | 160 | size_t len = strlen (me->me_mountdir); | 
| 162 | if ((exact == FALSE && (best_match_len <= len && len <= name_len && | 161 | if ((exact == FALSE && (best_match_len <= len && len <= name_len && | 
| 163 | (len == 1 || strncmp (me->me_mountdir, d->name, len) == 0))) | 162 | (len == 1 || strncmp (me->me_mountdir, d->name, len) == 0))) | 
| 164 | || (exact == TRUE && strcmp(me->me_mountdir, d->name)==0)) | 163 | || (exact == TRUE && strcmp(me->me_mountdir, d->name)==0)) | 
| 165 | { | 164 | { | 
| 166 | best_match = me; | 165 | if (get_fs_usage(me->me_mountdir, me->me_devname, &fsp) >= 0) { | 
| 167 | best_match_len = len; | 166 | best_match = me; | 
| 167 | best_match_len = len; | ||
| 168 | } | ||
| 168 | } | 169 | } | 
| 169 | } | 170 | } | 
| 170 | } | 171 | } | 
