Add call to set up the partition offset for filedev.
authorCarl Hetherington <cth@carlh.net>
Thu, 12 Jan 2017 13:45:04 +0000 (13:45 +0000)
committerCarl Hetherington <cth@carlh.net>
Thu, 12 Jan 2017 13:45:04 +0000 (13:45 +0000)
blockdev/linux/ext4_filedev.c
blockdev/linux/ext4_filedev.h

index d4417996994ac4e5781fcc6030a358cfbb4c33a1..864e6c6958a08619a4640617057e3e0b8b12e6bb 100644 (file)
@@ -38,6 +38,7 @@
 
 /**@brief   Default filename.*/
 static const char *fname = "ext2";
+static uint64_t offset = 0;
 
 /**@brief   Image block size.*/
 #define EXT4_FILEDEV_BSIZE 512
@@ -73,8 +74,8 @@ static int filedev_open(struct ext4_blockdev *bdev)
        if (fseeko(dev_file, 0, SEEK_END))
                return EFAULT;
 
-       _filedev.part_offset = 0;
-       _filedev.part_size = ftello(dev_file);
+       _filedev.part_offset = offset;
+       _filedev.part_size = ftello(dev_file) - offset;
        _filedev.bdif->ph_bcnt = _filedev.part_size / _filedev.bdif->ph_bsize;
 
        return EOK;
@@ -133,5 +134,6 @@ static int filedev_close(struct ext4_blockdev *bdev)
 struct ext4_blockdev *ext4_filedev_get(void) { return &_filedev; }
 /******************************************************************************/
 void ext4_filedev_filename(const char *n) { fname = n; }
+void ext4_filedev_offset(uint64_t o) { offset = o; }
 
 /******************************************************************************/
index 8f13d9ad422562484ccba23e1127fb409ed15d9b..ce3ecdd05fe8127a2a22c15f125ab2ae267a84af 100644 (file)
@@ -39,5 +39,7 @@ struct ext4_blockdev *ext4_filedev_get(void);
 
 /**@brief   Set filename to open.*/
 void ext4_filedev_filename(const char *n);
+/**@brief   Set offset to work at within file (in bytes) */
+void ext4_filedev_offset(uint64_t o);
 
 #endif /* EXT4_FILEDEV_H_ */