public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] bmp_logo: Check return value of fread()
@ 2009-04-24 20:59 Peter Tyser
  2009-04-27 23:18 ` Wolfgang Denk
  0 siblings, 1 reply; 18+ messages in thread
From: Peter Tyser @ 2009-04-24 20:59 UTC (permalink / raw)
  To: u-boot

Add basic error handling to fread() function calls.  This prevents
compililation warnings such as:

bmp_logo.c: In function ?main?:
bmp_logo.c:71: warning: ignoring return value of ?fread?, declared with
attribute warn_unused_result
...

Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
---
 tools/bmp_logo.c |   35 ++++++++++++++++++++++-------------
 1 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/tools/bmp_logo.c b/tools/bmp_logo.c
index 98be617..e8dd8c8 100644
--- a/tools/bmp_logo.c
+++ b/tools/bmp_logo.c
@@ -40,6 +40,16 @@ void skip_bytes (FILE *fp, int n)
 		fgetc (fp);
 }
 
+__attribute__ ((__noreturn__))
+int error (char * msg, FILE *fp)
+{
+	fprintf (stderr, "ERROR: %s\n", msg);
+
+	fclose (fp);
+
+	exit (EXIT_FAILURE);
+}
+
 int main (int argc, char *argv[])
 {
 	int	i, x;
@@ -58,23 +68,25 @@ int main (int argc, char *argv[])
 		exit (EXIT_FAILURE);
 	}
 
-	if (fgetc (fp) != 'B' || fgetc (fp) != 'M') {
-		fprintf (stderr, "%s is not a bitmap file.\n", argv[1]);
-		exit (EXIT_FAILURE);
-	}
+	if (fgetc (fp) != 'B' || fgetc (fp) != 'M')
+		error ("Input file is not a bitmap", fp);
 
 	/*
 	 * read width and height of the image, and the number of colors used;
 	 * ignore the rest
 	 */
 	skip_bytes (fp, 8);
-	fread (&data_offset, sizeof (uint16_t), 1, fp);
+	if (fread (&data_offset, sizeof (uint16_t), 1, fp) != 1)
+		error ("Couldn't read bitmap data offset", fp);
 	skip_bytes (fp, 6);
-	fread (&b->width,   sizeof (uint16_t), 1, fp);
+	if (fread (&b->width,   sizeof (uint16_t), 1, fp) != 1)
+		error ("Couldn't read bitmap width", fp);
 	skip_bytes (fp, 2);
-	fread (&b->height,  sizeof (uint16_t), 1, fp);
+	if (fread (&b->height,  sizeof (uint16_t), 1, fp) != 1)
+		error ("Couldn't read bitmap height", fp);
 	skip_bytes (fp, 22);
-	fread (&n_colors, sizeof (uint16_t), 1, fp);
+	if (fread (&n_colors, sizeof (uint16_t), 1, fp) != 1)
+		error ("Couldn't read bitmap colors", fp);
 	skip_bytes (fp, 6);
 
 	/*
@@ -108,11 +120,8 @@ int main (int argc, char *argv[])
 		DEFAULT_CMAP_SIZE);
 
 	/* allocate memory */
-	if ((b->data = (uint8_t *)malloc(b->width * b->height)) == NULL) {
-		fclose (fp);
-		printf ("Error allocating memory for file %s.\n", argv[1]);
-		exit (EXIT_FAILURE);
-	}
+	if ((b->data = (uint8_t *)malloc(b->width * b->height)) == NULL)
+		error ("Error allocating memory for file", fp);
 
 	/* read and print the palette information */
 	printf ("unsigned short bmp_logo_palette[] = {\n");
-- 
1.6.2.1

^ permalink raw reply related	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2009-04-30 15:43 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-24 20:59 [U-Boot] [PATCH] bmp_logo: Check return value of fread() Peter Tyser
2009-04-27 23:18 ` Wolfgang Denk
2009-04-27 23:41   ` Mike Frysinger
2009-04-27 23:53     ` Peter Tyser
2009-04-28  0:01       ` Mike Frysinger
2009-04-28  5:21       ` Wolfgang Denk
2009-04-28  9:11         ` Detlev Zundel
2009-04-28 12:58           ` Mike Frysinger
2009-04-28 17:06             ` Detlev Zundel
2009-04-28 17:15               ` Mike Frysinger
2009-04-30 14:00                 ` Detlev Zundel
2009-04-30 15:43                   ` Mike Frysinger
2009-04-28 15:06         ` Peter Tyser
2009-04-28 15:49           ` Mike Frysinger
2009-04-28 15:57             ` Peter Tyser
2009-04-28 17:03               ` Mike Frysinger
2009-04-28 17:22           ` Mike Frysinger
2009-04-28 18:01             ` Peter Tyser

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox