n = f.fcMac - f.fcMin;
for(i=0; i<n; i++) {
c = Bgetc(b);
if(c < 0)
break;
switch(c) {
default:
Bputc(&bout, c);
break;
case '\\': Bprint(&bout, "\\"); break; /* field escape */
case 7: Bprint(&bout, "\n"); break; /* cell, row mark */
case 9: Bprint(&bout, "\t"); break; /* tab */
case 11: Bprint(&bout, "\n"); break; /* hard line break */
case 12: Bprint(&bout, "\n\n\n\n"); break; /* page break */
case 13: Bprint(&bout, "\n\n"); break; /* paragraph end */
case 14: break; /* column break */
case 19: Bprint(&bout, "<"); break; /* field begin */
case 20: Bprint(&bout, ":"); break; /* field sep */
case 21: Bprint(&bout, ">"); break; /* field end */
case 30: Bprint(&bout, "-"); break; /* non-breaking hyphen */
case 31: break; /* non-required hyphen */
/* case 45: Bprint(&bout, "-"); break; /* breaking hyphen */
case 160: Bprint(&bout, " "); break; /* non-breaking space */
/*
* these are only supposed to get used when special is set, but we
* never see these ascii values otherwise anyway.
*/
/*
* Empirically, some documents have sections of text where
* every character is followed by a zero byte. Some have sections
* of text where there are no zero bytes. Still others have both
* types and alternate between them. Until we parse which
* characters are ``special'', page numbers lose out.
*/
case 0: /* Bprint(&bout, "<pageno>"); */ break;
case 1: Bprint(&bout, "<picture>"); break;
case 2: Bprint(&bout, "<footnote>"); break;
case 3: Bprint(&bout, "<footnote sep>"); break;
case 4: Bprint(&bout, "<footnote cont>"); break;
case 5: Bprint(&bout, "<animation>"); break;
case 6: Bprint(&bout, "<lineno>"); break;
/* case 7: Bprint(&bout, "<hand picture>"); break; */
case 8: Bprint(&bout, "<drawn object>"); break;
case 10: Bprint(&bout, "<abbrev date>"); break;
/* case 11: Bprint(&bout, "<hh:mm:ss>"); break; */
/* case 12: Bprint(&bout, "<section no>"); break; */
/* case 14: Bprint(&bout, "<Thu>"); break; */
case 15: Bprint(&bout, "<Thursday>"); break;
case 16: Bprint(&bout, "<day of month>"); break;
case 22: Bprint(&bout, "<hour>"); break;
case 23: Bprint(&bout, "<hour hh>"); break;
case 24: Bprint(&bout, "<minute>"); break;
case 25: Bprint(&bout, "<minute mm>"); break;
case 26: Bprint(&bout, "<seconds>"); break;
case 27: Bprint(&bout, "<AM/PM>"); break;
case 28: Bprint(&bout, "<hh:mm:ss>"); break;
case 29: Bprint(&bout, "<date>"); break;
/* printable ascii begins hereish */
/*
case 30: Bprint(&bout, "<mm/dd/yy>"); break;
case 33: Bprint(&bout, "<mm>"); break;
case 34: Bprint(&bout, "<yyyy>"); break;
case 35: Bprint(&bout, "<yy>"); break;
case 36: Bprint(&bout, "<Feb>"); break;
case 37: Bprint(&bout, "<February>"); break;
case 38: Bprint(&bout, "<hh:mm>"); break;
case 39: Bprint(&bout, "<long date>"); break;
case 41: break; */
}
}
Bprint(&bout, "\n");
}