]> www.infradead.org Git - mtd-utils.git/commitdiff
ubi-utils: be backward-compatible
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Sun, 23 Dec 2007 12:14:54 +0000 (14:14 +0200)
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Sun, 23 Dec 2007 12:14:54 +0000 (14:14 +0200)
Since control device is not supported by UBI in mainline kernels,
we should not panic if it is absent.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
ubi-utils/src/libubi.c
ubi-utils/src/ubinfo.c

index e754747d6bd6aa2f4f30274dd84c27b3af229de1..9aa78473384c723f4eec9e6c93568c340d147543 100644 (file)
@@ -749,8 +749,15 @@ int ubi_get_info(libubi_t desc, struct ubi_info *info)
 
        memset(info, '\0', sizeof(struct ubi_info));
 
-       if (read_major(lib->ctrl_dev, &info->ctrl_major, &info->ctrl_minor))
-               return -1;
+       if (read_major(lib->ctrl_dev, &info->ctrl_major, &info->ctrl_minor)) {
+               /*
+                * Older UBI versions did not have control device, so we do not
+                * panic here for compatibility reasons. May be few years later
+                * we could return -1 here, but for now just set major:minor to
+                * -1.
+                */
+               info->ctrl_major = info->ctrl_minor = -1;
+       }
 
        /*
         * We have to scan the UBI sysfs directory to identify how many UBI
index a0bbbec1591a70a9f63273c8aca41ac8575cb4b4..280c770418c7f321a920f7b5f476084ecbfc99d5 100644 (file)
@@ -335,8 +335,11 @@ static int print_general_info(libubi_t libubi, int all)
 
        printf("UBI version:                    %d\n", ubi_info.version);
        printf("Count of UBI devices:           %d\n", ubi_info.dev_count);
-       printf("UBI control device major/minor: %d:%d\n",
-              ubi_info.ctrl_major, ubi_info.ctrl_minor);
+       if (ubi_info.ctrl_major != -1)
+               printf("UBI control device major/minor: %d:%d\n",
+                      ubi_info.ctrl_major, ubi_info.ctrl_minor);
+       else
+               printf("UBI control device is not supported by this kernel\n");
 
        if (ubi_info.dev_count == 0)
                return 0;