diff -r -u --new-file mtd/util/nanddump.c mtd.new/util/nanddump.c --- mtd/util/nanddump.c 2003-02-20 06:34:20.000000000 -0700 +++ mtd.new/util/nanddump.c 2003-10-02 12:11:27.000000000 -0600 @@ -41,17 +41,31 @@ int main(int argc, char **argv) { unsigned long ofs; - int i, fd, ofd, bs, start_addr, end_addr, pretty_print; + int i, fd, ofd, bs, start_addr, end_addr; + int pretty_print=(-1); + int no_oob=0; struct mtd_oob_buf oob = {0, 16, oobbuf}; mtd_info_t meminfo; unsigned char pretty_buf[80]; /* Make sure enough arguments were passed */ if (argc < 3) { - printf("usage: %s [start addr] [length]\n", argv[0]); + printf("usage: %s [start addr] [length] [-no-oob] [-no-print]\n", argv[0]); exit(1); } + for (i=1; i= 4) { start_addr = strtoul(argv[3], NULL, 0) & ~(bs - 1); end_addr = meminfo.size; - } else if (argc == 5) { + } else if (argc >= 5) { start_addr = strtoul(argv[3], NULL, 0) & ~(bs - 1); end_addr = (strtoul(argv[3], NULL, 0) + strtoul(argv[4], NULL, 0)) & ~(bs - 1); } /* Ask user if they would like pretty output */ - printf("Would you like formatted output? "); - if (tolower(getc(stdin)) != 'y') - pretty_print = 0; - else - pretty_print = 1; + if (pretty_print < 0) + { + printf("Would you like formatted output? "); + if (tolower(getc(stdin)) != 'y') + pretty_print = 0; + else + pretty_print = 1; + } /* Print informative message */ printf("Dumping data starting at 0x%08x and ending at 0x%08x...\n", @@ -138,7 +156,7 @@ /* Read OOB data and exit on failure */ oob.start = ofs; - printf("Dumping %lx\n", ofs); + if (pretty_print > 0) printf("Dumping %lx\n", ofs); if (ioctl(fd, MEMREADOOB, &oob) != 0) { perror("ioctl(MEMREADOOB)"); close(fd); @@ -147,7 +165,7 @@ } /* Write out OOB data */ - if (pretty_print) { + if ((!no_oob) && pretty_print) { if (meminfo.oobsize == 16) { sprintf(pretty_buf, " OOB Data: %02x %02x %02x %02x %02x %02x " "%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n", @@ -166,7 +184,7 @@ oobbuf[6], oobbuf[7]); write(ofd, pretty_buf, 48); } - } else + } else if (!no_oob) write(ofd, oobbuf, meminfo.oobsize); }