diff options
author | Wolfgang Denk <wd@pollux.(none)> | 2005-09-25 15:39:00 +0200 |
---|---|---|
committer | Wolfgang Denk <wd@pollux.(none)> | 2005-09-25 15:39:00 +0200 |
commit | fd4bb67bd219184481366f95feb6af34cf80effe (patch) | |
tree | 530075d2fd5dbc2763b9e36ce932b506ac2e41d9 /tools | |
parent | fe7eb5d88bd593a35a13a0a84997ab6c41397bac (diff) |
Fix tools/bmp_logo.c using incorrect offset to pixel data
Patch by Andrew Dyer, 31 Jan 2005
Diffstat (limited to 'tools')
-rw-r--r-- | tools/bmp_logo.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/tools/bmp_logo.c b/tools/bmp_logo.c index 8e728e23c3e..98be6176675 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"); |