From fd4bb67bd219184481366f95feb6af34cf80effe Mon Sep 17 00:00:00 2001 From: Wolfgang Denk Date: Sun, 25 Sep 2005 15:39:00 +0200 Subject: Fix tools/bmp_logo.c using incorrect offset to pixel data Patch by Andrew Dyer, 31 Jan 2005 --- tools/bmp_logo.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'tools/bmp_logo.c') diff --git a/tools/bmp_logo.c b/tools/bmp_logo.c index 8e728e23c3..98be617667 100644 --- a/tools/bmp_logo.c +++ b/tools/bmp_logo.c @@ -46,7 +46,7 @@ int main (int argc, char *argv[]) FILE *fp; bitmap_t bmp; bitmap_t *b = &bmp; - uint16_t n_colors; + uint16_t data_offset, n_colors; if (argc < 2) { fprintf (stderr, "Usage: %s file\n", argv[0]); @@ -67,7 +67,9 @@ int main (int argc, char *argv[]) * read width and height of the image, and the number of colors used; * ignore the rest */ - skip_bytes (fp, 16); + skip_bytes (fp, 8); + fread (&data_offset, sizeof (uint16_t), 1, fp); + skip_bytes (fp, 6); fread (&b->width, sizeof (uint16_t), 1, fp); skip_bytes (fp, 2); fread (&b->height, sizeof (uint16_t), 1, fp); @@ -78,6 +80,7 @@ int main (int argc, char *argv[]) /* * Repair endianess. */ + data_offset = le_short(data_offset); b->width = le_short(b->width); b->height = le_short(b->height); n_colors = le_short(n_colors); @@ -129,6 +132,9 @@ int main (int argc, char *argv[]) ); } + /* seek to offset indicated by file header */ + fseek(fp, (long)data_offset, SEEK_SET); + /* read the bitmap; leave room for default color map */ printf ("\n"); printf ("};\n"); -- cgit v1.2.1