]> www.infradead.org Git - mtd-utils.git/commitdiff
UBI Tools - problem with multiple ubi devices.
authorAlexander Schmidt <alexs@linux.vnet.ibm.com>
Wed, 28 Feb 2007 09:29:34 +0000 (10:29 +0100)
committerJosh Boyer <jwboyer@gmail.com>
Wed, 14 Mar 2007 17:34:42 +0000 (12:34 -0500)
Fix problem with multiple ubi devices

Signed-off-by: Alexander Schmidt <alexs@linux.vnet.ibm.com>
Signed-off-by: Josh Boyer <jwboyer@gmail.com>
ubi-utils/src/libubi.c

index 7cb74bf962c3679dea5c58a44bc174450a4978b0..62216adf729770f857512dc08cfaf7ee562eaaf3 100644 (file)
@@ -138,7 +138,7 @@ static int
 get_ubi_info(ubi_lib_t desc, struct ubi_info *ubi)
 {
        int err;
-       int n = 1;
+       int dev_count = 0;
        char *path;
        struct stat stat;
 
@@ -147,31 +147,31 @@ get_ubi_info(ubi_lib_t desc, struct ubi_info *ubi)
                return -1;
 
        /* Calculate number of UBI devices */
-       do {
+       while (!err) {
                char dir[20];
 
-               sprintf(&dir[0], "ubi%d", n);
-               path = mkpath(desc->sysfs_root, dir);
+               sprintf(&dir[0], "ubi%d", dev_count);
+               path = mkpath(desc->ubi_root, dir);
                if (!path)
                        return ENOMEM;
 
                err = lstat(path, &stat);
                if (err == 0)
-                       n += 1;
+                       dev_count += 1;
                free(path);
-       } while (err == 0);
+       }
 
        if (errno != ENOENT)
                return -1;
 
-       if (n == 0) {
+       if (dev_count == 0) {
                ubi_err("no UBI devices found");
                errno = EINVAL;
                return -1;
        }
 
        errno = 0;
-       ubi->dev_count = n;
+       ubi->dev_count = dev_count;
        return 0;
 }