netpbm/netpbm-asciitopgm.patch
2011-01-17 08:46:01 +01:00

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)