mtdutils: Fix mounting partitions by-name
Change-Id: I8314bb94bf5bcd9576995cd2ecdc5133c5f5ea11
diff --git a/mtdutils/mtdutils.c b/mtdutils/mtdutils.c
index 6779d6e..7a22efe 100644
--- a/mtdutils/mtdutils.c
+++ b/mtdutils/mtdutils.c
@@ -32,6 +32,11 @@
#include "rk3xhack.h"
#endif
+#ifdef BYNAME
+static const char mtdprefix[] = "/dev/block/mtd/by-name/";
+#define MTD_BASENAME_OFFSET (sizeof(mtdprefix)-1)
+#endif
+
struct MtdReadContext {
const MtdPartition *partition;
char *buffer;
@@ -141,7 +146,11 @@
p->device_index = mtdnum;
p->size = mtdsize;
p->erase_size = mtderasesize;
+#ifdef BYNAME
+ asprintf(&p->name, "%s%s", mtdprefix, mtdname);
+#else
p->name = strdup(mtdname);
+#endif
if (p->name == NULL) {
errno = ENOMEM;
goto bail;
@@ -180,6 +189,11 @@
if (strcmp(p->name, name) == 0) {
return p;
}
+#ifdef BYNAME
+ if (strcmp(p->name+MTD_BASENAME_OFFSET, name) == 0) {
+ return p;
+ }
+#endif
}
}
}
@@ -795,4 +809,4 @@
return -1;
sprintf(device, "/dev/block/mtdblock%d", p->device_index);
return 0;
-}
+}
\ No newline at end of file