- document ppm header and skip whitespace
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Wed, 18 Feb 2009 15:13:05 +0000 (15:13 -0000)
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Wed, 18 Feb 2009 15:13:05 +0000 (15:13 -0000)
miscutils/fbsplash.c

index a0f7d0dc20b0cfbfe56f104f3fd6989c7e62d350..1ea5d8ebb21a67411130eb2b2ef6cb70e663ac65 100644 (file)
@@ -224,14 +224,26 @@ static void fb_drawimage(void)
        theme_file = xfopen_stdin(G.image_filename);
        head = xmalloc(256);
 
-       // parse ppm header
+       /* parse ppm header
+        * - A ppm image’s magic number is the two characters "P6".
+        * - Whitespace (blanks, TABs, CRs, LFs).
+        * - A width, formatted as ASCII characters in decimal.
+        * - Whitespace.
+        * - A height, again in ASCII decimal.
+        * - Whitespace.
+        * - The maximum color value (Maxval), again in ASCII decimal. Must be
+        *   less than 65536.
+        * - Newline or other single whitespace character.
+        * - A raster of Width * Height pixels in triplets of rgb
+        *   in pure binary by 1 (or not implemented 2) bytes.
+        */
        while (1) {
                if (fgets(head, 256, theme_file) == NULL
                        /* do not overrun the buffer */
                        || strlen(bb_common_bufsiz1) >= sizeof(bb_common_bufsiz1) - 256)
                        bb_error_msg_and_die("bad PPM file '%s'", G.image_filename);
 
-               ptr = memchr(head, '#', 256);
+               ptr = memchr(skip_whitespace(head), '#', 256);
                if (ptr != NULL)
                        *ptr = 0; /* ignore comments */
                strcat(bb_common_bufsiz1, head);