diff --git a/ChangeLog b/ChangeLog
index e553828..e987af6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-06-08 Vladimir Serbinenko
+
+ * commands/hexdump.c (grub_cmd_hexdump): Use grub_disk_read instead
+ of homegrown code.
+
2009-07-31 Vladimir Serbinenko
* partmap/pc.c (pc_partition_map_iterate): Check that boot flags are
diff --git a/commands/hexdump.c b/commands/hexdump.c
index 0e560c0..f59ba36 100644
--- a/commands/hexdump.c
+++ b/commands/hexdump.c
@@ -22,7 +22,6 @@
#include
#include
#include
-#include
#include
#include
@@ -62,25 +61,20 @@ grub_cmd_hexdump (grub_extcmd_t cmd, int argc, char **args)
if (! disk)
return 0;
- if (disk->partition)
- skip += grub_partition_get_start (disk->partition) << GRUB_DISK_SECTOR_BITS;
-
sector = (skip >> (GRUB_DISK_SECTOR_BITS + 2)) * 4;
ofs = skip & (GRUB_DISK_SECTOR_SIZE * 4 - 1);
while (length)
{
- grub_size_t len, n;
+ grub_size_t len;
len = length;
- if (ofs + len > sizeof (buf))
- len = sizeof (buf) - ofs;
+ if (len > sizeof (buf))
+ len = sizeof (buf);
- n = ((ofs + len + GRUB_DISK_SECTOR_SIZE - 1)
- >> GRUB_DISK_SECTOR_BITS);
- if (disk->dev->read (disk, sector, n, buf))
+ if (grub_disk_read (disk, sector, ofs, len, buf))
break;
- hexdump (skip, &buf[ofs], len);
+ hexdump (skip, buf, len);
ofs = 0;
skip += len;