diff options
Diffstat (limited to 'tools/bmp_logo.c')
| -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 8e728e23c..98be61766 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"); |