/***********************************************************************
* Code listing from "Advanced Linux Programming," by CodeSourcery LLC *
* Copyright (C) 2001 by New Riders Publishing *
* See COPYRIGHT for license information. *
***********************************************************************/
#include
#include
#include
#include
#include
int main (int argc, char* argv[])
{
unsigned char buffer[16];
size_t offset = 0;
size_t bytes_read;
int i;
/* Open the file for reading. */
int fd = open (argv[1], O_RDONLY);
/* Read from the file, one chunk at a time. Continue until read
"comes up short", i.e. reads less than we asked for. This
indicates that we've hit the end of the file. */
do {
/* Read the next lines's worth of bytes. */
bytes_read = read (fd, buffer, sizeof (buffer));
/* Print the offset in the file, followed by the bytes themselves. */
printf ("0x%06x : ", offset);
for (i = 0; i < bytes_read; ++i)
printf ("%02x ", buffer[i]);
printf ("\n");
/* Keep count of our position in the file. */
offset += bytes_read;
}
while (bytes_read == sizeof (buffer));
/* All done. */
close (fd);
return 0;
}