summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorWolfgang Denk <wd@pollux.(none)>2005-09-25 15:39:00 +0200
committerWolfgang Denk <wd@pollux.(none)>2005-09-25 15:39:00 +0200
commitfd4bb67bd219184481366f95feb6af34cf80effe (patch)
tree530075d2fd5dbc2763b9e36ce932b506ac2e41d9 /tools
parentfe7eb5d88bd593a35a13a0a84997ab6c41397bac (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.c10
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");