- document ppm header and skip whitespace

This commit is contained in:
Bernhard Reutner-Fischer 2009-02-18 15:13:05 +00:00
parent e455f6ec27
commit 8dcb33c3eb

View File

@ -224,14 +224,26 @@ static void fb_drawimage(void)
theme_file = xfopen_stdin(G.image_filename); theme_file = xfopen_stdin(G.image_filename);
head = xmalloc(256); head = xmalloc(256);
// parse ppm header /* parse ppm header
* - A ppm images 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) { while (1) {
if (fgets(head, 256, theme_file) == NULL if (fgets(head, 256, theme_file) == NULL
/* do not overrun the buffer */ /* do not overrun the buffer */
|| strlen(bb_common_bufsiz1) >= sizeof(bb_common_bufsiz1) - 256) || strlen(bb_common_bufsiz1) >= sizeof(bb_common_bufsiz1) - 256)
bb_error_msg_and_die("bad PPM file '%s'", G.image_filename); 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) if (ptr != NULL)
*ptr = 0; /* ignore comments */ *ptr = 0; /* ignore comments */
strcat(bb_common_bufsiz1, head); strcat(bb_common_bufsiz1, head);