/* pnmsize.c - Don Yang (uguu.org) http://netpbm.sourceforge.net/doc/pbm.html http://netpbm.sourceforge.net/doc/pgm.html http://netpbm.sourceforge.net/doc/ppm.html http://netpbm.sourceforge.net/doc/pam.html 2013-05-05 */ #include int main(int argc, char **argv) { char buffer[1024]; int header_size, i, j; int width = 0, height = 0; header_size = fread(buffer, 1, sizeof(buffer) - 1, stdin); buffer[header_size] = '\0'; if( buffer[0] == 'P' && buffer[1] >= '1' && buffer[1] <= '7' ) { /* Remove comments from header */ for(i = 2; i < header_size; i++) { if( buffer[i] == '#' ) { for(j = i; j < header_size && buffer[j] != '\n'; j++) buffer[j] = ' '; buffer[j] = ' '; i = j; } } if( buffer[1] != '7' ) { /* PBM/PGM/PPM */ if( sscanf(buffer, "P%d %d %d", &i, &width, &height) != 3 ) width = height = 0; } else { /* PAM */ if( sscanf(buffer, "P7 WIDTH %d HEIGHT %d", &width, &height) != 2 ) width = height = 0; } } printf("%d %d\n", width, height); return 0; }