--- converter/pgm/asciitopgm.c~ 2011-01-01 01:58:56.000000000 -0500 +++ converter/pgm/asciitopgm.c 2011-01-17 01:20:26.720684456 -0500 @@ -55,6 +55,7 @@ bool warned; int *obuf; const char * const usage = "[-d <val>] height width [asciifile]"; + char trunc; pgm_init( &argc, argv ); @@ -112,7 +113,7 @@ for (col = 0; col < cols; ++col) obuf[col] = 0; } grays = pgm_allocarray( cols, rows ); - row = i = 0; + row = i = trunc = 0; while ( row < rows ) { switch (c = getc (ifd)) @@ -120,6 +121,9 @@ case EOF: goto line_done; case '\n': + newline: + fputc(c, stderr); + trunc = 0; if ((c = getc (ifd)) == EOF) goto line_done; if (c == '+') @@ -137,11 +141,24 @@ ++row; if ( row >= rows ) break; - if (c != EOF) + if (c == '\n') + goto newline; + else if (c != EOF) obuf[i++] += gmap[c]; } break; default: + fputc(c, stderr); + if (i == cols) + { + if (! trunc) + { + pm_message("Warning: row %d being truncated at %d columns", + row+1, cols); + trunc = 1; + } + continue; + } if (c > 0x7f) /* !isascii(c) */ { if (!warned)