64-bit fixes. [jmk] --rw-rw-r-- M 107020 glenda sys 14280 Nov 19 20:27 sys/src/cmd/troff2html/troff2html.c /n/sourcesdump/2005/1119/plan9/sys/src/cmd/troff2html/troff2html.c:7,19 - /n/sourcesdump/2005/1120/plan9/sys/src/cmd/troff2html/troff2html.c:7,22 Wid = 20, /* tmac.anhtml sets page width to 20" so we can recognize .nf text */ }; - typedef ulong Char; + typedef uintptr Char; typedef struct Troffchar Troffchar; typedef struct Htmlchar Htmlchar; typedef struct Font Font; typedef struct HTMLfont HTMLfont; - /* a Char is 32 bits. low 16 bits are the rune. higher are attributes */ + /* + * a Char is >= 32 bits. low 16 bits are the rune. higher are attributes. + * must be able to hold a pointer. + */ enum { Italic = 16, /n/sourcesdump/2005/1119/plan9/sys/src/cmd/troff2html/troff2html.c:66,77 - /n/sourcesdump/2005/1120/plan9/sys/src/cmd/troff2html/troff2html.c:69,80 /* R must be first; it's the default representation for fonts we don't recognize */ HTMLfont htmlfonts[] = { - "R", nil, 0, - "LucidaSans", nil, 0, - "I", "i", Italic, + "R", nil, 0, + "LucidaSans", nil, 0, + "I", "i", Italic, "LucidaSansI", "i", Italic, - "CW", "tt", CW, - "LucidaCW", "tt", CW, + "CW", "tt", CW, + "LucidaCW", "tt", CW, nil, nil, }; /n/sourcesdump/2005/1119/plan9/sys/src/cmd/troff2html/troff2html.c:78,121 - /n/sourcesdump/2005/1120/plan9/sys/src/cmd/troff2html/troff2html.c:81,124 #define TABLE "" char* - onattr[8*sizeof(ulong)] = + onattr[8*sizeof(int)] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - "", /* italic */ - "", /* bold */ + "", /* italic */ + "", /* bold */ "", /* cw */ - "<+table border=0 cellpadding=0 cellspacing=0>
\n", /* indent1 */ - "<+table border=0 cellpadding=0 cellspacing=0>
\n", /* indent2 */ - "<+table border=0 cellpadding=0 cellspacing=0>
\n", /* indent3 */ + "<+table border=0 cellpadding=0 cellspacing=0>
\n", /* indent1 */ + "<+table border=0 cellpadding=0 cellspacing=0>
\n", /* indent2 */ + "<+table border=0 cellpadding=0 cellspacing=0>
\n", /* indent3 */ 0, 0, 0, "

", /* heading 25 */ - "", /* anchor 26 */ + "", /* anchor 26 */ }; char* - offattr[8*sizeof(ulong)] = + offattr[8*sizeof(int)] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - "", /* italic */ - "", /* bold */ - "", /* cw */ - "<-/table>", /* indent1 */ - "<-/table>", /* indent2 */ - "<-/table>", /* indent3 */ + "", /* italic */ + "", /* bold */ + "", /* cw */ + "<-/table>", /* indent1 */ + "<-/table>", /* indent2 */ + "<-/table>", /* indent3 */ 0, 0, 0, - "", /* heading 25 */ - "", /* anchor 26 */ + "", /* heading 25 */ + "", /* anchor 26 */ }; - Font *font[Nfont]; + Font *font[Nfont]; - Biobuf bout; + Biobuf bout; int debug = 0; /* troff state */ /n/sourcesdump/2005/1119/plan9/sys/src/cmd/troff2html/troff2html.c:126,141 - /n/sourcesdump/2005/1120/plan9/sys/src/cmd/troff2html/troff2html.c:129,144 int ps = 1; int res = 720; - int didP = 0; - int atnewline = 1; - int prevlineH = 0; - ulong attr = 0; /* or'ed into each Char */ + int didP = 0; + int atnewline = 1; + int prevlineH = 0; + Char attr = 0; /* or'ed into each Char */ - Char *chars; - int nchars; - int nalloc; + Char *chars; + int nchars; + int nalloc; char** anchors; /* allocated in order */ - int nanchors; + int nanchors; char *filename; int cno; /n/sourcesdump/2005/1119/plan9/sys/src/cmd/troff2html/troff2html.c:245,251 - /n/sourcesdump/2005/1120/plan9/sys/src/cmd/troff2html/troff2html.c:248,254 } void - emitul(ulong ul) + emitchar(Char c) { if(nalloc == nchars){ nalloc += 10000; /n/sourcesdump/2005/1119/plan9/sys/src/cmd/troff2html/troff2html.c:253,265 - /n/sourcesdump/2005/1120/plan9/sys/src/cmd/troff2html/troff2html.c:256,268 if(chars == nil) sysfatal("malloc failed: %r"); } - chars[nchars++] = ul; + chars[nchars++] = c; } void emit(Rune r) { - emitul(r | attr); + emitchar(r | attr); /* * Close man page references early, so that * .IR proof (1), /n/sourcesdump/2005/1119/plan9/sys/src/cmd/troff2html/troff2html.c:272,279 - /n/sourcesdump/2005/1120/plan9/sys/src/cmd/troff2html/troff2html.c:275,282 void emitstr(char *s) { - emitul(Estring); - emitul((ulong)s); + emitchar(Estring); + emitchar((Char)s); } int indentlevel; /n/sourcesdump/2005/1119/plan9/sys/src/cmd/troff2html/troff2html.c:312,320 - /n/sourcesdump/2005/1120/plan9/sys/src/cmd/troff2html/troff2html.c:315,324 } void - setattr(ulong a) + setattr(Char a) { - int on, off, i, j; + Char on, off; + int i, j; on = a & ~attr; off = attr & ~a; /n/sourcesdump/2005/1119/plan9/sys/src/cmd/troff2html/troff2html.c:348,353 - /n/sourcesdump/2005/1120/plan9/sys/src/cmd/troff2html/troff2html.c:352,359 if(j == Anchor) onattr[j] = anchors[nanchors++]; iputs(&bout, onattr[j]); + if(nnest >= nelem(nest)) + sysfatal("nesting too deep"); nest[nnest++] = j; } } /n/sourcesdump/2005/1119/plan9/sys/src/cmd/troff2html/troff2html.c:358,364 - /n/sourcesdump/2005/1120/plan9/sys/src/cmd/troff2html/troff2html.c:364,370 flush(void) { int i; - ulong c, a; + Char c, a; nanchors = 0; for(i=0; i2 && strcmp(fld[2], "

")==0){ /* avoid triggering extra
*/ didP = 1; /* clear all font attributes before paragraph */ - emitul(' ' | (attr & ~(0xFFFF|((1<"); /* next emittec char will turn font attributes back on */ }else if(nfld>2 && strcmp(fld[2], "

")==0)