tools/fax2ps.c:117: error: Integer Overflow L2
  ([7, +oo] - [1, 512]):unsigned32.

tools/fax2ps.c:67:1: <LHS trace>
65.  * March 13-15, 1995.
66.  */
67. static void
    ^
68. printruns(unsigned char* buf, uint32* runs, uint32* erun, uint32 lastx)
69. {

tools/fax2ps.c:67:1: Parameter `lastx`
65.  * March 13-15, 1995.
66.  */
67. static void
    ^
68. printruns(unsigned char* buf, uint32* runs, uint32* erun, uint32 lastx)
69. {

tools/fax2ps.c:67:1: <RHS trace>
65.  * March 13-15, 1995.
66.  */
67. static void
    ^
68. printruns(unsigned char* buf, uint32* runs, uint32* erun, uint32 lastx)
69. {

tools/fax2ps.c:67:1: Parameter `lastx`
65.  * March 13-15, 1995.
66.  */
67. static void
    ^
68. printruns(unsigned char* buf, uint32* runs, uint32* erun, uint32 lastx)
69. {

tools/fax2ps.c:117:3: Binary operation: ([7, +oo] - [1, 512]):unsigned32
115. 		}
116. 		putchar(colormode ? WBarr[l].black : WBarr[l].white), n--;
117. 		runlength -= WBarr[l].width;
       ^
118. 	    } else
119. 		l++;

static void
printruns(unsigned char* buf, uint32* runs, uint32* erun, uint32 lastx)
{
    static struct {
	char white, black;
	unsigned short width;
    } WBarr[] = {
	{ 'd', 'n', 512 }, { 'e', 'o', 256 }, { 'f', 'p', 128 },
	{ 'g', 'q',  64 }, { 'h', 'r',  32 }, { 'i', 's',  16 },
	{ 'j', 't',   8 }, { 'k', 'u',   4 }, { 'l', 'v',   2 },
	{ 'm', 'w',   1 }
    };
    static char* svalue =
	" !\"#$&'*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abc";
    int colormode = 1;
    uint32 runlength = 0;
    int n = maxline;
    uint32 x = 0;
    int l;
    (void) buf;
    printf("%d m(", row++);
    while (runs < erun) {
	if (runlength <= 0) {
	    colormode ^= 1;
	    runlength = *runs++;
	    if (x+runlength > lastx)
		runlength = runs[-1] = lastx-x;
	    x += runlength;
	    if (!colormode && runs == erun)
		break;
	}
	l = 0;
	while (runlength > 6) {
	    if (runlength >= WBarr[l].width) {
		if (n == 0) {
		    putchar('\n');
		    n = maxline;
		}
		putchar(colormode ? WBarr[l].black : WBarr[l].white), n--;
		runlength -= WBarr[l].width;
	    } else
		l++;
	}
	while (runlength > 0 && runlength <= 6) {
	    uint32 bitsleft = 6;
	    int t = 0;
	    while (bitsleft) {
		if (runlength <= bitsleft) {
		    if (colormode)
			t |= ((1 << runlength)-1) << (bitsleft-runlength);
		    bitsleft -= runlength;
		    runlength = 0;
		    if (bitsleft) {
			if (runs >= erun)
			    break;
			colormode ^= 1;
			runlength = *runs++;
			if (x+runlength > lastx)
			    runlength = runs[-1] = lastx-x;
			x += runlength;
		    }
		} else {
		    if (colormode)
			t |= ((1 << bitsleft)-1);
		    runlength -= bitsleft;
		    bitsleft = 0;
		}
	    }
	    if (n == 0) {
		putchar('\n');
		n = maxline;
	    }
	    putchar(svalue[t]), n--;
	}
    }
    printf(")s\n");
}
['static void\nprintruns(unsigned char* buf, uint32* runs, uint32* erun, uint32 lastx)\n{\n    static struct {\n\tchar white, black;\n\tunsigned short width;\n    } WBarr[] = {\n\t{ \'d\', \'n\', 512 }, { \'e\', \'o\', 256 }, { \'f\', \'p\', 128 },\n\t{ \'g\', \'q\',  64 }, { \'h\', \'r\',  32 }, { \'i\', \'s\',  16 },\n\t{ \'j\', \'t\',   8 }, { \'k\', \'u\',   4 }, { \'l\', \'v\',   2 },\n\t{ \'m\', \'w\',   1 }\n    };\n    static char* svalue =\n\t" !\\"#$&\'*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abc";\n    int colormode = 1;\n    uint32 runlength = 0;\n    int n = maxline;\n    uint32 x = 0;\n    int l;\n    (void) buf;\n    printf("%d m(", row++);\n    while (runs < erun) {\n\tif (runlength <= 0) {\n\t    colormode ^= 1;\n\t    runlength = *runs++;\n\t    if (x+runlength > lastx)\n\t\trunlength = runs[-1] = lastx-x;\n\t    x += runlength;\n\t    if (!colormode && runs == erun)\n\t\tbreak;\n\t}\n\tl = 0;\n\twhile (runlength > 6) {\n\t    if (runlength >= WBarr[l].width) {\n\t\tif (n == 0) {\n\t\t    putchar(\'\\n\');\n\t\t    n = maxline;\n\t\t}\n\t\tputchar(colormode ? WBarr[l].black : WBarr[l].white), n--;\n\t\trunlength -= WBarr[l].width;\n\t    } else\n\t\tl++;\n\t}\n\twhile (runlength > 0 && runlength <= 6) {\n\t    uint32 bitsleft = 6;\n\t    int t = 0;\n\t    while (bitsleft) {\n\t\tif (runlength <= bitsleft) {\n\t\t    if (colormode)\n\t\t\tt |= ((1 << runlength)-1) << (bitsleft-runlength);\n\t\t    bitsleft -= runlength;\n\t\t    runlength = 0;\n\t\t    if (bitsleft) {\n\t\t\tif (runs >= erun)\n\t\t\t    break;\n\t\t\tcolormode ^= 1;\n\t\t\trunlength = *runs++;\n\t\t\tif (x+runlength > lastx)\n\t\t\t    runlength = runs[-1] = lastx-x;\n\t\t\tx += runlength;\n\t\t    }\n\t\t} else {\n\t\t    if (colormode)\n\t\t\tt |= ((1 << bitsleft)-1);\n\t\t    runlength -= bitsleft;\n\t\t    bitsleft = 0;\n\t\t}\n\t    }\n\t    if (n == 0) {\n\t\tputchar(\'\\n\');\n\t\tn = maxline;\n\t    }\n\t    putchar(svalue[t]), n--;\n\t}\n    }\n    printf(")s\\n");\n}']