56 lines
1.4 KiB
Diff
56 lines
1.4 KiB
Diff
--- 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)
|