X-Git-Url: http://git.archive.openwrt.org/?p=project%2Ffstools.git;a=blobdiff_plain;f=libfstools%2Fmtd.c;h=b9daabcb595e75cd4cd12f9757729b55257e2e77;hp=a0005d7ebd804163e952409f237ff61e16f4d70f;hb=233d957c7662b667fb5470c05641e51e802df97c;hpb=8603b6f2e7782437f3af16778b231ec9c1045f09 diff --git a/libfstools/mtd.c b/libfstools/mtd.c index a0005d7..b9daabc 100644 --- a/libfstools/mtd.c +++ b/libfstools/mtd.c @@ -21,7 +21,7 @@ #include #include -#include "../fs-state.h" +#include "libfstools.h" #include "volume.h" @@ -130,7 +130,9 @@ static char* mtd_find_index(char *name) return index; while (!index && fgets(line, sizeof(line), fp)) { - if (strstr(line, name)) { + char *ret; + + if ((ret = strstr(line, name)) && (ret[strlen(name)] == '"')) { char *eol = strstr(line, ":"); if (!eol) @@ -170,6 +172,11 @@ static int mtd_volume_find(struct volume *v, char *name) snprintf(buffer, sizeof(buffer), "/dev/mtd%s", idx); p->chr = strdup(buffer); + if (mtd_volume_load(v)) { + fprintf(stderr, "reading %s failed\n", v->name); + return -1; + } + return 0; } @@ -192,7 +199,7 @@ static int mtd_volume_identify(struct volume *v) return -1; } - if (deadc0de == 0x4f575254) + if (deadc0de == __be32_to_cpu(0x4f575254)) return FS_SNAPSHOT; deadc0de = __be32_to_cpu(deadc0de);