- buf+=block_len;
- byte_len-=block_len;
- sector+= block_len/SECTOR_SIZE;
-
- if (byte_len != 0)
- {
-/* read rest of data which are not in whole sector */
- if (ext2fs_block_dev_desc->block_read(ext2fs_block_dev_desc->dev,
- part_info.start+sector,
- 1,
- (unsigned long *)sec_buf) != 1)
- {
- printf (" ** ext2fs_devread() read error - last part\n");
- return(0);
- }
- memcpy(buf, sec_buf, byte_len);
+
+ if (ext2fs_block_dev_desc->block_read (ext2fs_block_dev_desc->dev,
+ part_info.start + sector,
+ block_len / SECTOR_SIZE,
+ (unsigned long *) buf) !=
+ block_len / SECTOR_SIZE) {
+ printf (" ** ext2fs_devread() read error - block\n");
+ return (0);
+ }
+ block_len = byte_len & ~(SECTOR_SIZE - 1);
+ buf += block_len;
+ byte_len -= block_len;
+ sector += block_len / SECTOR_SIZE;
+
+ if (byte_len != 0) {
+ /* read rest of data which are not in whole sector */
+ if (ext2fs_block_dev_desc->
+ block_read (ext2fs_block_dev_desc->dev,
+ part_info.start + sector, 1,
+ (unsigned long *) sec_buf) != 1) {
+ printf (" ** ext2fs_devread() read error - last part\n");
+ return (0);
+ }
+ memcpy (buf, sec_buf, byte_len);