aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2017-03-22 10:10:23 +0100
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2017-03-22 10:16:13 +0100
commitdede98ffb706676309488d7cc660f569548d5930 (patch)
treee12fe749895ca39dcb67d66ce63ace9b71411ab0 /lib
parenta2eeedb0a7af1d8ebe8593cb9a9bb994d2854e63 (diff)
Return correct error number in ubi_get_vol_info1
If the specified UBI device or volume does not exist, the function is supposed to set errno to ENODEV. This patch adds a check to ubi_get_vol_info1 to change the errno to ENODEV if vol_get_major cannot access the underlying sysfs file, so the function propperly returns that the device or volume does not exist, instead of failing with errno set to ENOENT. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'lib')
-rw-r--r--lib/libubi.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/libubi.c b/lib/libubi.c
index 99022dd..f1cc37a 100644
--- a/lib/libubi.c
+++ b/lib/libubi.c
@@ -1242,8 +1242,11 @@ int ubi_get_vol_info1(libubi_t desc, int dev_num, int vol_id,
info->dev_num = dev_num;
info->vol_id = vol_id;
- if (vol_get_major(lib, dev_num, vol_id, &info->major, &info->minor))
+ if (vol_get_major(lib, dev_num, vol_id, &info->major, &info->minor)) {
+ if (errno == ENOENT)
+ errno = ENODEV;
return -1;
+ }
ret = vol_read_data(lib->vol_type, dev_num, vol_id, buf, 50);
if (ret < 0)