am d12560aa: add the ability to seek to a raw location while reading MTD partition

Merge commit 'd12560aa2134d3af21a1220cd4873553f9c51743' into gingerbread-plus-aosp

* commit 'd12560aa2134d3af21a1220cd4873553f9c51743':
  add the ability to seek to a raw location while reading MTD partition
diff --git a/mtdutils/mtdutils.c b/mtdutils/mtdutils.c
index c913a19..d16f44e 100644
--- a/mtdutils/mtdutils.c
+++ b/mtdutils/mtdutils.c
@@ -279,6 +279,12 @@
     return ctx;
 }
 
+// Seeks to a location in the partition.  Don't mix with reads of
+// anything other than whole blocks; unpredictable things will result.
+void mtd_read_skip_to(const MtdReadContext* ctx, size_t offset) {
+    lseek64(ctx->fd, offset, SEEK_SET);
+}
+
 static int read_block(const MtdPartition *partition, int fd, char *data)
 {
     struct mtd_ecc_stats before, after;
@@ -449,6 +455,7 @@
             if (retry > 0) {
                 fprintf(stderr, "mtd: wrote block after %d retries\n", retry);
             }
+            fprintf(stderr, "mtd: successfully wrote block at %x\n", pos);
             return 0;  // Success!
         }
 
diff --git a/mtdutils/mtdutils.h b/mtdutils/mtdutils.h
index 528a5bb..45d3ebc 100644
--- a/mtdutils/mtdutils.h
+++ b/mtdutils/mtdutils.h
@@ -45,6 +45,7 @@
 MtdReadContext *mtd_read_partition(const MtdPartition *);
 ssize_t mtd_read_data(MtdReadContext *, char *data, size_t data_len);
 void mtd_read_close(MtdReadContext *);
+void mtd_read_skip_to(const MtdReadContext *, size_t offset);
 
 MtdWriteContext *mtd_write_partition(const MtdPartition *);
 ssize_t mtd_write_data(MtdWriteContext *, const char *data, size_t data_len);