some html pages appear to use only a as a line terminator. support this strangness.
-Steve
Reference: /n/sources/patch/maybe/html2ms-crnl
Date: Fri Mar 25 13:17:00 CET 2011
Signed-off-by: steve@quintile.net
--- /sys/src/cmd/html2ms.c Fri Mar 25 13:16:38 2011
+++ /sys/src/cmd/html2ms.c Fri Mar 25 13:16:34 2011
@@ -82,6 +82,7 @@
"dd", g_ignore, g_unexpected,
"dfn", g_ignore, g_ignore,
"dir", g_list, g_listend,
+ "div", g_ignore, g_ignore,
"dl", g_indent, g_exdent,
"dt", g_dt, g_unexpected,
"em", g_ignore, g_ignore,
@@ -102,7 +103,7 @@
"isindex", g_ignore, g_unexpected,
"kbd", g_fpush, g_fpop,
"key", g_ignore, g_ignore,
- "li", g_li, g_unexpected,
+ "li", g_li, g_ignore,
"link", g_ignore, g_unexpected,
"listing", g_ignore, g_ignore,
"menu", g_list, g_listend,
@@ -113,8 +114,11 @@
"p", g_p, g_ignore,
"plaintext", g_ignore, g_unexpected,
"pre", g_pre, g_displayend,
+ "script", g_ignore, g_ignore,
"samp", g_ignore, g_ignore,
"select", g_ignore, g_ignore,
+ "span", g_ignore, g_ignore,
+ "strike", g_ignore, g_ignore,
"strong", g_ignore, g_ignore,
"table", g_table, g_tableend,
"textarea", g_ignore, g_ignore,
@@ -136,21 +140,259 @@
Entity pl_entity[]=
{
-"#SPACE", L' ', "#RS", L'\n', "#RE", L'\r', "quot", L'"',
-"AElig", L'Æ', "Aacute", L'Á', "Acirc", L'Â', "Agrave", L'À', "Aring", L'Å',
-"Atilde", L'Ã', "Auml", L'Ä', "Ccedil", L'Ç', "ETH", L'Ð', "Eacute", L'É',
-"Ecirc", L'Ê', "Egrave", L'È', "Euml", L'Ë', "Iacute", L'Í', "Icirc", L'Î',
-"Igrave", L'Ì', "Iuml", L'Ï', "Ntilde", L'Ñ', "Oacute", L'Ó', "Ocirc", L'Ô',
-"Ograve", L'Ò', "Oslash", L'Ø', "Otilde", L'Õ', "Ouml", L'Ö', "THORN", L'Þ',
-"Uacute", L'Ú', "Ucirc", L'Û', "Ugrave", L'Ù', "Uuml", L'Ü', "Yacute", L'Ý',
-"aacute", L'á', "acirc", L'â', "aelig", L'æ', "agrave", L'à', "amp", L'&',
-"aring", L'å', "atilde", L'ã', "auml", L'ä', "ccedil", L'ç', "eacute", L'é',
-"ecirc", L'ê', "egrave", L'è', "eth", L'ð', "euml", L'ë', "gt", L'>',
-"iacute", L'í', "icirc", L'î', "igrave", L'ì', "iuml", L'ï', "lt", L'<',
-"ntilde", L'ñ', "oacute", L'ó', "ocirc", L'ô', "ograve", L'ò', "oslash", L'ø',
-"otilde", L'õ', "ouml", L'ö', "szlig", L'ß', "thorn", L'þ', "uacute", L'ú',
-"ucirc", L'û', "ugrave", L'ù', "uuml", L'ü', "yacute", L'ý', "yuml", L'ÿ',
-0
+ { "quot", 34 },
+ { "amp", 38 },
+ { "lt", 60 },
+ { "gt", 62 },
+ { "nbsp", 160 },
+ { "iexcl", 161 },
+ { "cent", 162 },
+ { "pound", 163 },
+ { "curren", 164 },
+ { "yen", 165 },
+ { "brvbar", 166 },
+ { "sect", 167 },
+ { "uml", 168 },
+ { "copy", 169 },
+ { "ordf", 170 },
+ { "laquo", 171 },
+ { "not", 172 },
+ { "shy", 173 },
+ { "reg", 174 },
+ { "macr", 175 },
+ { "deg", 176 },
+ { "plusmn", 177 },
+ { "sup2", 178 },
+ { "sup3", 179 },
+ { "acute", 180 },
+ { "micro", 181 },
+ { "para", 182 },
+ { "middot", 183 },
+ { "cedil", 184 },
+ { "sup1", 185 },
+ { "ordm", 186 },
+ { "raquo", 187 },
+ { "frac14", 188 },
+ { "frac12", 189 },
+ { "frac34", 190 },
+ { "iquest", 191 },
+ { "Agrave", 192 },
+ { "Aacute", 193 },
+ { "Acirc", 194 },
+ { "Atilde", 195 },
+ { "Auml", 196 },
+ { "Aring", 197 },
+ { "AElig", 198 },
+ { "Ccedil", 199 },
+ { "Egrave", 200 },
+ { "Eacute", 201 },
+ { "Ecirc", 202 },
+ { "Euml", 203 },
+ { "Igrave", 204 },
+ { "Iacute", 205 },
+ { "Icirc", 206 },
+ { "Iuml", 207 },
+ { "ETH", 208 },
+ { "Ntilde", 209 },
+ { "Ograve", 210 },
+ { "Oacute", 211 },
+ { "Ocirc", 212 },
+ { "Otilde", 213 },
+ { "Ouml", 214 },
+ { "times", 215 },
+ { "Oslash", 216 },
+ { "Ugrave", 217 },
+ { "Uacute", 218 },
+ { "Ucirc", 219 },
+ { "Uuml", 220 },
+ { "Yacute", 221 },
+ { "THORN", 222 },
+ { "szlig", 223 },
+ { "agrave", 224 },
+ { "aacute", 225 },
+ { "acirc", 226 },
+ { "atilde", 227 },
+ { "auml", 228 },
+ { "aring", 229 },
+ { "aelig", 230 },
+ { "ccedil", 231 },
+ { "egrave", 232 },
+ { "eacute", 233 },
+ { "ecirc", 234 },
+ { "euml", 235 },
+ { "igrave", 236 },
+ { "iacute", 237 },
+ { "icirc", 238 },
+ { "iuml", 239 },
+ { "eth", 240 },
+ { "ntilde", 241 },
+ { "ograve", 242 },
+ { "oacute", 243 },
+ { "ocirc", 244 },
+ { "otilde", 245 },
+ { "ouml", 246 },
+ { "divide", 247 },
+ { "oslash", 248 },
+ { "ugrave", 249 },
+ { "uacute", 250 },
+ { "ucirc", 251 },
+ { "uuml", 252 },
+ { "yacute", 253 },
+ { "thorn", 254 },
+ { "yuml", 255 },
+ { "OElig", 338 },
+ { "oelig", 339 },
+ { "Scaron", 352 },
+ { "scaron", 353 },
+ { "Yuml", 376 },
+ { "fnof", 402 },
+ { "circ", 710 },
+ { "tilde", 732 },
+ { "Alpha", 913 },
+ { "Beta", 914 },
+ { "Gamma", 915 },
+ { "Delta", 916 },
+ { "Epsilon", 917 },
+ { "Zeta", 918 },
+ { "Eta", 919 },
+ { "Theta", 920 },
+ { "Iota", 921 },
+ { "Kappa", 922 },
+ { "Lambda", 923 },
+ { "Mu", 924 },
+ { "Nu", 925 },
+ { "Xi", 926 },
+ { "Omicron", 927 },
+ { "Pi", 928 },
+ { "Rho", 929 },
+ { "Sigma", 931 },
+ { "Tau", 932 },
+ { "Upsilon", 933 },
+ { "Phi", 934 },
+ { "Chi", 935 },
+ { "Psi", 936 },
+ { "Omega", 937 },
+ { "alpha", 945 },
+ { "beta", 946 },
+ { "gamma", 947 },
+ { "delta", 948 },
+ { "epsilon", 949 },
+ { "zeta", 950 },
+ { "eta", 951 },
+ { "theta", 952 },
+ { "iota", 953 },
+ { "kappa", 954 },
+ { "lambda", 955 },
+ { "mu", 956 },
+ { "nu", 957 },
+ { "xi", 958 },
+ { "omicron", 959 },
+ { "pi", 960 },
+ { "rho", 961 },
+ { "sigmaf", 962 },
+ { "sigma", 963 },
+ { "tau", 964 },
+ { "upsilon", 965 },
+ { "phi", 966 },
+ { "chi", 967 },
+ { "psi", 968 },
+ { "omega", 969 },
+ { "thetasym", 977 },
+ { "upsih", 978 },
+ { "piv", 982 },
+ { "ensp", 8194 },
+ { "emsp", 8195 },
+ { "thinsp", 8201 },
+ { "zwnj", 8204 },
+ { "zwj", 8205 },
+ { "lrm", 8206 },
+ { "rlm", 8207 },
+ { "ndash", 8211 },
+ { "mdash", 8212 },
+ { "lsquo", 8216 },
+ { "rsquo", 8217 },
+ { "sbquo", 8218 },
+ { "ldquo", 8220 },
+ { "rdquo", 8221 },
+ { "bdquo", 8222 },
+ { "dagger", 8224 },
+ { "Dagger", 8225 },
+ { "bull", 8226 },
+ { "hellip", 8230 },
+ { "permil", 8240 },
+ { "prime", 8242 },
+ { "Prime", 8243 },
+ { "lsaquo", 8249 },
+ { "rsaquo", 8250 },
+ { "oline", 8254 },
+ { "frasl", 8260 },
+ { "euro", 8364 },
+ { "image", 8465 },
+ { "weierp", 8472 },
+ { "real", 8476 },
+ { "trade", 8482 },
+ { "alefsym", 8501 },
+ { "larr", 8592 },
+ { "uarr", 8593 },
+ { "rarr", 8594 },
+ { "darr", 8595 },
+ { "harr", 8596 },
+ { "crarr", 8629 },
+ { "lArr", 8656 },
+ { "uArr", 8657 },
+ { "rArr", 8658 },
+ { "dArr", 8659 },
+ { "hArr", 8660 },
+ { "forall", 8704 },
+ { "part", 8706 },
+ { "exist", 8707 },
+ { "empty", 8709 },
+ { "nabla", 8711 },
+ { "isin", 8712 },
+ { "notin", 8713 },
+ { "ni", 8715 },
+ { "prod", 8719 },
+ { "sum", 8721 },
+ { "minus", 8722 },
+ { "lowast", 8727 },
+ { "radic", 8730 },
+ { "prop", 8733 },
+ { "infin", 8734 },
+ { "ang", 8736 },
+ { "and", 8743 },
+ { "or", 8744 },
+ { "cap", 8745 },
+ { "cup", 8746 },
+ { "int", 8747 },
+ { "there4", 8756 },
+ { "sim", 8764 },
+ { "cong", 8773 },
+ { "asymp", 8776 },
+ { "ne", 8800 },
+ { "equiv", 8801 },
+ { "le", 8804 },
+ { "ge", 8805 },
+ { "sub", 8834 },
+ { "sup", 8835 },
+ { "nsub", 8836 },
+ { "sube", 8838 },
+ { "supe", 8839 },
+ { "oplus", 8853 },
+ { "otimes", 8855 },
+ { "perp", 8869 },
+ { "sdot", 8901 },
+ { "lceil", 8968 },
+ { "rceil", 8969 },
+ { "lfloor", 8970 },
+ { "rfloor", 8971 },
+ { "lang", 9001 },
+ { "rang", 9002 },
+ { "loz", 9674 },
+ { "spades", 9824 },
+ { "clubs", 9827 },
+ { "hearts", 9829 },
+ { "diams", 9830 },
+ { nil, 0 },
};
int
@@ -247,10 +489,11 @@
}
void
-main(void)
+main(int, char *argv[])
{
int c, pos;
+ argv0 = argv[0];
Binit(&in, 0, OREAD);
Binit(&out, 1, OWRITE);
@@ -266,9 +509,10 @@
case '&':
escape();
break;
- case '\r':
- pos = 0;
+ case '\\':
+ Bprint(&out, "\\(bs");
break;
+ case '\r':
case '\n':
if(quoting){
Bputc(&out, '"');
@@ -279,7 +523,8 @@
/* can't emit leading spaces in filled troff docs */
if (!inpre)
eatwhite();
- lastc = c;
+ lastc = '\n';
+ pos = 0;
break;
default:
++pos;
@@ -312,12 +557,11 @@
return;
}
if(*buf == '#'){
- c = atoi(buf+1);
- if(isascii(c) && isprint(c)){
- Bputc(&out, c);
- return;
- }
+ c = strtol(buf+1, nil, 10);
+ Bprint(&out, "%C", c);
+ return;
}
+ fprint(2, "%s: unknown entity reference &%s;\n", argv0, buf);
Bprint(&out, "&%s;", buf);
}
@@ -371,7 +615,7 @@
g_unexpected(Goobie *g, char *arg)
{
USED(arg);
- fprint(2, "unexpected %s ending\n", g->name);
+ fprint(2, "%s: unexpected %s ending\n", argv0, g->name);
}
void