wok-next rev 18840
Add man2html, html2text
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Fri Jan 22 17:24:34 2016 +0200 (2016-01-22) |
parents | 962c4700fe2b |
children | a7b109fabcee |
files | html2text/receipt html2text/stuff/patch-utf8-html2text-1.3.2a.diff man2html/description.txt man2html/receipt man2html/stuff/man2html-slitaz.diff man2html/stuff/ru.po |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/html2text/receipt Fri Jan 22 17:24:34 2016 +0200 1.3 @@ -0,0 +1,37 @@ 1.4 +# SliTaz package receipt. 1.5 + 1.6 +PACKAGE="html2text" 1.7 +VERSION="1.3.2a" 1.8 +CATEGORY="utilities" 1.9 +SHORT_DESC="Command line utility that converts HTML into plain text" 1.10 +MAINTAINER="al.bobylev@gmail.com" 1.11 +LICENSE="GPL" 1.12 +WEB_SITE="http://www.mbayer.de/html2text/" 1.13 +TARBALL="$PACKAGE-$VERSION.tar.gz" 1.14 +WGET_URL="http://ftp.ibiblio.org/pub/linux/apps/www/converters/$TARBALL" 1.15 + 1.16 +DEPENDS="" 1.17 +BUILD_DEPENDS="" 1.18 + 1.19 +# Rules to configure and make the package. 1.20 +compile_rules() 1.21 +{ 1.22 + # http://www.mbayer.de/html2text/downloads/patch-utf8-html2text-1.3.2a.diff 1.23 + patch -p1 -i $stuff/patch-utf8-html2text-1.3.2a.diff 1.24 + 1.25 + ./configure $CONFIGURE_ARGS 1.26 + sed -i 's|/usr/local/bin|/usr/bin|; s|/usr/local/man|/usr/share/man|; 1.27 + s|$(BINDIR)|$(DESTDIR)&|; s|$(MANDIR)|$(DESTDIR)&|; s|$(DOCDIR)|$(DESTDIR)&|' \ 1.28 + $src/Makefile 1.29 + make 1.30 + mkdir -p $install/usr/bin $install/usr/share/man/man1 \ 1.31 + $install/usr/share/man/man5 1.32 + make install 1.33 +} 1.34 + 1.35 +# Rules to gen a SliTaz package suitable for Tazpkg. 1.36 +genpkg_rules() 1.37 +{ 1.38 + cp -a $install/* $fs 1.39 + rm -r $fs/usr/share/doc 1.40 +}
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/html2text/stuff/patch-utf8-html2text-1.3.2a.diff Fri Jan 22 17:24:34 2016 +0200 2.3 @@ -0,0 +1,706 @@ 2.4 +diff -r -u -bB html2text-1.3.2a/Area.C html2text-1.3.2a-patched/Area.C 2.5 +--- html2text-1.3.2a/Area.C 2003-11-23 12:05:29.000000000 +0100 2.6 ++++ html2text-1.3.2a-patched/Area.C 2005-05-13 22:19:59.862137688 +0200 2.7 +@@ -36,10 +36,13 @@ 2.8 + #include <iostream> 2.9 + 2.10 + #include "Area.h" 2.11 ++#include "html.h" 2.12 + #include "string.h" 2.13 + 2.14 + #define LATIN1_nbsp 160 2.15 + 2.16 ++extern int use_encoding; 2.17 ++ 2.18 + /* ------------------------------------------------------------------------- */ 2.19 + 2.20 + #define malloc_array(type, size)\ 2.21 +@@ -81,6 +84,27 @@ 2.22 + 2.23 + /* ------------------------------------------------------------------------- */ 2.24 + 2.25 ++/* utf_length() and utf_width() 2.26 ++ * 2.27 ++ * Very simplified algorithm of calculating length of UTF-8 2.28 ++ * string. No check for errors. Counting only ASCII bytes and 2.29 ++ * leading bytes of UTF-8 multibyte sequences. All bytes like 2.30 ++ * 10xxxxxx are dropped. If USE_UTF8 is false then returns 2.31 ++ * usual length. --YS 2.32 ++ */ 2.33 ++ 2.34 ++unsigned int 2.35 ++Line::utf_length(size_type f, size_type t) const 2.36 ++{ 2.37 ++ size_type m = (t < length_ ? t : length_); 2.38 ++ size_type r = m - f; 2.39 ++ if(USE_UTF8) { 2.40 ++ for (int i = f; i < m; i++) 2.41 ++ if((cells_[i].character & 0xc0) == 0x80) r--; 2.42 ++ } 2.43 ++ return r; 2.44 ++} 2.45 ++ 2.46 + void 2.47 + Line::resize(size_type l) 2.48 + { 2.49 +@@ -236,6 +260,23 @@ 2.50 + return *this; 2.51 + } 2.52 + 2.53 ++unsigned int 2.54 ++Area::utf_width() 2.55 ++{ 2.56 ++ size_type r = width_; 2.57 ++ if(USE_UTF8) { r = 0; 2.58 ++ for (size_type yy = 0; yy < height_; yy++) { 2.59 ++ size_type r1 = 0; 2.60 ++ for (int i = width_ - 1; i >= 0; i--) { 2.61 ++ if(!r1 && isspace(cells_[yy][i].character)) continue; 2.62 ++ if((cells_[yy][i].character & 0xc0) != 0x80) r1++; 2.63 ++ } 2.64 ++ if(r < r1) r = r1; 2.65 ++ } 2.66 ++ } 2.67 ++ return r; 2.68 ++} 2.69 ++ 2.70 + void 2.71 + Area::resize(size_type w, size_type h) 2.72 + { 2.73 +@@ -439,7 +480,7 @@ 2.74 + char c = p->character; 2.75 + char a = p->attribute; 2.76 + 2.77 +- if (c == (char) LATIN1_nbsp) c = ' '; 2.78 ++ if (c == (char) LATIN1_nbsp && !USE_UTF8) c = ' '; 2.79 + 2.80 + if (a == Cell::NONE) { 2.81 + os << c; 2.82 +Nur in html2text-1.3.2a-patched/: Area.C.orig. 2.83 +diff -r -u -bB html2text-1.3.2a/Area.h html2text-1.3.2a-patched/Area.h 2.84 +--- html2text-1.3.2a/Area.h 2003-11-23 12:05:29.000000000 +0100 2.85 ++++ html2text-1.3.2a-patched/Area.h 2005-05-13 22:19:59.863137536 +0200 2.86 +@@ -81,6 +81,8 @@ 2.87 + Cell &operator[](size_type x) { return cells_[x]; } 2.88 + const Cell *cells() const { return cells_; } 2.89 + 2.90 ++ unsigned int utf_length(size_type f, size_type t) const; 2.91 ++ 2.92 + void resize(size_type l); 2.93 + void enlarge(size_type l) { if (l > length_) resize(l); } 2.94 + 2.95 +@@ -134,6 +136,8 @@ 2.96 + Cell *operator[](size_type y) { return cells_[y]; } 2.97 + const Area &operator>>=(size_type rs); 2.98 + 2.99 ++ unsigned int utf_width(); 2.100 ++ 2.101 + void resize(size_type w, size_type h); 2.102 + void enlarge(size_type w, size_type h); 2.103 + 2.104 +Nur in html2text-1.3.2a-patched/: Area.h.orig. 2.105 +diff -r -u -bB html2text-1.3.2a/format.C html2text-1.3.2a-patched/format.C 2.106 +--- html2text-1.3.2a/format.C 2003-11-23 12:05:29.000000000 +0100 2.107 ++++ html2text-1.3.2a-patched/format.C 2005-05-13 22:19:59.865137232 +0200 2.108 +@@ -1210,6 +1210,7 @@ 2.109 + } 2.110 + 2.111 + Line::size_type to = from + 1; 2.112 ++ int to_from; 2.113 + 2.114 + Line::size_type lbp = (Line::size_type) -1; // "Last break position". 2.115 + 2.116 +@@ -1238,18 +1239,20 @@ 2.117 + to++; 2.118 + } 2.119 + 2.120 +- if (to - from > w && lbp != (Area::size_type) -1) { to = lbp; break; } 2.121 ++ if (line.utf_length(from,to) > w && lbp != (Area::size_type) -1) 2.122 ++ { to = lbp; break; } 2.123 + } 2.124 + 2.125 ++ to_from = line.utf_length(from,to); 2.126 + /* 2.127 + * Copy the "from...to" range from the "line" to the bottom of the "res" 2.128 + * Area. 2.129 + */ 2.130 + Area::size_type x = 0; 2.131 + Area::size_type len = to - from; 2.132 +- if (halign == Area::LEFT || len >= w) { ; } else 2.133 +- if (halign == Area::CENTER) { x += (w - len) / 2; } else 2.134 +- if (halign == Area::RIGHT) { x += w - len; } 2.135 ++ if (halign == Area::LEFT || to_from >= w) { ; } else 2.136 ++ if (halign == Area::CENTER) { x += (w - to_from) / 2; } else 2.137 ++ if (halign == Area::RIGHT) { x += w - to_from; } 2.138 + res->insert(line.cells() + from, len, x, res->height()); 2.139 + 2.140 + /* 2.141 +Nur in html2text-1.3.2a-patched/: format.C.orig. 2.142 +diff -r -u -bB html2text-1.3.2a/html2text.C html2text-1.3.2a-patched/html2text.C 2.143 +--- html2text-1.3.2a/html2text.C 2003-11-23 12:05:29.000000000 +0100 2.144 ++++ html2text-1.3.2a-patched/html2text.C 2005-05-13 22:19:59.868136776 +0200 2.145 +@@ -148,9 +148,10 @@ 2.146 + -o <file> Redirect output into <file>\n\ 2.147 + -nobs Do not use backspaces for boldface and underlining\n\ 2.148 + -ascii Use plain ASCII for output instead of ISO-8859-1\n\ 2.149 ++ -utf8 Assume both terminal and input stream are in UTF-8 mode\n\ 2.150 + "; 2.151 + 2.152 +-int use_iso8859 = 1; 2.153 ++int use_encoding = ISO8859; 2.154 + 2.155 + int 2.156 + main(int argc, char **argv) 2.157 +@@ -199,7 +200,8 @@ 2.158 + if (!strcmp(arg, "-width" )) { width = atoi(argv[++i]); } else 2.159 + if (!strcmp(arg, "-o" )) { output_file_name = argv[++i]; } else 2.160 + if (!strcmp(arg, "-nobs" )) { use_backspaces = false; } else 2.161 +- if (!strcmp(arg, "-ascii" )) { use_iso8859 = false; } else 2.162 ++ if (!strcmp(arg, "-ascii" )) { use_encoding = ASCII; } else 2.163 ++ if (!strcmp(arg, "-utf8" )) { use_encoding = UTF8; } else 2.164 + { 2.165 + std::cerr 2.166 + << "Unrecognized command line option \"" 2.167 +Nur in html2text-1.3.2a-patched/: html2text.C.orig. 2.168 +diff -r -u -bB html2text-1.3.2a/html.h html2text-1.3.2a-patched/html.h 2.169 +--- html2text-1.3.2a/html.h 2001-10-04 22:03:54.000000000 +0200 2.170 ++++ html2text-1.3.2a-patched/html.h 2005-05-13 22:19:59.866137080 +0200 2.171 +@@ -61,6 +61,11 @@ 2.172 + 2.173 + /* ------------------------------------------------------------------------- */ 2.174 + 2.175 ++enum {ASCII, ISO8859, UTF8}; 2.176 ++#define USE_ISO8859 (use_encoding == ISO8859) 2.177 ++#define USE_ASCII (use_encoding == ASCII) 2.178 ++#define USE_UTF8 (use_encoding == UTF8) 2.179 ++ 2.180 + #define LATIN1_nbsp 160 2.181 + #define LATIN1_iexcl 161 2.182 + #define LATIN1_cent 162 2.183 +diff -r -u -bB html2text-1.3.2a/sgml.C html2text-1.3.2a-patched/sgml.C 2.184 +--- html2text-1.3.2a/sgml.C 2003-11-23 12:09:11.000000000 +0100 2.185 ++++ html2text-1.3.2a-patched/sgml.C 2005-05-13 22:19:59.870136472 +0200 2.186 +@@ -62,261 +62,280 @@ 2.187 + char name[8]; 2.188 + int iso8859code; 2.189 + char *asciistr; 2.190 ++ unsigned long unicode; 2.191 + } entities[] = { 2.192 +- { "AElig", LATIN1_AElig, "AE" }, 2.193 +- { "AMP", 0, "&" }, 2.194 +- { "Aacute", LATIN1_Aacute, "A'" }, 2.195 +- { "Acirc", LATIN1_Acirc, "A^" }, 2.196 +- { "Agrave", LATIN1_Agrave, "A`" }, 2.197 +- { "Alpha", 0, "A" }, 2.198 +- { "Aring", LATIN1_Aring, "AA" }, 2.199 +- { "Atilde", LATIN1_Atilde, "A~" }, 2.200 +- { "Auml", LATIN1_Auml, "A\"" }, 2.201 +- { "Beta", 0, "B" }, 2.202 +- { "Ccedil", LATIN1_Ccedil, "C," }, 2.203 +- { "Chi", 0, "H" }, 2.204 +- { "Dagger", 0, "++" }, 2.205 +- { "Delta", 0, "D" }, 2.206 +- { "ETH", LATIN1_ETH, "D-" }, 2.207 +- { "Eacute", LATIN1_Eacute, "E'" }, 2.208 +- { "Ecirc", LATIN1_Ecirc, "E^" }, 2.209 +- { "Egrave", LATIN1_Egrave, "E`" }, 2.210 +- { "Epsilon", 0, "E" }, 2.211 +- { "Eta", 0, "E" }, 2.212 +- { "Euml", LATIN1_Euml, "E\"" }, 2.213 +- { "GT", 0, ">" }, 2.214 +- { "Gamma", 0, "G" }, 2.215 +- { "Iacute", LATIN1_Iacute, "I'" }, 2.216 +- { "Icirc", LATIN1_Icirc, "I^" }, 2.217 +- { "Igrave", LATIN1_Igrave, "I`" }, 2.218 +- { "Iota", 0, "I" }, 2.219 +- { "Iuml", LATIN1_Iuml, "I\"" }, 2.220 +- { "Kappa", 0, "K" }, 2.221 +- { "LT", 0, "<" }, 2.222 +- { "Lambda", 0, "L" }, 2.223 +- { "Mu", 0, "M" }, 2.224 +- { "Ntilde", LATIN1_Ntilde, "N~" }, 2.225 +- { "Nu", 0, "N" }, 2.226 +- { "OElig", 0, "OE" }, 2.227 +- { "Oacute", LATIN1_Oacute, "O'" }, 2.228 +- { "Ocirc", LATIN1_Ocirc, "O^" }, 2.229 +- { "Ograve", LATIN1_Ograve, "O`" }, 2.230 +- { "Omega", 0, "O" }, 2.231 +- { "Omicron", 0, "O" }, 2.232 +- { "Oslash", LATIN1_Oslash, "O/" }, 2.233 +- { "Otilde", LATIN1_Otilde, "O~" }, 2.234 +- { "Ouml", LATIN1_Ouml, "O\"" }, 2.235 +- { "Phi", 0, "F" }, 2.236 +- { "Pi", 0, "P" }, 2.237 +- { "Prime", 0, "''" }, 2.238 +- { "Psi", 0, "PS" }, 2.239 +- { "QUOT", 0, "\"" }, 2.240 +- { "Rho", 0, "R" }, 2.241 +- { "Scaron", 0, "S" }, 2.242 +- { "Sigma", 0, "S" }, 2.243 +- { "THORN", LATIN1_THORN, "TH" }, 2.244 +- { "Tau", 0, "T" }, 2.245 +- { "Theta", 0, "TH" }, 2.246 +- { "Uacute", LATIN1_Uacute, "U'" }, 2.247 +- { "Ucirc", LATIN1_Ucirc, "U^" }, 2.248 +- { "Ugrave", LATIN1_Ugrave, "U`" }, 2.249 +- { "Upsilon", 0, "U" }, 2.250 +- { "Uuml", LATIN1_Uuml, "U\"" }, 2.251 +- { "Xi", 0, "X" }, 2.252 +- { "Yacute", LATIN1_Yacute, "Y'" }, 2.253 +- { "Yuml", 0, "Y\"" }, 2.254 +- { "Zeta", 0, "Z" }, 2.255 +- { "aacute", LATIN1_aacute, "a'" }, 2.256 +- { "acirc", LATIN1_acirc, "a^" }, 2.257 +- { "acute", LATIN1_acute, "'" }, 2.258 +- { "aelig", LATIN1_aelig, "ae" }, 2.259 +- { "agrave", LATIN1_agrave, "a`" }, 2.260 ++ { "AElig", LATIN1_AElig, "AE", 0x00c6}, 2.261 ++ { "AMP", 0, "&", 0x0026}, 2.262 ++ { "Aacute", LATIN1_Aacute, "A'", 0x00c1}, 2.263 ++ { "Acirc", LATIN1_Acirc, "A^", 0x00c2}, 2.264 ++ { "Agrave", LATIN1_Agrave, "A`", 0x00c0}, 2.265 ++ { "Alpha", 0, "A", 0x0391}, 2.266 ++ { "Aring", LATIN1_Aring, "AA", 0x00c5}, 2.267 ++ { "Atilde", LATIN1_Atilde, "A~", 0x00c3}, 2.268 ++ { "Auml", LATIN1_Auml, "A\"", 0x00c4}, 2.269 ++ { "Beta", 0, "B", 0x0392}, 2.270 ++ { "Ccedil", LATIN1_Ccedil, "C,", 0x00c7}, 2.271 ++ { "Chi", 0, "H", 0x03a7}, 2.272 ++ { "Dagger", 0, "++", 0x2020}, 2.273 ++ { "Delta", 0, "D", 0x0394}, 2.274 ++ { "ETH", LATIN1_ETH, "D-", 0x00d0}, 2.275 ++ { "Eacute", LATIN1_Eacute, "E'", 0x00c9}, 2.276 ++ { "Ecirc", LATIN1_Ecirc, "E^", 0x00ca}, 2.277 ++ { "Egrave", LATIN1_Egrave, "E`", 0x00c8}, 2.278 ++ { "Epsilon", 0, "E", 0x0395}, 2.279 ++ { "Eta", 0, "E", 0x0397}, 2.280 ++ { "Euml", LATIN1_Euml, "E\"", 0x00cb}, 2.281 ++ { "GT", 0, ">", 0x003e}, 2.282 ++ { "Gamma", 0, "G", 0x0393}, 2.283 ++ { "Iacute", LATIN1_Iacute, "I'", 0x00cd}, 2.284 ++ { "Icirc", LATIN1_Icirc, "I^", 0x00ce}, 2.285 ++ { "Igrave", LATIN1_Igrave, "I`", 0x00cc}, 2.286 ++ { "Iota", 0, "I", 0x0399}, 2.287 ++ { "Iuml", LATIN1_Iuml, "I\"", 0x00cf}, 2.288 ++ { "Kappa", 0, "K", 0x039a}, 2.289 ++ { "LT", 0, "<", 0x003c}, 2.290 ++ { "Lambda", 0, "L", 0x039b}, 2.291 ++ { "Mu", 0, "M", 0x039c}, 2.292 ++ { "Ntilde", LATIN1_Ntilde, "N~", 0x00d1}, 2.293 ++ { "Nu", 0, "N", 0x039d}, 2.294 ++ { "OElig", 0, "OE", 0x0152}, 2.295 ++ { "Oacute", LATIN1_Oacute, "O'", 0x00d3}, 2.296 ++ { "Ocirc", LATIN1_Ocirc, "O^", 0x00d4}, 2.297 ++ { "Ograve", LATIN1_Ograve, "O`", 0x00d2}, 2.298 ++ { "Omega", 0, "O", 0x03a9}, 2.299 ++ { "Omicron", 0, "O", 0x039f}, 2.300 ++ { "Oslash", LATIN1_Oslash, "O/", 0x00d8}, 2.301 ++ { "Otilde", LATIN1_Otilde, "O~", 0x00d5}, 2.302 ++ { "Ouml", LATIN1_Ouml, "O\"", 0x00d6}, 2.303 ++ { "Phi", 0, "F", 0x03a6}, 2.304 ++ { "Pi", 0, "P", 0x03a0}, 2.305 ++ { "Prime", 0, "''", }, 2.306 ++ { "Psi", 0, "PS", 0x03a8}, 2.307 ++ { "QUOT", 0, "\"", }, 2.308 ++ { "Rho", 0, "R", 0x03a1}, 2.309 ++ { "Scaron", 0, "S", 0x0161}, 2.310 ++ { "Sigma", 0, "S", 0x03a3}, 2.311 ++ { "THORN", LATIN1_THORN, "TH", 0x00de}, 2.312 ++ { "Tau", 0, "T", 0x03a4}, 2.313 ++ { "Theta", 0, "TH", 0x0398}, 2.314 ++ { "Uacute", LATIN1_Uacute, "U'", 0x00da}, 2.315 ++ { "Ucirc", LATIN1_Ucirc, "U^", 0x00db}, 2.316 ++ { "Ugrave", LATIN1_Ugrave, "U`", 0x00d9}, 2.317 ++ { "Upsilon", 0, "U", 0x03a5}, 2.318 ++ { "Uuml", LATIN1_Uuml, "U\"", 0x00dc}, 2.319 ++ { "Xi", 0, "X", 0x039e}, 2.320 ++ { "Yacute", LATIN1_Yacute, "Y'", 0x00dd}, 2.321 ++ { "Yuml", 0, "Y\"", 0x0178}, 2.322 ++ { "Zeta", 0, "Z", 0x0396}, 2.323 ++ { "aacute", LATIN1_aacute, "a'", 0x00e1}, 2.324 ++ { "acirc", LATIN1_acirc, "a^", 0x00e2}, 2.325 ++ { "acute", LATIN1_acute, "'", 0x00b4}, 2.326 ++ { "aelig", LATIN1_aelig, "ae", 0x00e6}, 2.327 ++ { "agrave", LATIN1_agrave, "a`", 0x00e0}, 2.328 + { "alefsym", 0, "Aleph" }, 2.329 +- { "alpha", 0, "a" }, 2.330 ++ { "alpha", 0, "a", 0x03b1}, 2.331 + { "amp", 0, "&" }, 2.332 + { "and", 0, "AND" }, 2.333 + { "ang", 0, "-V" }, 2.334 + { "apos", 0, "'" }, 2.335 +- { "aring", LATIN1_aring, "aa" }, 2.336 +- { "asymp", 0, "~=" }, 2.337 +- { "atilde", LATIN1_atilde, "a~" }, 2.338 +- { "auml", LATIN1_auml, "a\"" }, 2.339 ++ { "aring", LATIN1_aring, "aa", 0x00e5}, 2.340 ++ { "asymp", 0, "~=", 0x2248}, 2.341 ++ { "atilde", LATIN1_atilde, "a~", 0x00e3}, 2.342 ++ { "auml", LATIN1_auml, "a\"", 0x00e5}, 2.343 + { "bdquo", 0, "\"" }, 2.344 +- { "beta", 0, "b" }, 2.345 +- { "brvbar", LATIN1_brvbar, "|" }, 2.346 +- { "bull", 0, " o " }, 2.347 ++ { "beta", 0, "b", 0x03b2}, 2.348 ++ { "brvbar", LATIN1_brvbar, "|", 0x00a6}, 2.349 ++ { "bull", 0, " o ", 0x2022}, 2.350 + { "cap", 0, "(U" }, 2.351 +- { "ccedil", LATIN1_ccedil, "c," }, 2.352 +- { "cedil", LATIN1_cedil, "," }, 2.353 +- { "cent", LATIN1_cent, "-c-" }, 2.354 +- { "chi", 0, "h" }, 2.355 +- { "circ", 0, "^" }, 2.356 ++ { "ccedil", LATIN1_ccedil, "c,", 0x00e7}, 2.357 ++ { "cedil", LATIN1_cedil, ",", 0x00b8}, 2.358 ++ { "cent", LATIN1_cent, "-c-", 0x00a2}, 2.359 ++ { "chi", 0, "h", 0x03c7}, 2.360 ++ { "circ", 0, "^", 0x005e}, 2.361 + // { "clubs", 0, "[clubs]" }, 2.362 + { "cong", 0, "?=" }, 2.363 +- { "copy", LATIN1_copy, "(c)" }, 2.364 ++ { "copy", LATIN1_copy, "(c)", 0x00a9}, 2.365 + { "crarr", 0, "<-'" }, 2.366 + { "cup", 0, ")U" }, 2.367 +- { "curren", LATIN1_curren, "CUR" }, 2.368 ++ { "curren", LATIN1_curren, "CUR", 0x00a4}, 2.369 + { "dArr", 0, "vv" }, 2.370 +- { "dagger", 0, "+" }, 2.371 ++ { "dagger", 0, "+", 0x2020}, 2.372 + { "darr", 0, "v" }, 2.373 +- { "deg", LATIN1_deg, "DEG" }, 2.374 +- { "delta", 0, "d" }, 2.375 ++ { "deg", LATIN1_deg, "DEG", 0x00b0}, 2.376 ++ { "delta", 0, "d", 0x03b4}, 2.377 + // { "diams", 0, "[diamonds]" }, 2.378 +- { "divide", LATIN1_divide, "/" }, 2.379 +- { "eacute", LATIN1_eacute, "e'" }, 2.380 +- { "ecirc", LATIN1_ecirc, "e^" }, 2.381 +- { "egrave", LATIN1_egrave, "e`" }, 2.382 ++ { "divide", LATIN1_divide, "/", 0x00f7}, 2.383 ++ { "eacute", LATIN1_eacute, "e'", 0x00e9}, 2.384 ++ { "ecirc", LATIN1_ecirc, "e^", 0x00ea}, 2.385 ++ { "egrave", LATIN1_egrave, "e`", 0x00e8}, 2.386 + { "empty", 0, "{}" }, 2.387 +- { "epsilon", 0, "e" }, 2.388 +- { "equiv", 0, "==" }, 2.389 +- { "eta", 0, "e" }, 2.390 +- { "eth", LATIN1_eth, "d-" }, 2.391 +- { "euml", LATIN1_euml, "e\"" }, 2.392 +- { "euro", 0, "EUR" }, 2.393 ++ { "epsilon", 0, "e", 0x03b5}, 2.394 ++ { "equiv", 0, "==", 0x2261}, 2.395 ++ { "eta", 0, "e", 0x03b7}, 2.396 ++ { "eth", LATIN1_eth, "d-", 0x00f0}, 2.397 ++ { "euml", LATIN1_euml, "e\"", 0x00eb}, 2.398 ++ { "euro", 0, "EUR", 0x20ac}, 2.399 + { "exist", 0, "TE" }, 2.400 + { "fnof", 0, "f" }, 2.401 + { "forall", 0, "FA" }, 2.402 +- { "frac12", LATIN1_frac12, " 1/2" }, 2.403 +- { "frac14", LATIN1_frac14, " 1/4" }, 2.404 +- { "frac34", LATIN1_frac34, " 3/4" }, 2.405 ++ { "frac12", LATIN1_frac12, " 1/2",0x00bd}, 2.406 ++ { "frac14", LATIN1_frac14, " 1/4",0x00bc}, 2.407 ++ { "frac34", LATIN1_frac34, " 3/4",0x00be}, 2.408 + { "frasl", 0, "/" }, 2.409 +- { "gamma", 0, "g" }, 2.410 +- { "ge", 0, ">=" }, 2.411 +- { "gt", 0, ">" }, 2.412 ++ { "gamma", 0, "g", 0x03b3}, 2.413 ++ { "ge", 0, ">=", 0x2265}, 2.414 ++ { "gt", 0, ">", 0x003e}, 2.415 + { "hArr", 0, "<=>" }, 2.416 + { "harr", 0, "<->" }, 2.417 + // { "hearts", 0, "[hearts]" }, 2.418 +- { "hellip", 0, "..." }, 2.419 +- { "iacute", LATIN1_iacute, "i'" }, 2.420 +- { "icirc", LATIN1_icirc, "i^" }, 2.421 +- { "iexcl", LATIN1_iexcl, "!" }, 2.422 +- { "igrave", LATIN1_igrave, "i`" }, 2.423 ++ { "hellip", 0, "...", 0x2026}, 2.424 ++ { "iacute", LATIN1_iacute, "i'", 0x00ed}, 2.425 ++ { "icirc", LATIN1_icirc, "i^", 0x00ee}, 2.426 ++ { "iexcl", LATIN1_iexcl, "!", 0x00a1}, 2.427 ++ { "igrave", LATIN1_igrave, "i`", 0x00ec}, 2.428 + { "image", 0, "Im" }, 2.429 +- { "infin", 0, "oo" }, 2.430 +- { "int", 0, "INT" }, 2.431 +- { "iota", 0, "i" }, 2.432 +- { "iquest", LATIN1_iquest, "?" }, 2.433 ++ { "infin", 0, "oo", 0x221e}, 2.434 ++ { "int", 0, "INT", 0x222b}, 2.435 ++ { "iota", 0, "i", 0x03b9}, 2.436 ++ { "iquest", LATIN1_iquest, "?", 0x00bf}, 2.437 + { "isin", 0, "(-" }, 2.438 +- { "iuml", LATIN1_iuml, "i\"" }, 2.439 +- { "kappa", 0, "k" }, 2.440 ++ { "iuml", LATIN1_iuml, "i\"", 0x00ef}, 2.441 ++ { "kappa", 0, "k", 0x03ba}, 2.442 + { "lArr", 0, "<=" }, 2.443 +- { "lambda", 0, "l" }, 2.444 ++ { "lambda", 0, "l", 0x03bb}, 2.445 + { "lang", 0, "</" }, 2.446 + { "laquo", LATIN1_laquo, "<<" }, 2.447 +- { "larr", 0, "<-" }, 2.448 ++ { "larr", 0, "<-", 0x2190}, 2.449 + // { "lceil", 0, "<|" }, 2.450 + { "ldquo", 0, "\"" }, 2.451 +- { "le", 0, "<=" }, 2.452 ++ { "le", 0, "<=", 0x2264}, 2.453 + // { "lfloor", 0, "|<" }, 2.454 + { "lowast", 0, "*" }, 2.455 + { "loz", 0, "<>" }, 2.456 + { "lsaquo", 0, "<" }, 2.457 + { "lsquo", 0, "`" }, 2.458 +- { "lt", 0, "<" }, 2.459 +- { "macr", LATIN1_macr, "-" }, 2.460 ++ { "lt", 0, "<", 0x003c}, 2.461 ++ { "macr", LATIN1_macr, "-", 0x00af}, 2.462 + { "mdash", 0, "--" }, 2.463 +- { "micro", LATIN1_micro, "my" }, 2.464 +- { "middot", LATIN1_middot, "." }, 2.465 +- { "minus", 0, "-" }, 2.466 +- { "mu", 0, "m" }, 2.467 ++ { "micro", LATIN1_micro, "my", 0x00b5}, 2.468 ++ { "middot", LATIN1_middot, ".", 0x00b7}, 2.469 ++ { "minus", 0, "-", 0x2212}, 2.470 ++ { "mu", 0, "m", 0x03bc}, 2.471 + { "nabla", 0, "Nabla" }, 2.472 +- { "nbsp", LATIN1_nbsp, " " }, 2.473 ++ { "nbsp", LATIN1_nbsp, " ", 0x00a0}, 2.474 + { "ndash", 0, "-" }, 2.475 +- { "ne", 0, "!=" }, 2.476 ++ { "ne", 0, "!=", 0x2260}, 2.477 + { "ni", 0, "-)" }, 2.478 + { "not", LATIN1_not, "NOT" }, 2.479 + { "notin", 0, "!(-" }, 2.480 + { "nsub", 0, "!(C" }, 2.481 +- { "ntilde", LATIN1_ntilde, "n~" }, 2.482 +- { "nu", 0, "n" }, 2.483 +- { "oacute", LATIN1_oacute, "o'" }, 2.484 +- { "ocirc", LATIN1_ocirc, "o^" }, 2.485 ++ { "ntilde", LATIN1_ntilde, "n~", 0x00f1}, 2.486 ++ { "nu", 0, "n", 0x03bd}, 2.487 ++ { "oacute", LATIN1_oacute, "o'", 0x00f3}, 2.488 ++ { "ocirc", LATIN1_ocirc, "o^", 0x00f4}, 2.489 + { "oelig", 0, "oe" }, 2.490 +- { "ograve", LATIN1_ograve, "o`" }, 2.491 ++ { "ograve", LATIN1_ograve, "o`", 0x00f2}, 2.492 + { "oline", LATIN1_macr, "-" }, 2.493 +- { "omega", 0, "o" }, 2.494 +- { "omicron", 0, "o" }, 2.495 ++ { "omega", 0, "o", 0x03c9}, 2.496 ++ { "omicron", 0, "o", 0x03bf}, 2.497 + { "oplus", 0, "(+)" }, 2.498 + { "or", 0, "OR" }, 2.499 +- { "ordf", LATIN1_ordf, "-a" }, 2.500 +- { "ordm", LATIN1_ordm, "-o" }, 2.501 +- { "oslash", LATIN1_oslash, "o/" }, 2.502 +- { "otilde", LATIN1_otilde, "o~" }, 2.503 ++ { "ordf", LATIN1_ordf, "-a", 0x00aa}, 2.504 ++ { "ordm", LATIN1_ordm, "-o", 0x00ba}, 2.505 ++ { "oslash", LATIN1_oslash, "o/", 0x00f8}, 2.506 ++ { "otilde", LATIN1_otilde, "o~", 0x00f5}, 2.507 + { "otimes", 0, "(x)" }, 2.508 +- { "ouml", LATIN1_ouml, "o\"" }, 2.509 +- { "para", LATIN1_para, "P:" }, 2.510 +- { "part", 0, "PART" }, 2.511 +- { "permil", 0, " 0/00" }, 2.512 ++ { "ouml", LATIN1_ouml, "o\"", 0x00f6}, 2.513 ++ { "para", LATIN1_para, "P:", 0x00b6}, 2.514 ++ { "part", 0, "PART",0x2202}, 2.515 ++ { "permil", 0, " 0/00",0x2030}, 2.516 + { "perp", 0, "-T" }, 2.517 +- { "phi", 0, "f" }, 2.518 +- { "pi", 0, "p" }, 2.519 ++ { "phi", 0, "f", 0x03c6}, 2.520 ++ { "pi", 0, "p", 0x03c0}, 2.521 + { "piv", 0, "Pi" }, 2.522 +- { "plusmn", LATIN1_plusmn, "+/-" }, 2.523 +- { "pound", LATIN1_pound, "-L-" }, 2.524 ++ { "plusmn", LATIN1_plusmn, "+/-", 0x00b1}, 2.525 ++ { "pound", LATIN1_pound, "-L-", 0x00a3}, 2.526 + { "prime", 0, "'" }, 2.527 +- { "prod", 0, "PROD" }, 2.528 ++ { "prod", 0, "PROD",0x220f}, 2.529 + { "prop", 0, "0(" }, 2.530 +- { "psi", 0, "ps" }, 2.531 ++ { "psi", 0, "ps", 0x03c8}, 2.532 + { "quot", 0, "\"" }, 2.533 + { "rArr", 0, "=>" }, 2.534 +- { "radic", 0, "SQRT" }, 2.535 ++ { "radic", 0, "SQRT",0x221a}, 2.536 + { "rang", 0, "/>" }, 2.537 + { "raquo", LATIN1_raquo, ">>" }, 2.538 +- { "rarr", 0, "->" }, 2.539 ++ { "rarr", 0, "->", 0x2192}, 2.540 + // { "rceil", 0, ">|" }, 2.541 + { "rdquo", 0, "\"" }, 2.542 + { "real", 0, "Re" }, 2.543 +- { "reg", LATIN1_reg, "(R)" }, 2.544 ++ { "reg", LATIN1_reg, "(R)", 0x00ae}, 2.545 + // { "rfloor", 0, "|>" }, 2.546 +- { "rho", 0, "r" }, 2.547 ++ { "rho", 0, "r", 0x03c1}, 2.548 + { "rsaquo", 0, ">" }, 2.549 + { "rsquo", 0, "'" }, 2.550 + { "sbquo", 0, "'" }, 2.551 +- { "scaron", 0, "s" }, 2.552 ++ { "scaron", 0, "s", 0x0161}, 2.553 + { "sdot", 0, "DOT" }, 2.554 +- { "sect", LATIN1_sect, "S:" }, 2.555 ++ { "sect", LATIN1_sect, "S:", 0x00a7}, 2.556 + { "shy", LATIN1_shy, "" }, 2.557 +- { "sigma", 0, "s" }, 2.558 +- { "sigmaf", 0, "s" }, 2.559 ++ { "sigma", 0, "s", 0x03c3}, 2.560 ++ { "sigmaf", 0, "s", 0x03c2}, 2.561 + { "sim", 0, "~" }, 2.562 + // { "spades", 0, "[spades]" }, 2.563 + { "sub", 0, "(C" }, 2.564 + { "sube", 0, "(_" }, 2.565 +- { "sum", 0, "SUM" }, 2.566 ++ { "sum", 0, "SUM", 0x2211}, 2.567 + { "sup", 0, ")C" }, 2.568 +- { "sup1", LATIN1_sup1, "^1" }, 2.569 +- { "sup2", LATIN1_sup2, "^2" }, 2.570 +- { "sup3", LATIN1_sup3, "^3" }, 2.571 ++ { "sup1", LATIN1_sup1, "^1", 0x00b9}, 2.572 ++ { "sup2", LATIN1_sup2, "^2", 0x00b2}, 2.573 ++ { "sup3", LATIN1_sup3, "^3", 0x00b3}, 2.574 + { "supe", 0, ")_" }, 2.575 +- { "szlig", LATIN1_szlig, "ss" }, 2.576 +- { "tau", 0, "t" }, 2.577 ++ { "szlig", LATIN1_szlig, "ss", 0x00df}, 2.578 ++ { "tau", 0, "t", 0x03c4}, 2.579 + { "there4", 0, ".:" }, 2.580 +- { "theta", 0, "th" }, 2.581 +- { "thorn", LATIN1_thorn, "th" }, 2.582 +- { "tilde", 0, "~" }, 2.583 +- { "times", LATIN1_times, "x" }, 2.584 +- { "trade", 0, "[TM]" }, 2.585 ++ { "theta", 0, "th", 0x03b8}, 2.586 ++ { "thorn", LATIN1_thorn, "th", 0x00fe}, 2.587 ++ { "tilde", 0, "~", 0x02dc}, 2.588 ++ { "times", LATIN1_times, "x", 0x00d7}, 2.589 ++ { "trade", 0, "[TM]",0x2122}, 2.590 + { "uArr", 0, "^^" }, 2.591 +- { "uacute", LATIN1_uacute, "u'" }, 2.592 ++ { "uacute", LATIN1_uacute, "u'", 0x00fa}, 2.593 + { "uarr", 0, "^" }, 2.594 +- { "ucirc", LATIN1_ucirc, "u^" }, 2.595 +- { "ugrave", LATIN1_ugrave, "u`" }, 2.596 +- { "uml", LATIN1_uml, "\"" }, 2.597 +- { "upsilon", 0, "u" }, 2.598 +- { "uuml", LATIN1_uuml, "u\"" }, 2.599 ++ { "ucirc", LATIN1_ucirc, "u^", 0x00fb}, 2.600 ++ { "ugrave", LATIN1_ugrave, "u`", 0x00f9}, 2.601 ++ { "uml", LATIN1_uml, "\"", 0x00a8}, 2.602 ++ { "upsilon", 0, "u", 0x03c5}, 2.603 ++ { "uuml", LATIN1_uuml, "u\"", 0x00fc}, 2.604 + { "weierp", 0, "P" }, 2.605 +- { "xi", 0, "x" }, 2.606 +- { "yacute", LATIN1_yacute, "y'" }, 2.607 +- { "yen", LATIN1_yen, "YEN" }, 2.608 +- { "yuml", LATIN1_yuml, "y\"" }, 2.609 +- { "zeta", 0, "z" }, 2.610 ++ { "xi", 0, "x", 0x03be}, 2.611 ++ { "yacute", LATIN1_yacute, "y'", 0x00fd}, 2.612 ++ { "yen", LATIN1_yen, "YEN", 0x00a5}, 2.613 ++ { "yuml", LATIN1_yuml, "y\"", 0x00ff}, 2.614 ++ { "zeta", 0, "z", 0x03b6}, 2.615 + }; 2.616 + 2.617 +-extern int use_iso8859; 2.618 ++extern int use_encoding; 2.619 + 2.620 + /* ------------------------------------------------------------------------- */ 2.621 + 2.622 ++char ubuf[4]; 2.623 ++ 2.624 ++char *mkutf(unsigned long x) 2.625 ++{ 2.626 ++ memset(ubuf, 0, 4); 2.627 ++ if(x < 128) ubuf[0] = x; 2.628 ++ else if(x < 0x800) { 2.629 ++ ubuf[0] = (0xc0 | ((x >> 6) & 0x1f)); 2.630 ++ ubuf[1] = (0x80 | (x & 0x3f)); 2.631 ++ } 2.632 ++ else { 2.633 ++ ubuf[0] = (0xe0 | ((x >> 12) & 0x0f)); 2.634 ++ ubuf[1] = (0x80 | ((x >> 6) & 0x3f)); 2.635 ++ ubuf[2] = (0x80 | (x & 0x3f)); 2.636 ++ } 2.637 ++ return ubuf; 2.638 ++} 2.639 ++ 2.640 + void 2.641 + replace_sgml_entities(string *s) 2.642 + { 2.643 +@@ -330,9 +349,9 @@ 2.644 + */ 2.645 + while (j < l && s->at(j) != '&') ++j; 2.646 + /* 2.647 +- * We could convert high-bit chars to "é" here if use_iso8859 2.648 +- * is off, then let them be translated or not. Is the purpose of 2.649 +- * !use_iso8859 to allow SGML entities to be seen, or to strongly 2.650 ++ * We could convert high-bit chars to "é" here if USE_ASCII 2.651 ++ * is on, then let them be translated or not. Is the purpose of 2.652 ++ * USE_ASCII to allow SGML entities to be seen, or to strongly 2.653 + * filter against high-ASCII chars that might blow up a terminal 2.654 + * that doesn't speak ISO8859? For the moment, "allow SGML entities 2.655 + * to be seen" -- no filtering here. 2.656 +@@ -370,7 +389,11 @@ 2.657 + if (!isdigit(c)) break; 2.658 + x = 10 * x + c - '0'; 2.659 + } 2.660 +- if (use_iso8859 || (x < 128)) { 2.661 ++ if (USE_UTF8) { 2.662 ++ s->replace(beg, j - beg, mkutf(x)); 2.663 ++ j = beg + 1; 2.664 ++ } 2.665 ++ else if (USE_ISO8859 && (x < 256) || USE_ASCII && (x < 128)) { 2.666 + s->replace(beg, j - beg, 1, (char) x); 2.667 + j = beg + 1; 2.668 + } else { 2.669 +@@ -408,13 +431,17 @@ 2.670 + (int (*)(const void *, const void *)) strcmp 2.671 + ); 2.672 + if (entity != NULL) { 2.673 +- if (use_iso8859 && entity->iso8859code) { 2.674 ++ if (USE_ISO8859 && entity->iso8859code) { 2.675 + s->replace(beg, j - beg, 1, (char) entity->iso8859code); 2.676 + j = beg + 1; 2.677 +- } else if (entity->asciistr) { 2.678 ++ } else if (USE_ASCII && entity->asciistr) { 2.679 + s->replace(beg, j - beg, entity->asciistr); 2.680 + j = beg + 1; 2.681 + } /* else don't replace it at all, we don't have a translation */ 2.682 ++ else if(USE_UTF8 && entity->unicode) { 2.683 ++ s->replace(beg, j - beg, mkutf(entity->unicode)); 2.684 ++ j = beg + 1; 2.685 ++ } 2.686 + } 2.687 + } else { 2.688 + ; /* EXTENSION: Allow literal '&' sometimes. */ 2.689 +diff -r -u -bB html2text-1.3.2a/table.C html2text-1.3.2a-patched/table.C 2.690 +--- html2text-1.3.2a/table.C 2002-07-22 13:32:50.000000000 +0200 2.691 ++++ html2text-1.3.2a-patched/table.C 2005-05-13 22:19:59.871136320 +0200 2.692 +@@ -175,7 +175,7 @@ 2.693 + - (*number_of_columns_return - 1) * (column_spacing + 0), 2.694 + Area::LEFT // Yields better results than "p->halign"! 2.695 + )); 2.696 +- p->width = tmp.get() ? tmp->width() : 0; 2.697 ++ p->width = tmp.get() ? tmp->utf_width() : 0; 2.698 + } 2.699 + p->minimized = false; 2.700 + 2.701 +@@ -308,7 +308,7 @@ 2.702 + left_of_column + old_column_width - 1, 2.703 + Area::LEFT // Yields better results than "lc.halign"! 2.704 + )); 2.705 +- w = tmp->width(); 2.706 ++ w = tmp->utf_width(); 2.707 + if (w >= left_of_column + old_column_width) lc.minimized = true; 2.708 + } 2.709 + if (w > left_of_column + new_column_width) {
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 3.2 +++ b/man2html/description.txt Fri Jan 22 17:24:34 2016 +0200 3.3 @@ -0,0 +1,10 @@ 3.4 +View local man pages in the web browser. Typical usage: 3.5 + 3.6 + hman man2html 3.7 + 3.8 +Utility can search and show local man pages by it's name, and also list all 3.9 +local man pages by categories using web interface for queries. 3.10 + 3.11 +This version was patched for SliTaz to produce clean and modern HTML layout 3.12 +using SliTaz documents CSS styles, to fast search and display pages without 3.13 +caching, etc.
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 4.2 +++ b/man2html/receipt Fri Jan 22 17:24:34 2016 +0200 4.3 @@ -0,0 +1,44 @@ 4.4 +# SliTaz package receipt. 4.5 + 4.6 +PACKAGE="man2html" 4.7 +VERSION="1.6g-7-slitaz" 4.8 +CATEGORY="utilities" 4.9 +SHORT_DESC="Man pages to HTML convertor written in C" 4.10 +MAINTAINER="al.bobylev@gmail.com" 4.11 +LICENSE="BSD" 4.12 +WEB_SITE="https://github.com/man-pages-zh/man2html" 4.13 +TARBALL="$PACKAGE-$VERSION.tar.gz" 4.14 +WGET_URL="https://github.com/man-pages-zh/man2html/archive/$VERSION.tar.gz" 4.15 + 4.16 +DEPENDS="glib" 4.17 +BUILD_DEPENDS="glib-dev" 4.18 + 4.19 +# Rules to configure and make the package. 4.20 +compile_rules() 4.21 +{ 4.22 + patch -p1 -i $stuff/man2html-slitaz.diff 4.23 + make && make install 4.24 + 4.25 + # translations 4.26 + make pot 4.27 + cp $stuff/ru.po $src/po 4.28 + make LINGUAS=ru msgfmt 4.29 + mkdir -p $install/usr/share/locale 4.30 + cp -a $src/po/mo/* $install/usr/share/locale 4.31 + 4.32 + # compress man page 4.33 + gzip $install/usr/share/man/man1/man2html.1 4.34 + 4.35 + # install scripts 4.36 + cp -a $src/hman.sh $install/usr/bin/hman 4.37 + mkdir -p $install/var/www 4.38 + cp -a $src/man.sh $install/var/www/man.cgi 4.39 + chown www:www $install/var/www/man.cgi 4.40 + chmod a+x $install/var/www/man.cgi 4.41 +} 4.42 + 4.43 +# Rules to gen a SliTaz package suitable for Tazpkg. 4.44 +genpkg_rules() 4.45 +{ 4.46 + cp -a $install/* $fs 4.47 +}
5.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 5.2 +++ b/man2html/stuff/man2html-slitaz.diff Fri Jan 22 17:24:34 2016 +0200 5.3 @@ -0,0 +1,2357 @@ 5.4 +--- /dev/null 5.5 ++++ b/Makefile 5.6 +@@ -0,0 +1,89 @@ 5.7 ++CFLAGS += -Wall -Wstrict-prototypes -Wmissing-prototypes -DGUNZIP='"gunzip"' `pkg-config --cflags --libs glib-2.0` 5.8 ++# -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0 5.9 ++OBJECTS = man2html.o cgibase.o abbrev.o strdefs.o 5.10 ++bindir = $(DESTDIR)$(PREFIX)/usr/bin 5.11 ++mandir = $(DESTDIR)$(PREFIX)/usr/share/man 5.12 ++vardir = $(DESTDIR)$(PREFIX)/var 5.13 ++httpdir = $(DESTDIR)$(PREFIX)/home/httpd 5.14 ++cgidir = $(DESTDIR)$(PREFIX)/var/www 5.15 ++sharedir = $(DESTDIR)$(PREFIX)/usr/share/man2html 5.16 ++cgiowner = www 5.17 ++cgigroup = www 5.18 ++CC ?= gcc 5.19 ++ 5.20 ++all: man2html hman 5.21 ++ 5.22 ++man2html: $(OBJECTS) 5.23 ++ $(CC) -o man2html $(OBJECTS) $(CFLAGS) 5.24 ++ 5.25 ++pot: 5.26 ++ mkdir -p po 5.27 ++ xgettext -o po/man2html.pot -k_ -kN_ \ 5.28 ++ --package-name="man2html" \ 5.29 ++ --from-code="UTF-8" \ 5.30 ++ cgibase.c man2html.c hman.sh man.sh 5.31 ++ 5.32 ++msgmerge: 5.33 ++ @for l in $(LINGUAS); do \ 5.34 ++ echo -n "Updating $$l po file."; \ 5.35 ++ msgmerge -U po/$$l.po po/man2html.pot; \ 5.36 ++ done; 5.37 ++ 5.38 ++msgfmt: 5.39 ++ @for l in $(LINGUAS); do \ 5.40 ++ echo "Compiling $$l mo file..."; \ 5.41 ++ mkdir -p po/mo/$$l/LC_MESSAGES; \ 5.42 ++ msgfmt -o po/mo/$$l/LC_MESSAGES/man2html.mo po/$$l.po; \ 5.43 ++ done; 5.44 ++ 5.45 ++ 5.46 ++# man2html: ../src/version.h 5.47 ++ 5.48 ++# This installs the man2html utility 5.49 ++install: man2html 5.50 ++ mkdir -p $(bindir) 5.51 ++ install -m 755 man2html $(bindir) 5.52 ++ mkdir -p $(mandir)/man1 5.53 ++ install -m 644 man2html.1 $(mandir)/man1/man2html.1 5.54 ++ 5.55 ++install-scripts: install-man-scripts install-glimpse-stuff install-hman 5.56 ++ 5.57 ++# These are the scripts that allow pointing a browser at 5.58 ++# http://localhost/cgi-bin/man/man2html 5.59 ++# to work. 5.60 ++install-man-scripts: 5.61 ++ mkdir -p $(cgidir) 5.62 ++ mkdir -p $(sharedir) 5.63 ++ install -m 755 scripts/cgi-bin/man/* $(cgidir) 5.64 ++ install -m 644 scripts/cgi-aux/man/* $(sharedir) 5.65 ++ install -d -o $(cgiowner) -g $(cgigroup) -m 775 $(vardir)/man2html 5.66 ++# (aux was renamed to cgi-aux since aux causes problems under DOS) 5.67 ++ 5.68 ++# If you have installed glimpse, and have compressed man pages, 5.69 ++# then perhaps you also want these filters. 5.70 ++install-glimpse-stuff: 5.71 ++ install -m 644 glimpse_filters $(vardir)/man2html/.glimpse_filters 5.72 ++ 5.73 ++# In order not to have to type a long command like 5.74 ++# netscape http://localhost/cgi-bin/man/man2html?section+topic 5.75 ++# or 5.76 ++# lynx lynxcgi:/home/httpd/cgi-bin/man/man2html?section+topic 5.77 ++# it is convenient to have some shell script as a wrapper. 5.78 ++# The script hman can be aliased to man. It uses an environment 5.79 ++# variable MANHTMLPAGER to find out which browser you use, and 5.80 ++# you can set MANHTMLHOST if the pages are not on localhost. 5.81 ++hman: hman.sh 5.82 ++ rm -f hman 5.83 ++ sed -e 's,%version%,1.6g-7,' hman.sh > hman 5.84 ++ 5.85 ++install-hman: hman 5.86 ++ install -m 555 hman $(bindir)/hman 5.87 ++ install -m 644 hman.1 $(mandir)/man1/hman.1 5.88 ++ 5.89 ++clean: 5.90 ++ rm -f core hman man2html $(OBJECTS) *~ 5.91 ++ 5.92 ++spotless: clean 5.93 ++ rm -f Makefile 5.94 ++ 5.95 ++$(OBJECTS): defs.h 5.96 +--- a/abbrev.c 5.97 ++++ b/abbrev.c 5.98 +@@ -27,7 +27,7 @@ 5.99 + "SSO", "System Services Overview", 5.100 + "TEXT", "Editing Text Files", 5.101 + "DOCS", "Formatting Documents", 5.102 +- "TROFF", "Using <B>nroff</B> and <B>troff</B>", 5.103 ++ "TROFF", "Using <b>nroff</b> and <b>troff</b>", 5.104 + "INDEX", "Global Index", 5.105 + "CPG", "C Programmer's Guide", 5.106 + "CREF", "C Reference Manual", 5.107 +@@ -46,7 +46,7 @@ 5.108 + "CGI", "SunCGI Reference Manual", 5.109 + "CORE", "SunCore Reference Manual", 5.110 + "4ASSY", "Sun-4 Assembly Language Reference", 5.111 +- "SARCH", "<FONT SIZE=\"-1\">SPARC</FONT> Architecture Manual", 5.112 ++ "SARCH", "SPARC Architecture Manual", 5.113 + "KR", "The C Programming Language", 5.114 + 0, 0 }; 5.115 + 5.116 +--- a/cgibase.c 5.117 ++++ b/cgibase.c 5.118 +@@ -8,6 +8,8 @@ 5.119 + #include <ctype.h> /* tolower() */ 5.120 + #include <string.h> /* strlen() */ 5.121 + #include "defs.h" 5.122 ++#include <glib.h> 5.123 ++#include <glib/gi18n.h> 5.124 + 5.125 + /* 5.126 + * The default is to use cgibase. With relative html style 5.127 +@@ -21,8 +23,8 @@ 5.128 + * and uses lynx, and we use lynxcgi:/usr/lib/cgi-bin. 5.129 + */ 5.130 + 5.131 +-static char *man2htmlpath = "/cgi-bin/man/man2html"; /* default */ 5.132 +-static char *cgibase_format = "http://%s"; /* host.domain:port */ 5.133 ++static char *man2htmlpath = ""; /* default */ 5.134 ++static char *cgibase_format = "%s"; /* host.domain:port */ 5.135 + static char *cgibase_ll_format = "lynxcgi:%s"; /* directory */ 5.136 + static char *cgibase = ""; /* default */ 5.137 + 5.138 +@@ -68,76 +70,46 @@ 5.139 + relat_html_style = 1; 5.140 + } 5.141 + 5.142 +-/* What shall we say in case of relat_html_style? */ 5.143 +-static char *signature = "<HR>\n" 5.144 +-"This document was created by\n" 5.145 +-"<A HREF=\"%s%s\">man2html</A>,\n" 5.146 +-"using the manual pages.<BR>\n" 5.147 +-"%s\n"; 5.148 +- 5.149 +-#define TIMEFORMAT "%T GMT, %B %d, %Y" 5.150 +-#define TIMEBUFSZ 500 5.151 +- 5.152 + void print_sig() 5.153 + { 5.154 +- char timebuf[TIMEBUFSZ]; 5.155 +- struct tm *timetm; 5.156 +- time_t now; 5.157 +- 5.158 +- timebuf[0] = 0; 5.159 +-#ifdef TIMEFORMAT 5.160 +- sprintf(timebuf, "Time: "); 5.161 +- now=time(NULL); 5.162 +- timetm=gmtime(&now); 5.163 +- strftime(timebuf+6, TIMEBUFSZ-6, TIMEFORMAT, timetm); 5.164 +- timebuf[TIMEBUFSZ-1] = 0; 5.165 +-#endif 5.166 +- printf(signature, cgibase, man2htmlpath, timebuf); 5.167 ++ printf("</section>\n<footer>\n<p>%s</p>\n</footer>\n", 5.168 ++ _("This document was created by <b>man2html</b> using the manual pages.")); 5.169 + } 5.170 + 5.171 + void 5.172 + include_file_html(char *g) { 5.173 +- printf("<A HREF=\"file:///usr/include/%s\">%s</A>>", g,g); 5.174 ++ printf("<a href=\"file:///usr/include/%s\">%s</a>>", g,g); 5.175 + } 5.176 + 5.177 + void 5.178 + man_page_html(char *sec, char *h) { 5.179 +- if (relat_html_style) { 5.180 +- if (!h) 5.181 +- printf("<A HREF=\"../index.html\">" 5.182 +- "Return to Main Contents</A>"); 5.183 +- else 5.184 +- printf("<A HREF=\"../man%s/%s.%s.html\">%s</A>", 5.185 +- sec, h, sec, h); 5.186 +- } else { 5.187 +- if (!h) 5.188 +- printf("<A HREF=\"%s%s\">Return to Main Contents</A>", 5.189 +- cgibase, man2htmlpath); 5.190 +- else if (!sec) 5.191 +- printf("<A HREF=\"%s%s%c%s\">%s</A>", 5.192 +- cgibase, man2htmlpath, sep, h, h); 5.193 +- else 5.194 +- printf("<A HREF=\"%s%s%c%s+%s\">%s</A>", 5.195 +- cgibase, man2htmlpath, sep, sec, h, h); 5.196 +- } 5.197 ++ if (!h) 5.198 ++ printf("<a href=\"?\">%s</a>", 5.199 ++ _("Return to Main Contents")); 5.200 ++ else if (!sec) 5.201 ++ printf("<a href=\"?%s\">%s</a>", 5.202 ++ h, h); 5.203 ++ else 5.204 ++ printf("<a href=\"?%s+%s\">%s</a>", 5.205 ++ sec, h, h); 5.206 + } 5.207 + 5.208 + void 5.209 + ftp_html(char *f) { 5.210 +- printf("<A HREF=\"ftp://%s\">%s</A>", f, f); 5.211 ++ printf("<a href=\"ftp://%s\">%s</a>", f, f); 5.212 + } 5.213 + 5.214 + void 5.215 + www_html(char *f) { 5.216 +- printf("<A HREF=\"http://%s\">%s</A>", f, f); 5.217 ++ printf("<a href=\"http://%s\">%s</a>", f, f); 5.218 + } 5.219 + 5.220 + void 5.221 + mailto_html(char *g) { 5.222 +- printf("<A HREF=\"mailto:%s\">%s</A>", g, g); 5.223 ++ printf("<a href=\"mailto:%s\">%s</a>", g, g); 5.224 + } 5.225 + 5.226 + void 5.227 + url_html(char *g) { 5.228 +- printf("<A HREF=\"%s\">%s</A>", g, g); 5.229 ++ printf("<a href=\"%s\">%s</a>", g, g); 5.230 + } 5.231 +--- a/hman.sh 5.232 ++++ b/hman.sh 5.233 +@@ -8,99 +8,83 @@ 5.234 + # Usage examples: 5.235 + # hman - get start page 5.236 + # hman man2html - get man page for man2html 5.237 +-# hman 7 locale - get section 7 man page for locale 5.238 ++# hman 7 locale - get section 7 man page for locale 5.239 + # hman 1 - section 1 index of names only 5.240 + # hman 3 index - section 3 index names+descriptions 5.241 + # hman -k editor - search all man pages for some string 5.242 +-# hman -P arena ./twm.man - specify browser; specify man page 5.243 ++# hman -P arena ./twm.man - specify browser; specify man page 5.244 + # 5.245 +-# hman from %version% 5.246 ++# hman from 1.6g-7 5.247 + # 5.248 + 5.249 +-if [ x"$1" = x"-v" ] || [ x"$1" = x"-V" ]; then 5.250 +- echo "`basename $0` from %version%" 5.251 ++. /usr/lib/slitaz/httphelper.sh 5.252 ++. /lib/libtaz.sh 5.253 ++ 5.254 ++# Internationalization 5.255 ++export TEXTDOMAIN='man2html' 5.256 ++_() { local T="$1"; shift; printf "$(gettext "$T")" "$@"; echo; } 5.257 ++ 5.258 ++ 5.259 ++if [ "$1" == '-v' ] || [ "$1" == '-V' ]; then 5.260 ++ echo "$(basename $0) v. 1.6g-slitaz" 5.261 + exit 0 5.262 + fi 5.263 + 5.264 + # The user has to set MANHTMLPAGER (or he will get httpd-free lynx). 5.265 + # Pick your favorite browser: lynx, xmosaic, netscape, arena, amaya, grail, ... 5.266 +-if [ x"$MANHTMLPAGER" = x ] && ! which lynx > /dev/null ; then 5.267 +- HMAN_BROWSER=sensible-browser 5.268 +-else 5.269 +- HMAN_BROWSER=${MANHTMLPAGER-lynxcgi} 5.270 +-fi 5.271 ++HMAN_BROWSER="${MANHTMLPAGER:-tazweb}" 5.272 + 5.273 +-# 5.274 + # If the man pages are on a remote host, specify it in MANHTMLHOST. 5.275 +-HOST=${MANHTMLHOST-localhost} 5.276 ++HOST=${MANHTMLHOST:-localhost} 5.277 + 5.278 + # Perhaps the browser was specified on the command line? 5.279 +-if [ "$#" -gt 1 ] && [ x"$1" = x"-P" ]; then 5.280 +- HMAN_BROWSER="$2" 5.281 +- shift; shift 5.282 ++if [ "$#" -gt 1 ] && [ "$1" == '-P' ]; then 5.283 ++ HMAN_BROWSER="$2" 5.284 ++ shift; shift 5.285 + fi 5.286 + 5.287 + # Perhaps the host was specified on the command line? 5.288 +-if [ "$#" -gt 1 ] && [ x"$1" = x"-H" ]; then 5.289 +- HOST="$2" 5.290 +- shift; shift 5.291 ++if [ "$#" -gt 1 ] && [ "$1" == '-H' ]; then 5.292 ++ HOST="$2" 5.293 ++ shift; shift 5.294 + fi 5.295 + 5.296 +-# Interface to a live (already running) netscape browser. 5.297 +-nsfunc () { 5.298 +- if ( /bin/ps xc | grep -q 'netscape$' ) ; then 5.299 +- if [ -x netscape-remote ] ; then 5.300 +- exec netscape-remote -remote "openURL($1,new_window)" 5.301 +- else 5.302 +- exec netscape -remote "openURL($1,new_window)" 5.303 +- fi 5.304 +- else 5.305 +- netscape $1 & 5.306 +- fi 5.307 +-} 5.308 ++CGI="http://$HOST/man.cgi" 5.309 + 5.310 +-urlencode() { 5.311 +- echo "$@" | perl -pe 'chomp(); s/([^A-Za-z0-9\ \_\-\.\/])/"%" . unpack("H*", $1)/eg; tr/ /+/;' 5.312 ++enc() { 5.313 ++ echo "$@" | sed -e 's|+|%2B|g; s| |+|g'; 5.314 + } 5.315 + 5.316 +- 5.317 +-case "$HMAN_BROWSER" in 5.318 +- lynxcgi) 5.319 +- HMAN_BROWSER=lynx 5.320 +- CG="lynxcgi:/usr/lib/cgi-bin/man" 5.321 +- ;; 5.322 +- netscape) 5.323 +- HMAN_BROWSER=nsfunc 5.324 +- CG="http://$HOST/cgi-bin/man" 5.325 +- ;; 5.326 +- *) 5.327 +- CG="http://$HOST/cgi-bin/man" 5.328 +- ;; 5.329 ++case "$#" in 5.330 ++ 0) 5.331 ++ $HMAN_BROWSER "$CGI";; 5.332 ++ 1) 5.333 ++ case "$1" in 5.334 ++ 1|2|3|4|5|6|7|8|l|n) 5.335 ++ $HMAN_BROWSER "$CGI?$1";; 5.336 ++ /*) 5.337 ++ $HMAN_BROWSER "$CGI?$(enc "$1")";; 5.338 ++ */*) 5.339 ++ $HMAN_BROWSER "$CGI?$(enc "$(realpath "$PWD/$1")")";; 5.340 ++ *) 5.341 ++ $HMAN_BROWSER "$CGI?$(enc "$1")";; 5.342 ++ esac 5.343 ++ ;; 5.344 ++ 2) 5.345 ++# case "$1" in 5.346 ++# -k) 5.347 ++# $HMAN_BROWSER "$CGI?search=$(enc "$2")";; 5.348 ++# *) 5.349 ++# if [ "$2" == 'index' ]; then 5.350 ++# $HMAN_BROWSER "$CGI?whatis=$(enc "$1")" 5.351 ++# else 5.352 ++ $HMAN_BROWSER "$CGI?$(enc "$1 $2")" 5.353 ++# fi 5.354 ++# ;; 5.355 ++# esac 5.356 ++ ;; 5.357 ++ *) 5.358 ++ _ 'bad number of args';; 5.359 + esac 5.360 +- 5.361 +- case "$#" in 5.362 +- 0) $HMAN_BROWSER "$CG/man2html" ;; 5.363 +- 1) case "$1" in 5.364 +- 1|2|3|4|5|6|7|8|l|n) 5.365 +- $HMAN_BROWSER "$CG/mansec?query=$1" ;; 5.366 +- /*) 5.367 +- $HMAN_BROWSER "$CG/man2html?query=`urlencode "$1"`" ;; 5.368 +- */*) 5.369 +- $HMAN_BROWSER "$CG/man2html?query=`urlencode "$PWD/$1"`" ;; 5.370 +- *) 5.371 +- $HMAN_BROWSER "$CG/man2html?query=`urlencode "$1"`" ;; 5.372 +- esac ;; 5.373 +- 2) case "$1" in 5.374 +- -k) 5.375 +- $HMAN_BROWSER "$CG/mansearch?query=`urlencode "$2"`" ;; 5.376 +- *) 5.377 +- if [ "$2" = index ]; then 5.378 +- $HMAN_BROWSER "$CG/manwhatis?query=`urlencode "$1"`" 5.379 +- else 5.380 +- $HMAN_BROWSER "$CG/man2html?query=`urlencode "$1 $2"`" 5.381 +- fi ;; 5.382 +- esac ;; 5.383 +- *) echo "bad number of args" ;; 5.384 +- esac 5.385 + 5.386 + exit 0 5.387 +--- /dev/null 5.388 ++++ b/man.sh 5.389 +@@ -0,0 +1,292 @@ 5.390 ++#!/bin/sh 5.391 ++# man2html cgi script - uses /usr/bin/man2html to format man pages 5.392 ++# aeb@cwi.nl - 980109 5.393 ++# Aleksej Bobylev <al.bobylev@gmail.com>, 2015-2016 5.394 ++ 5.395 ++. /usr/lib/slitaz/httphelper.sh 5.396 ++. /lib/libtaz.sh 5.397 ++ 5.398 ++# Internationalization. 5.399 ++[ -e /etc/locale.conf ] && . /etc/locale.conf 5.400 ++export TEXTDOMAIN='man2html' 5.401 ++export LANG LC_ALL 5.402 ++_() { local T="$1"; shift; printf "$(gettext "$T")" "$@"; echo; } 5.403 ++ 5.404 ++ 5.405 ++SECTIONS="$(_ 'User Commands'):$(_ 'System Calls'):$(_ 'C Library Functions'):\ 5.406 ++$(_ 'Devices and Network Interfaces'):$(_ 'File Formats'):\ 5.407 ++$(_ 'Games and Demos'):$(_ 'Environments, Tables, and Troff Macros'):\ 5.408 ++$(_ 'Maintenance Commands'):$(_ 'All available manual pages')" 5.409 ++ 5.410 ++query="$(GET query)" 5.411 ++if [ -z "$query" ]; then 5.412 ++ set -- $(echo $(GET) | tr '+' ' ') 5.413 ++else 5.414 ++ set -- $(echo $(GET query) | tr '+' ' ') 5.415 ++fi 5.416 ++ 5.417 ++ 5.418 ++if [ $1 == 'css' ]; then 5.419 ++ # post css file on query 5.420 ++ header 'Content-Type: text/css' 5.421 ++ cat /usr/share/doc/slitaz-doc.css 5.422 ++fi 5.423 ++ 5.424 ++if [ $# -eq 1 ]; then 5.425 ++ case $1 in 5.426 ++ 1|2|3|4|5|6|7|8|all) 5.427 ++ if [ "$1" == 'all' ]; then 5.428 ++ sec_n='9'; sec_folder='man?' 5.429 ++ else 5.430 ++ sec_n="$1"; sec_folder="man$1" 5.431 ++ fi 5.432 ++ sec_desc=$(echo "$SECTIONS" | cut -d':' -f $sec_n) 5.433 ++ header 5.434 ++ cat <<EOT 5.435 ++<!DOCTYPE html> 5.436 ++<html> 5.437 ++<head> 5.438 ++ <title>$1. $sec_desc</title> 5.439 ++ <link rel="stylesheet" href="?css"> 5.440 ++</head> 5.441 ++<body><header><h1>$(_ 'Section %s: %s' $1 "$sec_desc")</h1></header> 5.442 ++ <section><header>$(_ 'Manual Pages')</header> 5.443 ++ <p> 5.444 ++EOT 5.445 ++ 5.446 ++ case $1 in 5.447 ++ 1) _ "Section 1 of the manual describes user commands and tools, for example, file \ 5.448 ++manipulation tools, shells, compilers, web browsers, file and image viewers and editors, and so \ 5.449 ++on.";; 5.450 ++ 2) _ "Section 2 of the manual describes the Linux system calls. A system call is \ 5.451 ++an entry point into the Linux kernel.";; 5.452 ++ 3) _ "Section 3 of the manual describes all library functions excluding the \ 5.453 ++library functions (system call wrappers) described in Section 2, which implement system calls.";; 5.454 ++ 4) _ "Section 4 of the manual describes special files (devices).";; 5.455 ++ 5) _ "Section 5 of the manual describes various file formats, as well as the \ 5.456 ++corresponding C structures, if any.";; 5.457 ++ 6) _ "Section 6 of the manual describes all the games and funny little programs \ 5.458 ++available on the system.";; 5.459 ++ 7) _ "Section 7 of the manual provides overviews on various topics, and describes \ 5.460 ++conventions and protocols, character set standards, the standard filesystem layout, and \ 5.461 ++miscellaneous other things.";; 5.462 ++ 8) _ "Section 8 of the manual describes commands which either can be or are used \ 5.463 ++only by the superuser, like system-administration commands, daemons, and hardware-related \ 5.464 ++commands.";; 5.465 ++ esac 5.466 ++ 5.467 ++ [ "$1" != 'all' ] && echo "<b><a href=\"?intro.$1\">intro</a></b>($1)" 5.468 ++ echo '</p>' 5.469 ++ 5.470 ++ temp="$(mktemp)"; temp2="$(mktemp)" 5.471 ++ for dir in $(find /usr/share/man -type d -name "$sec_folder"); do 5.472 ++ ls $dir | sed 's|\.\([0-9]\)\.*[bgx]*z*2*$|:\1|' 5.473 ++ # fix sorting 'feature': leading '_' always ignored by `sort` 5.474 ++ done | sed 's|_|zzzzzzzz|g' | sort -fu | sed 's|zzzzzzzz|_|g' | \ 5.475 ++ awk -F' ' -vtemp="$temp" -vtemp2="$temp2" ' 5.476 ++ { 5.477 ++ split($1, man, ":"); 5.478 ++ 5.479 ++ letter = tolower(substr(man[1], 1, 1)); 5.480 ++ if (letter != last_letter) { 5.481 ++ last_letter = letter; 5.482 ++ letter_index[++num_letters] = letter; 5.483 ++ print "<h3 id=\"l" letter "\">" toupper(letter) "</h3>" > temp; 5.484 ++ } 5.485 ++ lnk = man[1]; gsub("+", "%2b", lnk); 5.486 ++ printf "<b><a href=\"?%s.%s\">%s</a></b>(%s) ", lnk, man[2], man[1], man[2] > temp; 5.487 ++ } 5.488 ++ END { 5.489 ++ # Print out alphabetic quick index and other links 5.490 ++ for (i = 1; i <= num_letters; i++) { 5.491 ++ print "<a href=\"#l" letter_index[i] section "\">" toupper(letter_index[i]) "</a>" > temp2; 5.492 ++ } 5.493 ++ } 5.494 ++ ' 5.495 ++ if [ -s "$temp" ]; then 5.496 ++ echo '<hr>'; cat "$temp2"; echo '<hr>' 5.497 ++ cat "$temp" 5.498 ++ echo '<hr>'; cat "$temp2"; echo '<hr>' 5.499 ++ fi 5.500 ++ 5.501 ++ rm -f "$temp" "$temp2" 5.502 ++ 5.503 ++ cat <<EOT 5.504 ++ </section> 5.505 ++ <section><header>$(_ 'Sections')</header> 5.506 ++ <ol> 5.507 ++EOT 5.508 ++ for i in $(seq 8); do 5.509 ++ sec_desc=$(echo "$SECTIONS" | cut -d':' -f $i) 5.510 ++ echo "<li><a href=\"?$i\">$sec_desc</a></li>" 5.511 ++ done 5.512 ++ cat <<EOT 5.513 ++ </ol> 5.514 ++ <p><a href="?all">$(_ 'All Sections')</a></p> 5.515 ++</section> 5.516 ++ 5.517 ++</body> 5.518 ++</html> 5.519 ++EOT 5.520 ++ exit 0 5.521 ++ ;; 5.522 ++ esac 5.523 ++fi 5.524 ++ 5.525 ++# Find the required page - expect to be called with "man2html [sec] page". 5.526 ++# There may a prefixed "-M manpath" option. 5.527 ++ 5.528 ++if [ $# -ge 2 -a "$1" == '-M' ]; then 5.529 ++ MANPATH="$2" 5.530 ++ export MANPATH 5.531 ++ shift; shift 5.532 ++ MP=' using the given MANPATH' 5.533 ++else 5.534 ++ MP='' 5.535 ++fi 5.536 ++ 5.537 ++ 5.538 ++# If no arguments given, show a start page. 5.539 ++ 5.540 ++if [ $# -eq 0 ]; then 5.541 ++ header 5.542 ++ cat <<EOT 5.543 ++<!DOCTYPE html> 5.544 ++<html> 5.545 ++<head> 5.546 ++ <meta charset="UTF-8"> 5.547 ++ <title>$(_ 'Manual Pages - Main Contents')</title> 5.548 ++ <link rel="stylesheet" href="?css"> 5.549 ++</head> 5.550 ++<body> 5.551 ++<header><h1>$(_ 'Manual Pages - Main Contents')</h1></header> 5.552 ++<section><header>$(_ 'Name and Section lookup')</header> 5.553 ++ <form method="GET"> 5.554 ++ <input name="query" size="40"> 5.555 ++ <button type="submit">$(_ 'Search')</button> 5.556 ++ </form> 5.557 ++ <p>$(_ "You can enter a program name, possibly preceded by the section, the directories to search \ 5.558 ++(with -M) or a full name. For example:")</p> 5.559 ++ 5.560 ++ <ul> 5.561 ++ <li><tt>find</tt></li> 5.562 ++ <li><tt>1 find</tt></li> 5.563 ++ <li><tt>-M /usr/share/man:/opt/man:/usr/local/share/man find</tt></li> 5.564 ++ <li><tt>/usr/share/man/man1/gperf.1</tt></li> 5.565 ++ </ul> 5.566 ++</section> 5.567 ++ 5.568 ++<section><header>$(_ 'Index of pages')</header> 5.569 ++ 5.570 ++ <ol> 5.571 ++EOT 5.572 ++ for i in $(seq 8); do 5.573 ++ sec_desc=$(echo "$SECTIONS" | cut -d':' -f $i) 5.574 ++ echo "<li><a href=\"?$i\">$sec_desc</a></li>" 5.575 ++ done 5.576 ++ cat <<EOT 5.577 ++ </ol> 5.578 ++ <p><a href="?all">$(_ 'All Sections')</a></p> 5.579 ++</section> 5.580 ++ 5.581 ++<footer> 5.582 ++ <p>$(_ 'The original man2html program and scripts are due to %s and %s.' \ 5.583 ++ '<a href="http://wsinwp01.win.tue.nl:1234/index.html">Richard Verhoeven</a>' \ 5.584 ++ '<a href="mailto:michael@actrix.gen.nz">Michael Hamilton</a>') 5.585 ++ $(_ 'This version is from %s maintained by %s.' 'man-1.6g' \ 5.586 ++ '<a href="mailto:flucifredi@acm.org">Federico Lucifredi</a>')</p> 5.587 ++</footer> 5.588 ++</body> 5.589 ++</html> 5.590 ++EOT 5.591 ++ exit 0 5.592 ++fi 5.593 ++ 5.594 ++if [ $# -gt 2 ]; then 5.595 ++ man2html -E "man2html: bad invocation: too many arguments" 5.596 ++ exit 0 5.597 ++fi 5.598 ++ 5.599 ++# A single argument may be an explicitly give path name 5.600 ++# Otherwise, find it 5.601 ++ 5.602 ++if [ $# -eq 1 ]; then 5.603 ++ arg=${1//%2b/+} 5.604 ++ case "$arg" in 5.605 ++ /*) PAGE="$arg";; 5.606 ++ *.*) PAGE=$(find /usr/share/man \( -type f -o -type l \) \( -name "$arg" -o -name "$arg.gz" -o -name "$arg.bz2" -o -name "$arg.xz" \));; 5.607 ++ *) PAGE=$(find /usr/share/man \( -type f -o -type l \) \( -name "$arg.*" -o -name "$arg.*.gz" -o -name "$arg.*.bz2" -o -name "$arg.*.xz" \));; 5.608 ++ esac 5.609 ++else 5.610 ++ arg=${2//%2b/+} 5.611 ++ PAGE="$( 5.612 ++ for dir in $(find /usr/share/man -type d -name man$1); do 5.613 ++ find $dir \( -type f -o -type l \) -name "$arg.$1*" 5.614 ++ done)" 5.615 ++fi 5.616 ++ 5.617 ++if [ -z "$PAGE" ]; then 5.618 ++ complaint="$(_ 'Cannot find a page')" 5.619 ++ if [ $# -eq 1 ]; then 5.620 ++ complaint="$(_ 'Cannot find a page for <b>%s</b> %s' $1 $MP)" 5.621 ++ else 5.622 ++ complaint="$(_ 'Cannot find a page for <b>%s</b> in section <b>%s</b> %s') $2 $1 $MP" 5.623 ++ fi 5.624 ++ man2html -E "<p>$complaint</p>" 5.625 ++ exit 0 5.626 ++fi 5.627 ++ 5.628 ++if [ "$(echo "$PAGE" | wc -l)" -gt 1 ]; then 5.629 ++ header 5.630 ++ cat <<EOT 5.631 ++<!DOCTYPE html> 5.632 ++<html><head><title>$(_ 'Multiple pages')</title> 5.633 ++<link rel="stylesheet" href="?css"></link></head> 5.634 ++<body><header><h1>$(_ 'Multiple pages found')</h1></header> 5.635 ++ <section> 5.636 ++ <ul> 5.637 ++EOT 5.638 ++ echo "$PAGE" | awk -F'/' '{ 5.639 ++ if ($5 ~ "man") { 5.640 ++ split($6, man, "."); 5.641 ++ printf "<li><a href=\"?%s\">%s</a> (%s)</li>\n", $0, man[1], man[2]; 5.642 ++ } else { 5.643 ++ split($7, man, "."); 5.644 ++ printf "<li><a href=\"?%s\">%s</a> (%s) — %s</li>\n", $0, man[1], man[2], $5; 5.645 ++ } 5.646 ++ }' 5.647 ++ sed 's|^.*$|<li><a href="?&">&</a></li>|' 5.648 ++ echo '</ul></section></body></html>' 5.649 ++ exit 0 5.650 ++fi 5.651 ++ 5.652 ++if [ -r "$PAGE" ]; then 5.653 ++ tmpman="$(mktemp)" 5.654 ++ # Unpack man page 5.655 ++ case "$PAGE" in 5.656 ++ *.gz) zcat "$PAGE" > "$tmpman";; 5.657 ++ *.bz2) bzcat "$PAGE" > "$tmpman";; 5.658 ++ *.xz) xzcat "$PAGE" > "$tmpman";; 5.659 ++ *) cp "$PAGE" "$tmpman";; 5.660 ++ esac 5.661 ++ 5.662 ++ # Check for link 5.663 ++ line="$(fgrep -v '.\"' "$tmpman" | head -n1)" 5.664 ++ case "$line" in 5.665 ++ .so*) 5.666 ++ link="$(echo "$line" | cut -d'/' -f2)" 5.667 ++ header "HTTP/1.1 301 Moved Permanently" \ 5.668 ++ "Location: ?$link" 5.669 ++ ;; 5.670 ++ *) 5.671 ++ # Convert page to HTML 5.672 ++ man2html "$tmpman" 5.673 ++ ;; 5.674 ++ esac 5.675 ++ 5.676 ++ # Clean 5.677 ++ rm "$tmpman" 5.678 ++else 5.679 ++ man2html -E "Strange... Cannot find (or read) $PAGE." 5.680 ++fi 5.681 ++exit 0 5.682 +--- a/man2html.c 5.683 ++++ b/man2html.c 5.684 +@@ -21,14 +21,17 @@ 5.685 + #include <ctype.h> 5.686 + #include <sys/stat.h> 5.687 + #include "defs.h" 5.688 +-#include "../src/version.h" 5.689 ++#include "version.h" 5.690 ++#include <glib.h> 5.691 ++#include <glib/gi18n.h> 5.692 ++#define GETTEXT_PACKAGE "man2html" 5.693 + 5.694 + /* BSD mandoc Bd/Ed example(?) blocks */ 5.695 + #define BD_LITERAL 1 5.696 + #define BD_INDENT 2 5.697 + 5.698 + #define SIZE(a) (sizeof(a)/sizeof(*a)) 5.699 +-#define DOCTYPE "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n" 5.700 ++#define DOCTYPE "<!DOCTYPE html>\n" 5.701 + #define CONTENTTYPE "Content-type: text/html; charset=UTF-8\n\n" 5.702 + 5.703 + static char NEWLINE[2]="\n"; 5.704 +@@ -58,28 +61,13 @@ 5.705 + 5.706 + static char charb[3]; 5.707 + 5.708 +-#ifdef GUNZIP 5.709 +-/* from src/utils.c */ 5.710 +-static int 5.711 +-is_shell_safe(const char *ss, int quoted) { 5.712 +- char *bad = " ;'\\\"<>|"; 5.713 +- char *p; 5.714 + 5.715 +- if (quoted) 5.716 +- bad++; /* allow a space inside quotes */ 5.717 +- for (p = bad; *p; p++) 5.718 +- if (strchr(ss, *p)) 5.719 +- return 0; 5.720 +- return 1; 5.721 +-} 5.722 +-#endif 5.723 +- 5.724 + /* reads the entire manpage into buffer *buf and returns number of chars read */ 5.725 + static int 5.726 + read_manpage_into_buffer(char *path, char **buf) { 5.727 + int compressed = 0; 5.728 + FILE * f = NULL; 5.729 +- char * ext; 5.730 ++ /* char * ext; */ 5.731 + int l = 0; 5.732 + struct stat stbuf; 5.733 + 5.734 +@@ -94,26 +82,6 @@ 5.735 + char * tmp = NULL; 5.736 + char * command = NULL; 5.737 + char * openpath = path; 5.738 +-#ifdef GUNZIP 5.739 +- 5.740 +- if (is_shell_safe(openpath, 1)) { 5.741 +- ext = strrchr(openpath, '.'); 5.742 +- compressed = (ext && !strcmp(ext, ".gz")); 5.743 +- 5.744 +- if (!compressed && stat(openpath, &stbuf)) { 5.745 +- tmp = (char*) xmalloc(strlen(path) + 4); 5.746 +- sprintf(tmp, "%s.gz", path); 5.747 +- if ((compressed = !stat(tmp, &stbuf))) 5.748 +- openpath = tmp; 5.749 +- } 5.750 +- } 5.751 +- 5.752 +- if (compressed) { 5.753 +- command = (char*) xmalloc(strlen(openpath) + sizeof(GUNZIP) + 4); 5.754 +- sprintf(command, GUNZIP " '%s'", openpath); 5.755 +- f = popen(command, "r"); 5.756 +- } else 5.757 +-#endif 5.758 + f = fopen(openpath, "r"); 5.759 + 5.760 + if (tmp) free(tmp); 5.761 +@@ -170,7 +138,7 @@ 5.762 + 5.763 + h = chardef; 5.764 + if (h->nr != V('*','*')) { 5.765 +- printf("chardef corrupted\n"); 5.766 ++ printf("%s\n", _("chardef corrupted")); 5.767 + exit(1); 5.768 + } 5.769 + 5.770 +@@ -216,7 +184,7 @@ 5.771 + ** Add the links to the output. 5.772 + ** At the moment the following are recognized: 5.773 + ** 5.774 +- ** name(*) -> ../man?/name.* 5.775 ++ ** name(*) -> ?name.* 5.776 + ** method://string -> method://string 5.777 + ** www.host.name -> http://www.host.name 5.778 + ** ftp.host.name -> ftp://ftp.host.name 5.779 +@@ -453,8 +421,8 @@ 5.780 + #define DL 1 5.781 + #define UL 2 5.782 + #define OL 3 5.783 +-static char *dl_open[4] = { "", "<DL COMPACT>\n", "<UL>", "<OL>" }; 5.784 +-static char *dl_close[4] = { "", "</DL>\n", "</UL>", "</OL>" }; 5.785 ++static char *dl_open[4] = { "", "<dl compact>\n", "<ul>", "<ol>" }; 5.786 ++static char *dl_close[4] = { "", "</dl>\n", "</ul>", "</ol>" }; 5.787 + 5.788 + static inline void 5.789 + dl_begin(void) { 5.790 +@@ -462,7 +430,7 @@ 5.791 + out_html(dl_open[DL]); 5.792 + dl_set[itemdepth]=DL; 5.793 + } 5.794 +- out_html("<DT>"); 5.795 ++ out_html("<dt>"); 5.796 + } 5.797 + 5.798 + static inline void 5.799 +@@ -481,14 +449,14 @@ 5.800 + itemdepth++; 5.801 + if (itemdepth < SIZE(dl_set)) 5.802 + dl_set[itemdepth]=noDL; 5.803 +- out_html("<DL COMPACT><DT><DD>"); 5.804 ++ out_html("<dl compact><dt><dd>"); 5.805 + } 5.806 + 5.807 + static inline void 5.808 + dl_endlevel(void) { 5.809 + if (itemdepth) { 5.810 + dl_end(); 5.811 +- out_html("</DL>\n"); 5.812 ++ out_html("</dl>\n"); 5.813 + itemdepth--; 5.814 + } 5.815 + } 5.816 +@@ -538,12 +506,12 @@ 5.817 + 5.818 + #define FO0 "" 5.819 + #define FC0 "" 5.820 +-#define FO1 "<I>" 5.821 +-#define FC1 "</I>" 5.822 +-#define FO2 "<B>" 5.823 +-#define FC2 "</B>" 5.824 +-#define FO3 "<TT>" 5.825 +-#define FC3 "</TT>" 5.826 ++#define FO1 "<i>" 5.827 ++#define FC1 "</i>" 5.828 ++#define FO2 "<b>" 5.829 ++#define FC2 "</b>" 5.830 ++#define FO3 "<tt>" 5.831 ++#define FC3 "</tt>" 5.832 + 5.833 + char *switchfont[16] = { "" , FC0 FO1, FC0 FO2, FC0 FO3, 5.834 + FC1 FO0, "" , FC1 FO2, FC1 FO3, 5.835 +@@ -588,14 +556,16 @@ 5.836 + i=current_font; 5.837 + sizebuf[0]=0; 5.838 + strcat(sizebuf, change_to_font(0)); 5.839 +- if (current_size) strcat(sizebuf, "</FONT>"); 5.840 ++ if (current_size) strcat(sizebuf, "</span>"); 5.841 + current_size=nr; 5.842 + if (nr) { 5.843 + int l; 5.844 +- strcat(sizebuf, "<FONT SIZE=\""); 5.845 ++ strcat(sizebuf, "<span style=\"font-size: "); 5.846 + l=strlen(sizebuf); 5.847 + if (nr>0) sizebuf[l++]='+'; else sizebuf[l++]='-',nr=-nr; 5.848 + sizebuf[l++]=nr+'0'; 5.849 ++ sizebuf[l++]='p'; 5.850 ++ sizebuf[l++]='t'; 5.851 + sizebuf[l++]='"'; 5.852 + sizebuf[l++]='>'; 5.853 + sizebuf[l]=0; 5.854 +@@ -775,7 +745,7 @@ 5.855 + skip_escape=exskipescape; 5.856 + intresult=j; 5.857 + break; 5.858 +- case 'l': h="<HR>"; curpos=0; 5.859 ++ case 'l': h="<hr>"; curpos=0; 5.860 + case 'b': 5.861 + case 'v': 5.862 + case 'x': 5.863 +@@ -812,7 +782,7 @@ 5.864 + case 'c': no_newline_output=1; break; 5.865 + case '{': newline_for_fun++; h="";break; 5.866 + case '}': if (newline_for_fun) newline_for_fun--; h="";break; 5.867 +- case 'p': h="<BR>\n";curpos=0; break; 5.868 ++ case 'p': h="<br>\n";curpos=0; break; 5.869 + case 't': h="\t";curpos=(curpos+8)&0xfff8; break; 5.870 + case '<': h="<";curpos++; break; 5.871 + case '>': h=">";curpos++; break; 5.872 +@@ -1021,7 +991,7 @@ 5.873 + out_html(change_to_size(0)); 5.874 + if (!fillout) { 5.875 + fillout=1; 5.876 +- out_html("</PRE>"); 5.877 ++ out_html("</pre>"); 5.878 + } 5.879 + while (*h && *h!='\n') h++; 5.880 + if (h[-1]==';') { 5.881 +@@ -1197,45 +1167,45 @@ 5.882 + currow=currow->prev; 5.883 + } 5.884 + /* produce html output */ 5.885 +- if (center) out_html("<CENTER>"); 5.886 +- if (box==2) out_html("<TABLE BORDER><TR><TD>"); 5.887 +- out_html("<TABLE"); 5.888 ++ if (center) out_html("<div style=\"margin: 0 auto\">"); 5.889 ++ if (box==2) out_html("<table border><tr><td>"); 5.890 ++ out_html("<table"); 5.891 + if (box || border) { 5.892 +- out_html(" BORDER"); 5.893 +- if (!border) out_html("><TR><TD><TABLE"); 5.894 +- if (expand) out_html(" WIDTH=100%"); 5.895 ++ out_html(" border"); 5.896 ++ if (!border) out_html("><tr><td><table"); 5.897 ++ if (expand) out_html(" width=100%"); 5.898 + } 5.899 + out_html(">\n"); 5.900 + currow=layout; 5.901 + while (currow) { 5.902 + j=0; 5.903 +- out_html("<TR VALIGN=top>"); 5.904 ++ out_html("<tr style=\"vertical-align: top\">"); 5.905 + curfield=currow->first; 5.906 + while (curfield) { 5.907 + if (curfield->align!='S' && curfield->align!='^') { 5.908 +- out_html("<TD"); 5.909 ++ out_html("<td"); 5.910 + switch (curfield->align) { 5.911 + case 'N': 5.912 + curfield->space+=4; 5.913 + case 'R': 5.914 +- out_html(" ALIGN=right"); 5.915 ++ out_html(" style=\"text-align: right\""); 5.916 + break; 5.917 + case 'C': 5.918 +- out_html(" ALIGN=center"); 5.919 ++ out_html(" style=\"text-align: center\""); 5.920 + default: 5.921 + break; 5.922 + } 5.923 + if (!curfield->valign && curfield->rowspan>1) 5.924 +- out_html(" VALIGN=center"); 5.925 ++ out_html(" style=\"vertical-align: center\""); 5.926 + if (curfield->colspan>1) { 5.927 + char buf[5]; 5.928 +- out_html(" COLSPAN="); 5.929 ++ out_html(" colspan="); 5.930 + sprintf(buf, "%i", curfield->colspan); 5.931 + out_html(buf); 5.932 + } 5.933 + if (curfield->rowspan>1) { 5.934 + char buf[5]; 5.935 +- out_html(" ROWSPAN="); 5.936 ++ out_html(" rowspan="); 5.937 + sprintf(buf, "%i", curfield->rowspan); 5.938 + out_html(buf); 5.939 + } 5.940 +@@ -1244,8 +1214,8 @@ 5.941 + if (curfield->size) out_html(change_to_size(curfield->size)); 5.942 + if (curfield->font) out_html(change_to_font(curfield->font)); 5.943 + switch (curfield->align) { 5.944 +- case '=': out_html("<HR><HR>"); break; 5.945 +- case '_': out_html("<HR>"); break; 5.946 ++ case '=': out_html("<hr><hr>"); break; 5.947 ++ case '_': out_html("<hr>"); break; 5.948 + default: 5.949 + if (curfield->contents) out_html(curfield->contents); 5.950 + break; 5.951 +@@ -1255,20 +1225,20 @@ 5.952 + if (curfield->font) out_html(change_to_font(0)); 5.953 + if (curfield->size) out_html(change_to_size(0)); 5.954 + if (j>=maxcol && curfield->align>'@' && curfield->align!='_') 5.955 +- out_html("<BR>"); 5.956 +- out_html("</TD>"); 5.957 ++ out_html("<br>"); 5.958 ++ out_html("</td>"); 5.959 + } 5.960 + curfield=curfield->next; 5.961 + } 5.962 +- out_html("</TR>\n"); 5.963 ++ out_html("</tr>\n"); 5.964 + currow=currow->next; 5.965 + } 5.966 +- if (box && !border) out_html("</TABLE>"); 5.967 +- out_html("</TABLE>"); 5.968 +- if (box==2) out_html("</TABLE>"); 5.969 +- if (center) out_html("</CENTER>\n"); 5.970 ++ if (box && !border) out_html("</table>"); 5.971 ++ out_html("</table>"); 5.972 ++ if (box==2) out_html("</table>"); 5.973 ++ if (center) out_html("</div>\n"); 5.974 + else out_html("\n"); 5.975 +- if (!oldfillout) out_html("<PRE>"); 5.976 ++ if (!oldfillout) out_html("<pre>"); 5.977 + fillout=oldfillout; 5.978 + out_html(change_to_size(oldsize)); 5.979 + out_html(change_to_font(oldfont)); 5.980 +@@ -1401,7 +1371,7 @@ 5.981 + case '&': value = (value && value2); break; 5.982 + case ':': value = (value || value2); break; 5.983 + default: fprintf(stderr, 5.984 +- "man2html: Unknown operator %c.\n", oper); 5.985 ++ _("man2html: Unknown operator %c.\n"), oper); 5.986 + } 5.987 + oper=0; 5.988 + } 5.989 +@@ -1489,42 +1459,42 @@ 5.990 + 5.991 + 5.992 + char *section_list[] = { 5.993 +- "1", "User Commands ", 5.994 +- "1C", "User Commands", 5.995 +- "1G", "User Commands", 5.996 +- "1S", "User Commands", 5.997 +- "1V", "User Commands ", 5.998 +- "2", "System Calls", 5.999 +- "2V", "System Calls", 5.1000 +- "3", "C Library Functions", 5.1001 +- "3C", "Compatibility Functions", 5.1002 +- "3F", "Fortran Library Routines", 5.1003 +- "3K", "Kernel VM Library Functions", 5.1004 +- "3L", "Lightweight Processes Library", 5.1005 +- "3M", "Mathematical Library", 5.1006 +- "3N", "Network Functions", 5.1007 +- "3R", "RPC Services Library", 5.1008 +- "3S", "Standard I/O Functions", 5.1009 +- "3V", "C Library Functions", 5.1010 +- "3X", "Miscellaneous Library Functions", 5.1011 +- "4", "Devices and Network Interfaces", 5.1012 +- "4F", "Protocol Families", 5.1013 +- "4I", "Devices and Network Interfaces", 5.1014 +- "4M", "Devices and Network Interfaces", 5.1015 +- "4N", "Devices and Network Interfaces", 5.1016 +- "4P", "Protocols", 5.1017 +- "4S", "Devices and Network Interfaces", 5.1018 +- "4V", "Devices and Network Interfaces", 5.1019 +- "5", "File Formats", 5.1020 +- "5V", "File Formats", 5.1021 +- "6", "Games and Demos", 5.1022 +- "7", "Environments, Tables, and Troff Macros", 5.1023 +- "7V", "Environments, Tables, and Troff Macros", 5.1024 +- "8", "Maintenance Commands", 5.1025 +- "8C", "Maintenance Commands", 5.1026 +- "8S", "Maintenance Commands", 5.1027 +- "8V", "Maintenance Commands", 5.1028 +- "L", "Local Commands", 5.1029 ++ "1", N_("User Commands"), 5.1030 ++ "1C", N_("User Commands"), 5.1031 ++ "1G", N_("User Commands"), 5.1032 ++ "1S", N_("User Commands"), 5.1033 ++ "1V", N_("User Commands"), 5.1034 ++ "2", N_("System Calls"), 5.1035 ++ "2V", N_("System Calls"), 5.1036 ++ "3", N_("C Library Functions"), 5.1037 ++ "3C", N_("Compatibility Functions"), 5.1038 ++ "3F", N_("Fortran Library Routines"), 5.1039 ++ "3K", N_("Kernel VM Library Functions"), 5.1040 ++ "3L", N_("Lightweight Processes Library"), 5.1041 ++ "3M", N_("Mathematical Library"), 5.1042 ++ "3N", N_("Network Functions"), 5.1043 ++ "3R", N_("RPC Services Library"), 5.1044 ++ "3S", N_("Standard I/O Functions"), 5.1045 ++ "3V", N_("C Library Functions"), 5.1046 ++ "3X", N_("Miscellaneous Library Functions"), 5.1047 ++ "4", N_("Devices and Network Interfaces"), 5.1048 ++ "4F", N_("Protocol Families"), 5.1049 ++ "4I", N_("Devices and Network Interfaces"), 5.1050 ++ "4M", N_("Devices and Network Interfaces"), 5.1051 ++ "4N", N_("Devices and Network Interfaces"), 5.1052 ++ "4P", N_("Protocols"), 5.1053 ++ "4S", N_("Devices and Network Interfaces"), 5.1054 ++ "4V", N_("Devices and Network Interfaces"), 5.1055 ++ "5", N_("File Formats"), 5.1056 ++ "5V", N_("File Formats"), 5.1057 ++ "6", N_("Games and Demos"), 5.1058 ++ "7", N_("Environments, Tables, and Troff Macros"), 5.1059 ++ "7V", N_("Environments, Tables, and Troff Macros"), 5.1060 ++ "8", N_("Maintenance Commands"), 5.1061 ++ "8C", N_("Maintenance Commands"), 5.1062 ++ "8S", N_("Maintenance Commands"), 5.1063 ++ "8V", N_("Maintenance Commands"), 5.1064 ++ "L", N_("Local Commands"), 5.1065 + /* for Solaris: 5.1066 + "1", "User Commands", 5.1067 + "1B", "SunOS/BSD Compatibility Package Commands", 5.1068 +@@ -1593,7 +1563,7 @@ 5.1069 + "9s", "DDI and DKI Data Structures", 5.1070 + "L", "Local Commands", 5.1071 + */ 5.1072 +- NULL, "Misc. Reference Manual Pages", 5.1073 ++ NULL, N_("Misc. Reference Manual Pages"), 5.1074 + NULL, NULL 5.1075 + }; 5.1076 + 5.1077 +@@ -1604,7 +1574,7 @@ 5.1078 + 5.1079 + if (!c) return ""; 5.1080 + while (section_list[i] && strcmp(c,section_list[i])) i=i+2; 5.1081 +- if (section_list[i+1]) return section_list[i+1]; 5.1082 ++ if (section_list[i+1]) return _(section_list[i+1]); 5.1083 + else return c; 5.1084 + } 5.1085 + 5.1086 +@@ -1636,10 +1606,10 @@ 5.1087 + if (level != subs) { 5.1088 + manidx_need(6); 5.1089 + if (subs) { 5.1090 +- strcpy(manidx+mip, "</DL>\n"); 5.1091 ++ strcpy(manidx+mip, "</dl>\n"); 5.1092 + mip += 6; 5.1093 + } else { 5.1094 +- strcpy(manidx+mip, "<DL>\n"); 5.1095 ++ strcpy(manidx+mip, "<dl>\n"); 5.1096 + mip += 5; 5.1097 + } 5.1098 + } 5.1099 +@@ -1647,7 +1617,7 @@ 5.1100 + 5.1101 + scan_troff(item, 1, &c); 5.1102 + manidx_need(100 + strlen(c)); 5.1103 +- sprintf(manidx+mip, "<DT><A HREF=\"#%s\">%s</A><DD>\n", label, c); 5.1104 ++ sprintf(manidx+mip, "<dt><a href=\"#%s\">%s</a></dt><dd>\n", label, c); 5.1105 + if (c) free(c); 5.1106 + while (manidx[mip]) mip++; 5.1107 + } 5.1108 +@@ -1834,8 +1804,8 @@ 5.1109 + } 5.1110 + break; 5.1111 + case V('b','r'): 5.1112 +- if (still_dd) out_html("<DD>"); 5.1113 +- else out_html("<BR>\n"); 5.1114 ++ if (still_dd) out_html("<dd>"); 5.1115 ++ else out_html("<br>\n"); 5.1116 + curpos=0; 5.1117 + c=c+j; 5.1118 + if (c[0] == escapesym) { c=scan_escape(c+1); } 5.1119 +@@ -1865,17 +1835,17 @@ 5.1120 + c=skip_till_newline(c); 5.1121 + /* center next i lines */ 5.1122 + if (i>0) { 5.1123 +- out_html("<CENTER>\n"); 5.1124 ++ out_html("<div style=\"margin: 0 auto\">\n"); 5.1125 + while (i && *c) { 5.1126 + char *line=NULL; 5.1127 + c=scan_troff(c,1, &line); 5.1128 +- if (line && strncmp(line, "<BR>", 4)) { 5.1129 ++ if (line && strncmp(line, "<br>", 4)) { 5.1130 + out_html(line); 5.1131 +- out_html("<BR>\n"); 5.1132 ++ out_html("<br>\n"); 5.1133 + i--; 5.1134 + } 5.1135 + } 5.1136 +- out_html("</CENTER>\n"); 5.1137 ++ out_html("</div>\n"); 5.1138 + curpos=0; 5.1139 + } 5.1140 + break; 5.1141 +@@ -1906,7 +1876,7 @@ 5.1142 + if (!fillout) { 5.1143 + out_html(change_to_font(0)); 5.1144 + out_html(change_to_size('0')); 5.1145 +- out_html("</PRE>\n"); 5.1146 ++ out_html("</pre>\n"); 5.1147 + } 5.1148 + curpos=0; 5.1149 + fillout=1; 5.1150 +@@ -1981,7 +1951,7 @@ 5.1151 + if (fillout) { 5.1152 + out_html(change_to_font(0)); 5.1153 + out_html(change_to_size('0')); 5.1154 +- out_html("<PRE>\n"); 5.1155 ++ out_html("<pre>\n"); 5.1156 + } 5.1157 + curpos=0; 5.1158 + fillout=0; 5.1159 +@@ -2002,7 +1972,7 @@ 5.1160 + break; 5.1161 + case V('s','p'): 5.1162 + c=c+j; 5.1163 +- if (fillout) out_html("<P>"); else { 5.1164 ++ if (fillout) out_html("<p>"); else { 5.1165 + out_html(NEWLINE); 5.1166 + NEWLINE[0]='\n'; 5.1167 + } 5.1168 +@@ -2033,30 +2003,15 @@ 5.1169 + *c = 0; 5.1170 + scan_troff(h,1, &name); 5.1171 + if (name[3] == '/') h=name+3; else h=name; 5.1172 +-#if NOCGI 5.1173 +- if (!out_length) { 5.1174 +- char *t,*s; 5.1175 +- t=strrchr(fname, '/'); 5.1176 +- if (!t) t=fname; 5.1177 +- fprintf(stderr, "ln -s %s.html %s.html\n", h, t); 5.1178 +- s=strrchr(t, '.');if (!s) s=t; 5.1179 +- printf(CONTENTTYPE DOCTYPE); 5.1180 +- printf("<HTML><HEAD><TITLE> Man page of %s</TITLE>\n" 5.1181 +- "</HEAD><BODY>\n" 5.1182 +- "See the man page for <A HREF=\"%s.html\">%s</A>.\n" 5.1183 +- "</BODY></HTML>\n", 5.1184 +- s, h, h); 5.1185 +- } else 5.1186 +-#endif 5.1187 + { 5.1188 + /* this works alright, except for section 3 */ 5.1189 + if ((l = read_manpage_into_buffer(h, &buf)) < 0) { 5.1190 + fprintf(stderr, 5.1191 +- "man2html: unable to open or read file %s\n", h); 5.1192 +- out_html("<BLOCKQUOTE>" 5.1193 +- "man2html: unable to open or read file\n"); 5.1194 ++ _("man2html: unable to open or read file %s\n"), h); 5.1195 ++ out_html("<blockquote>"); 5.1196 ++ out_html(_("man2html: unable to open or read file\n")); 5.1197 + out_html(h); 5.1198 +- out_html("</BLOCKQUOTE>\n"); 5.1199 ++ out_html("</blockquote>\n"); 5.1200 + } else { 5.1201 + buf[0]=buf[l]='\n'; 5.1202 + buf[l+1]=buf[l+2]=0; 5.1203 +@@ -2085,7 +2040,7 @@ 5.1204 + #if 0 5.1205 + dl_down(); 5.1206 + #endif 5.1207 +- out_html("<BR>\n"); 5.1208 ++ out_html("<br>\n"); 5.1209 + c=c+j; 5.1210 + c=scan_expression(c, &j); 5.1211 + for (i=0; i<j; i++) out_html(" "); 5.1212 +@@ -2163,7 +2118,7 @@ 5.1213 + if (words) { 5.1214 + scan_troff(wordlist[0], 1,NULL); 5.1215 + } 5.1216 +- out_html("<DD>"); 5.1217 ++ out_html("<dd>"); 5.1218 + curpos = 0; 5.1219 + break; 5.1220 + case V('T','P'): 5.1221 +@@ -2172,7 +2127,7 @@ 5.1222 + /* somewhere a definition ends with '.TP' */ 5.1223 + if (!*c) still_dd=1; else { 5.1224 + c=scan_troff(c,1,NULL); 5.1225 +- out_html("<DD>"); 5.1226 ++ out_html("<dd>"); 5.1227 + } 5.1228 + curpos=0; 5.1229 + break; 5.1230 +@@ -2195,20 +2150,20 @@ 5.1231 + fprintf(idxfile,"\n"); 5.1232 + } 5.1233 + #endif 5.1234 +- out_html("<A NAME=\""); 5.1235 ++ out_html("<span id=\""); 5.1236 + out_html(idxlabel); 5.1237 + /* this will not work in mosaic (due to a bug). 5.1238 + ** Adding ' ' between '>' and '<' solves it, but creates 5.1239 + ** some space. A normal space does not work. 5.1240 + */ 5.1241 +- out_html("\"></A>"); 5.1242 ++ out_html("\"></span>"); 5.1243 + break; 5.1244 + case V('P',' '): 5.1245 + case V('P','\n'): 5.1246 + case V('L','P'): 5.1247 + case V('P','P'): 5.1248 + dl_end(); 5.1249 +- if (fillout) out_html("<P>\n"); else { 5.1250 ++ if (fillout) out_html("<p>\n"); else { 5.1251 + out_html(NEWLINE); 5.1252 + NEWLINE[0]='\n'; 5.1253 + } 5.1254 +@@ -2272,19 +2227,29 @@ 5.1255 + out_html(change_to_size(0)); 5.1256 + if (!fillout) { 5.1257 + fillout=1; 5.1258 +- out_html("</PRE>"); 5.1259 ++ out_html("</pre>"); 5.1260 + } 5.1261 + trans_char(c,'"', '\a'); 5.1262 + add_to_index(mode, c); 5.1263 +- out_html("<A NAME=\""); 5.1264 +- out_html(label); 5.1265 +- /* for mosaic users */ 5.1266 +- if (mode) out_html("\"> </A>\n<H3>"); 5.1267 +- else out_html("\"> </A>\n<H2>"); 5.1268 ++ 5.1269 ++ if (mode) { 5.1270 ++ out_html("<h3 id=\""); 5.1271 ++ out_html(label); 5.1272 ++ out_html("\">"); 5.1273 ++ } else { 5.1274 ++ out_html("</section>\n\n<section id=\""); 5.1275 ++ out_html(label); 5.1276 ++ out_html("\">\n<h2>"); 5.1277 ++ } 5.1278 ++ 5.1279 + mandoc_synopsis = (strncmp(c, "SYNOPSIS", 8) == 0); 5.1280 + c = (mandoc_command ? scan_troff_mandoc : scan_troff)(c,1,NULL); 5.1281 +- if (mode) out_html("</H3>\n"); 5.1282 +- else out_html("</H2>\n"); 5.1283 ++ 5.1284 ++ if (mode) 5.1285 ++ out_html("</h3>\n"); 5.1286 ++ else 5.1287 ++ out_html("</h2>\n"); 5.1288 ++ 5.1289 + curpos=0; 5.1290 + break; 5.1291 + case V('T','S'): 5.1292 +@@ -2315,7 +2280,7 @@ 5.1293 + int skip=0; 5.1294 + output_possible=1; 5.1295 + printf(CONTENTTYPE DOCTYPE); 5.1296 +- out_html("<HTML><HEAD><TITLE>Man page of "); 5.1297 ++ out_html("<html><head>\n<meta charset=\"UTF-8\">\n<title>"); 5.1298 + scan_troff(wordlist[0], 0, &t); 5.1299 + /* we need to remove all html tags */ 5.1300 + for (s=q=t; *s; s++) { 5.1301 +@@ -2324,11 +2289,14 @@ 5.1302 + else if (!skip) *q++ = *s; 5.1303 + } 5.1304 + *q = '\0'; 5.1305 +- out_html(t); 5.1306 ++ char buff[256]; 5.1307 ++ sprintf(buff, _("Man page of %s"), t); 5.1308 ++ out_html(buff); 5.1309 + free(t); 5.1310 +- out_html("</TITLE>\n</HEAD><BODY>\n<H1>"); 5.1311 ++ out_html("</title>\n<link rel=\"stylesheet\" href=\"?css\">\n</head><body>\n<header><h1>"); 5.1312 + scan_troff(wordlist[0], 0, NULL); 5.1313 +- out_html("</H1>\nSection: "); 5.1314 ++ out_html("</h1></header>\n<section>\n"); 5.1315 ++ out_html(_("Section: ")); 5.1316 + if (words>4) 5.1317 + scan_troff(wordlist[4], 0, NULL); 5.1318 + else 5.1319 +@@ -2336,14 +2304,17 @@ 5.1320 + out_html(" ("); 5.1321 + scan_troff(wordlist[1], 0, NULL); 5.1322 + if (words>2) { 5.1323 +- out_html(")<BR>Updated: "); 5.1324 ++ out_html(")<br>"); 5.1325 ++ out_html(_("Updated: ")); 5.1326 + scan_troff(wordlist[2], 1, NULL); 5.1327 + } else out_html(")"); 5.1328 +- out_html("<BR><A HREF=\"#index\">Index</A>\n"); 5.1329 ++ out_html("<br><a href=\"#index\">"); 5.1330 ++ out_html(_("Index")); 5.1331 ++ out_html("</a>\n"); 5.1332 + man_page_html(0,0); /* Return to Main Contents */ 5.1333 + *sl='\n'; 5.1334 +- out_html("<HR>\n"); 5.1335 +- if (mandoc_command) out_html("<BR>BSD mandoc<BR>"); 5.1336 ++ out_html("<hr>\n"); 5.1337 ++ if (mandoc_command) out_html("<br>\nBSD mandoc<br>"); 5.1338 + } 5.1339 + c = sl+1; 5.1340 + } else 5.1341 +@@ -2507,7 +2478,7 @@ 5.1342 + dl_newlevel_type(DL); 5.1343 + if (nl) 5.1344 + *nl = t; 5.1345 +- if (fillout) out_html("<P>\n"); else { 5.1346 ++ if (fillout) out_html("<p>\n"); else { 5.1347 + out_html(NEWLINE); 5.1348 + NEWLINE[0]='\n'; 5.1349 + } 5.1350 +@@ -2518,7 +2489,7 @@ 5.1351 + case V('E','l'): /* BSD mandoc */ 5.1352 + c=c+j; 5.1353 + dl_endlevel_type(); 5.1354 +- if (fillout) out_html("<P>\n"); else { 5.1355 ++ if (fillout) out_html("<p>\n"); else { 5.1356 + out_html(NEWLINE); 5.1357 + NEWLINE[0]='\n'; 5.1358 + } 5.1359 +@@ -2528,7 +2499,7 @@ 5.1360 + case V('I','t'): /* BSD mandoc */ 5.1361 + c=c+j; 5.1362 + if (dl_type(DL)) { 5.1363 +- out_html("<DT>"); 5.1364 ++ out_html("<dt>"); 5.1365 + out_html(change_to_font('B')); 5.1366 + if (*c == '\n') { 5.1367 + /* Don't allow embedded comms after a newline */ 5.1368 +@@ -2543,9 +2514,9 @@ 5.1369 + if (inXo) 5.1370 + still_dd = 1; 5.1371 + else 5.1372 +- out_html("<DD>"); 5.1373 ++ out_html("<dd>"); 5.1374 + } else if (dl_type(UL) || dl_type(OL)) { 5.1375 +- out_html("<LI>"); 5.1376 ++ out_html("<li>"); 5.1377 + c=scan_troff_mandoc(c,1,NULL); 5.1378 + out_html(NEWLINE); 5.1379 + } 5.1380 +@@ -2559,7 +2530,7 @@ 5.1381 + c=c+j; 5.1382 + if (inXo) { 5.1383 + if (still_dd) 5.1384 +- out_html("<DD>"); 5.1385 ++ out_html("<dd>"); 5.1386 + inXo = 0; 5.1387 + } 5.1388 + break; 5.1389 +@@ -2594,12 +2565,12 @@ 5.1390 + case V('D','l'): /* BSD mandoc */ 5.1391 + c=c+j; 5.1392 + out_html(NEWLINE); 5.1393 +- out_html("<BLOCKQUOTE>"); 5.1394 ++ out_html("<blockquote>"); 5.1395 + out_html(change_to_font('L')); 5.1396 + if (*c == '\n') c++; 5.1397 + c=scan_troff_mandoc(c, 1, NULL); 5.1398 + out_html(change_to_font('R')); 5.1399 +- out_html("</BLOCKQUOTE>"); 5.1400 ++ out_html("</blockquote>"); 5.1401 + if (fillout) curpos++; else curpos=0; 5.1402 + break; 5.1403 + case V('B','d'): /* BSD mandoc */ 5.1404 +@@ -2615,14 +2586,14 @@ 5.1405 + mandoc_bd_options = 0; /* Remember options for terminating Bl */ 5.1406 + if (strstr(c, "-offset indent")) { 5.1407 + mandoc_bd_options |= BD_INDENT; 5.1408 +- out_html("<BLOCKQUOTE>\n"); 5.1409 ++ out_html("<blockquote>\n"); 5.1410 + } 5.1411 + if (strstr(c, "-literal") || strstr(c, "-unfilled")) { 5.1412 + if (fillout) { 5.1413 + mandoc_bd_options |= BD_LITERAL; 5.1414 + out_html(change_to_font(0)); 5.1415 + out_html(change_to_size('0')); 5.1416 +- out_html("<PRE>\n"); 5.1417 ++ out_html("<pre>\n"); 5.1418 + } 5.1419 + curpos=0; 5.1420 + fillout=0; 5.1421 +@@ -2637,18 +2608,18 @@ 5.1422 + if (!fillout) { 5.1423 + out_html(change_to_font(0)); 5.1424 + out_html(change_to_size('0')); 5.1425 +- out_html("</PRE>\n"); 5.1426 ++ out_html("</pre>\n"); 5.1427 + } 5.1428 + } 5.1429 + if (mandoc_bd_options & BD_INDENT) 5.1430 +- out_html("</BLOCKQUOTE>\n"); 5.1431 ++ out_html("</blockquote>\n"); 5.1432 + curpos=0; 5.1433 + fillout=1; 5.1434 + c=skip_till_newline(c); 5.1435 + break; 5.1436 + case V('B','e'): /* BSD mandoc */ 5.1437 + c=c+j; 5.1438 +- if (fillout) out_html("<P>"); else { 5.1439 ++ if (fillout) out_html("<p>"); else { 5.1440 + out_html(NEWLINE); 5.1441 + NEWLINE[0]='\n'; 5.1442 + } 5.1443 +@@ -2715,7 +2686,7 @@ 5.1444 + if (fillout) curpos++; else curpos=0; 5.1445 + break; 5.1446 + case V('P','p'): /* BSD mandoc */ 5.1447 +- if (fillout) out_html("<P>\n"); else { 5.1448 ++ if (fillout) out_html("<p>\n"); else { 5.1449 + out_html(NEWLINE); 5.1450 + NEWLINE[0]='\n'; 5.1451 + } 5.1452 +@@ -2726,9 +2697,9 @@ 5.1453 + trans_char(c,'"','\a'); 5.1454 + c=c+j; 5.1455 + if (*c == '\n') c++; 5.1456 +- out_html("``"); 5.1457 ++ out_html("“"); 5.1458 + c=scan_troff_mandoc(c, 1, NULL); 5.1459 +- out_html("''"); 5.1460 ++ out_html("”"); 5.1461 + out_html(NEWLINE); 5.1462 + if (fillout) curpos++; else curpos=0; 5.1463 + break; 5.1464 +@@ -2800,12 +2771,22 @@ 5.1465 + trans_char(c,'"','\a'); 5.1466 + c=c+j; 5.1467 + if (*c == '\n') c++; 5.1468 +- out_html("`"); 5.1469 ++ out_html("‘"); 5.1470 + c=scan_troff_mandoc(c, 1, NULL); 5.1471 +- out_html("'"); 5.1472 ++ out_html("’"); 5.1473 + out_html(NEWLINE); 5.1474 + if (fillout) curpos++; else curpos=0; 5.1475 + break; 5.1476 ++ case V('A','q'): /* BSD mandoc */ 5.1477 ++ trans_char(c,'"','\a'); 5.1478 ++ c=c+j; 5.1479 ++ if (*c == '\n') c++; 5.1480 ++ out_html("⟨"); 5.1481 ++ c=scan_troff_mandoc(c, 1, NULL); 5.1482 ++ out_html("⟩"); 5.1483 ++ out_html(NEWLINE); 5.1484 ++ if (fillout) curpos++; else curpos=0; 5.1485 ++ break; 5.1486 + case V('A','r'): /* BSD mandoc */ 5.1487 + /* parse one line in italics */ 5.1488 + out_html(change_to_font('I')); 5.1489 +@@ -2855,7 +2836,7 @@ 5.1490 + */ 5.1491 + static int count = 0; /* Don't break on the first Nm */ 5.1492 + if (count) { 5.1493 +- out_html("<BR>"); 5.1494 ++ out_html("<br>"); 5.1495 + } else { 5.1496 + char *end, t=0 /* just for gcc */; 5.1497 + end = strchr(c, '\n'); 5.1498 +@@ -3038,7 +3019,7 @@ 5.1499 + if (h[-1] == '\n' && still_dd && isalnum(*h)) { 5.1500 + /* sometimes a .HP request is not followed by a .br request */ 5.1501 + FLUSHIBP; 5.1502 +- out_html("<DD>"); 5.1503 ++ out_html("<dd>"); 5.1504 + curpos=0; 5.1505 + still_dd=0; 5.1506 + } 5.1507 +@@ -3108,12 +3089,12 @@ 5.1508 + curpos++; 5.1509 + } 5.1510 + } else { 5.1511 +- out_html("<TT>"); 5.1512 ++ out_html("<tt>"); 5.1513 + while (curpos < tabstops[curtab]) { 5.1514 + out_html(" "); 5.1515 + curpos++; 5.1516 + } 5.1517 +- out_html("</TT>"); 5.1518 ++ out_html("</tt>"); 5.1519 + } 5.1520 + } 5.1521 + } 5.1522 +@@ -3122,7 +3103,7 @@ 5.1523 + if (*h == ' ' && (h[-1] == '\n' || usenbsp)) { 5.1524 + FLUSHIBP; 5.1525 + if (!usenbsp && fillout) { 5.1526 +- out_html("<BR>"); 5.1527 ++ out_html("<br>"); 5.1528 + curpos=0; 5.1529 + } 5.1530 + usenbsp=fillout; 5.1531 +@@ -3196,13 +3177,13 @@ 5.1532 + 5.1533 + switch(status) { 5.1534 + case 403: 5.1535 +- printf("Status: 403 Forbidden\n"); 5.1536 ++ printf("HTTP/1.1 403 Forbidden\n"); 5.1537 + break; 5.1538 + case 404: 5.1539 +- printf("Status: 404 Not Found\n"); 5.1540 ++ printf("HTTP/1.1 404 Not Found\n"); 5.1541 + break; 5.1542 + case 500: 5.1543 +- printf("Status: 500 Internal Server Error\n"); 5.1544 ++ printf("HTTP/1.1 500 Internal Server Error\n"); 5.1545 + break; 5.1546 + case 0: 5.1547 + default: 5.1548 +@@ -3210,12 +3191,13 @@ 5.1549 + } 5.1550 + 5.1551 + printf(CONTENTTYPE DOCTYPE); 5.1552 +- printf("<HTML><HEAD><TITLE>%s</TITLE></HEAD>\n" 5.1553 +- "<BODY>\n<H1>%s</H1>\n", s, s); 5.1554 ++ printf("<html>\n<head>\n<meta charset=\"UTF-8\">\n<title>%s</title>\n" 5.1555 ++ "<link rel=\"stylesheet\" href=\"?css\">\n</head>\n" 5.1556 ++ "<body>\n<header><h1>%s</h1></header>\n<section>\n", s, s); 5.1557 + va_start(p, t); 5.1558 + vfprintf(stdout, t, p); 5.1559 + va_end(p); 5.1560 +- printf("</BODY></HTML>\n"); 5.1561 ++ printf("</section>\n</body></html>\n"); 5.1562 + exit(0); 5.1563 + } 5.1564 + 5.1565 +@@ -3223,8 +3205,8 @@ 5.1566 + xstrdup(const char *s) { 5.1567 + char *p = strdup(s); 5.1568 + if (p == NULL) 5.1569 +- error_page(500, "Out of memory", 5.1570 +- "Sorry, out of memory, aborting...\n"); 5.1571 ++ error_page(500, _("Out of memory"), 5.1572 ++ _("Sorry, out of memory, aborting...\n")); 5.1573 + return p; 5.1574 + } 5.1575 + 5.1576 +@@ -3232,8 +3214,8 @@ 5.1577 + xmalloc(size_t size) { 5.1578 + void *p = malloc(size); 5.1579 + if (p == NULL) 5.1580 +- error_page(500, "Out of memory", 5.1581 +- "Sorry, out of memory, aborting...\n"); 5.1582 ++ error_page(500, _("Out of memory"), 5.1583 ++ _("Sorry, out of memory, aborting...\n")); 5.1584 + return p; 5.1585 + } 5.1586 + 5.1587 +@@ -3241,16 +3223,16 @@ 5.1588 + xrealloc(void *ptr, size_t size) { 5.1589 + void *p = realloc(ptr,size); 5.1590 + if (p == NULL) 5.1591 +- error_page(500, "Out of memory", 5.1592 +- "Sorry, out of memory, aborting...\n"); 5.1593 ++ error_page(500, _("Out of memory"), 5.1594 ++ _("Sorry, out of memory, aborting...\n")); 5.1595 + return p; 5.1596 + } 5.1597 + 5.1598 + static void 5.1599 + usage(void) { 5.1600 +- error_page(500, "man2html: bad invocation", 5.1601 +- "Call: man2html [-l|-h host.domain:port] [-p|-q] [filename]\n" 5.1602 +- "or: man2html -r [filename]\n"); 5.1603 ++ error_page(500, _("man2html: bad invocation"), 5.1604 ++ _("Call: man2html [-l|-h host.domain:port] [-p|-q] [filename]\n" 5.1605 ++ "or: man2html -r [filename]\n")); 5.1606 + } 5.1607 + 5.1608 + static void 5.1609 +@@ -3273,7 +3255,7 @@ 5.1610 + } 5.1611 + #if 0 5.1612 + else /* complain or not - this need not be fatal */ 5.1613 +- error_page("Error", "man2html: could not chdir to %s", s); 5.1614 ++ error_page(_("Error"), _("man2html: could not chdir to %s"), s); 5.1615 + #endif 5.1616 + } 5.1617 + } 5.1618 +@@ -3291,6 +3273,11 @@ 5.1619 + */ 5.1620 + int 5.1621 + main(int argc, char **argv) { 5.1622 ++ setlocale (LC_ALL, ""); 5.1623 ++ bindtextdomain (GETTEXT_PACKAGE, "/usr/share/locale"); 5.1624 ++ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); 5.1625 ++ textdomain (GETTEXT_PACKAGE); 5.1626 ++ 5.1627 + int l, c; 5.1628 + char *buf, *filename, *fnam = NULL; 5.1629 + 5.1630 +@@ -3309,7 +3296,7 @@ 5.1631 + case 'D': 5.1632 + goto_dir(optarg, 0, 0); break; 5.1633 + case 'E': 5.1634 +- error_page(0, "Error", "%s", optarg); break; 5.1635 ++ error_page(0, _("Error"), "%s", optarg); break; 5.1636 + case 'h': 5.1637 + set_cgibase("localhost"); break; 5.1638 + case 'H': 5.1639 +@@ -3362,7 +3349,7 @@ 5.1640 + 5.1641 + l = read_manpage_into_buffer(fnam, &buf); 5.1642 + if (l < 0) 5.1643 +- error_page(404, "File not found", "Could not open %s\n", fname); 5.1644 ++ error_page(404, _("File not found"), _("Could not open %s\n"), fname); 5.1645 + 5.1646 + buf[0] = '\n'; 5.1647 + buf[l+1] = '\n'; 5.1648 +@@ -3379,34 +3366,34 @@ 5.1649 + out_html(change_to_size(0)); 5.1650 + if (!fillout) { 5.1651 + fillout=1; 5.1652 +- out_html("</PRE>"); 5.1653 ++ out_html("</pre>"); 5.1654 + } 5.1655 + out_html(NEWLINE); 5.1656 + if (output_possible) { 5.1657 + /* for mosaic users */ 5.1658 + if (manidx) { 5.1659 +- printf("<HR>\n<A NAME=\"index\"> </A><H2>Index</H2>\n<DL>\n"); 5.1660 ++ printf("</section>\n\n<section id=\"index\">\n<h2>%s</h2>\n\n<dl>\n", _("Index")); 5.1661 + manidx[mip]=0; 5.1662 + printf("%s", manidx); 5.1663 +- if (subs) printf("</DL>\n"); 5.1664 +- printf("</DL>\n"); 5.1665 ++ if (subs) printf("</dl>\n"); 5.1666 ++ printf("</dl>\n"); 5.1667 + } 5.1668 + print_sig(); 5.1669 +- printf("</BODY>\n</HTML>\n"); 5.1670 ++ printf("</body>\n</html>\n"); 5.1671 + } else { 5.1672 + if (!filename) 5.1673 + filename = fname; 5.1674 + if (*filename == '/') 5.1675 +- error_page(403, "Invalid Man Page", 5.1676 +- "The requested file %s is not a valid (unformatted) " 5.1677 ++ error_page(403, _("Invalid Man Page"), 5.1678 ++ _("The requested file %s is not a valid (unformatted) " 5.1679 + "man page.\nIf the file is a formatted man page, " 5.1680 + "you could try to load the\n" 5.1681 +- "<A HREF=\"file://%s\">plain file</A>.\n", 5.1682 ++ "<a href=\"file://%s\">plain file</a>.\n"), 5.1683 + filename, filename); 5.1684 + else 5.1685 +- error_page(403, "Invalid Man Page", 5.1686 +- "The requested file %s is not a valid (unformatted) " 5.1687 +- "man page.", filename); 5.1688 ++ error_page(403, _("Invalid Man Page"), 5.1689 ++ _("The requested file %s is not a valid (unformatted) " 5.1690 ++ "man page."), filename); 5.1691 + } 5.1692 + if (idxfile) 5.1693 + fclose(idxfile); 5.1694 +--- a/scripts/cgi-bin/man/man2html 5.1695 ++++ b/scripts/cgi-bin/man/man2html 5.1696 +@@ -8,11 +8,11 @@ 5.1697 + 5.1698 + # Do we need lynxcgi URLs? For the moment our criterion is 5.1699 + # 1) HTTP_USER_AGENT=Lynx* and 2) HTTP_HOST is unset. 5.1700 +-AGENT="${HTTP_USER_AGENT-unknown}" 5.1701 ++AGENT="${HTTP_USER_AGENT:-unknown}" 5.1702 + 5.1703 + case "$AGENT" in 5.1704 + Lynx*|lynx*) 5.1705 +- HH="${HTTP_HOST-nohh}" 5.1706 ++ HH="${HTTP_HOST:-nohh}" 5.1707 + SED="s/%lynx //" 5.1708 + ;; 5.1709 + *) 5.1710 +@@ -21,7 +21,7 @@ 5.1711 + ;; 5.1712 + esac 5.1713 + 5.1714 +-SERVER="${SERVER_NAME-localhost}" 5.1715 ++SERVER="${SERVER_NAME:-localhost}" 5.1716 + case "$HH" in 5.1717 + nohh) 5.1718 + LL="-l" 5.1719 +--- a/scripts/cgi-bin/man/mansearch 5.1720 ++++ b/scripts/cgi-bin/man/mansearch 5.1721 +@@ -7,11 +7,11 @@ 5.1722 + 5.1723 + # Do we need lynxcgi URLs? For the moment our criterion is 5.1724 + # 1) HTTP_USER_AGENT=Lynx* and 2) HTTP_HOST is unset. 5.1725 +-AGENT="${HTTP_USER_AGENT-unknown}" 5.1726 ++AGENT="${HTTP_USER_AGENT:-unknown}" 5.1727 + 5.1728 + case "$AGENT" in 5.1729 + Lynx*|lynx*) 5.1730 +- HH="${HTTP_HOST-nohh}" 5.1731 ++ HH="${HTTP_HOST:-nohh}" 5.1732 + SED="s/%lynx //" 5.1733 + ;; 5.1734 + *) 5.1735 +@@ -20,7 +20,7 @@ 5.1736 + ;; 5.1737 + esac 5.1738 + 5.1739 +-SERVER="${SERVER_NAME-localhost}" 5.1740 ++SERVER="${SERVER_NAME:-localhost}" 5.1741 + case "$HH" in 5.1742 + nohh) 5.1743 + CG="lynxcgi:/usr/lib/cgi-bin/man" 5.1744 +--- a/scripts/cgi-bin/man/mansearchhelp 5.1745 ++++ b/scripts/cgi-bin/man/mansearchhelp 5.1746 +@@ -4,17 +4,17 @@ 5.1747 + 5.1748 + # Do we need lynxcgi URLs? For the moment our criterion is 5.1749 + # 1) HTTP_USER_AGENT=Lynx* and 2) HTTP_HOST is unset. 5.1750 +-AGENT="${HTTP_USER_AGENT-unknown}" 5.1751 ++AGENT="${HTTP_USER_AGENT:-unknown}" 5.1752 + case "$AGENT" in 5.1753 + Lynx*|lynx*) 5.1754 +- HH="${HTTP_HOST-nohh}" 5.1755 ++ HH="${HTTP_HOST:-nohh}" 5.1756 + ;; 5.1757 + *) 5.1758 + HH=nolynx 5.1759 + ;; 5.1760 + esac 5.1761 + 5.1762 +-SERVER="${SERVER_NAME-localhost}" 5.1763 ++SERVER="${SERVER_NAME:-localhost}" 5.1764 + case "$HH" in 5.1765 + nohh) 5.1766 + CG="lynxcgi:/usr/lib/cgi-bin/man" 5.1767 +--- a/strdefs.c 5.1768 ++++ b/strdefs.c 5.1769 +@@ -27,266 +27,333 @@ 5.1770 + { V('.','V'), 1, 0, NULL }, /* the me package tests for this */ 5.1771 + { 0, 0, 0, NULL } }; 5.1772 + 5.1773 ++ 5.1774 ++/* Characters written according to http://mdocml.bsd.lv/man/mandoc_char.7.html */ 5.1775 ++ 5.1776 + static STRDEF standardstring[] = { 5.1777 +- { V('<','='), 2, "<=", NULL }, /* less equal */ 5.1778 +- { V('>','='), 2, ">=;", NULL }, /* greather equal */ 5.1779 +- { V('A','m'), 1, "&", NULL }, /* infinity */ 5.1780 +- { V('B','a'), 1, "|", NULL }, /* vartical bar */ 5.1781 +- { V('G','e'), 2, ">=;", NULL }, /* greather equal */ 5.1782 +- { V('G','t'), 1, ">", NULL }, /* greather than */ 5.1783 +- { V('I','f'), 1, "∞", NULL }, /* infinity */ 5.1784 +- { V('L','e'), 2, "<=", NULL }, /* less equal */ 5.1785 +- { V('L','q'), 1, "“", NULL }, /* left double quote */ 5.1786 +- { V('L','t'), 1, "<", NULL }, /* less than */ 5.1787 +- { V('N','a'), 3, "NaN", NULL }, /* not a number */ 5.1788 +- { V('N','e'), 2, "!=", NULL }, /* not equal */ 5.1789 +- { V('P','i'), 2, "Pi", NULL }, /* pi */ 5.1790 +- { V('P','m'), 1, "±", NULL }, /* plus minus */ 5.1791 +- { V('R',' '), 1, "®", NULL }, 5.1792 +- { V('R','q'), 1, "”", NULL }, /* right double quote */ 5.1793 +- { V('a','a'), 1, "'", NULL }, /* accute accent */ 5.1794 +- { V('g','a'), 1, "`", NULL }, /* grave accent */ 5.1795 +- { V('l','q'), 2, "``", NULL }, 5.1796 +- { V('q',' '), 1, """, NULL }, /* straight double quote */ 5.1797 +- { V('r','q'), 2, "''", NULL }, 5.1798 +- { V('u','a'), 1, "^", NULL }, /* upwards arrow */ 5.1799 ++ { V('<','='), 1, "≤", NULL }, /* less-than-equal */ 5.1800 ++ { V('>','='), 1, "≥", NULL }, /* greater-than-equal */ 5.1801 ++ { V('A','i'), 4, "ANSI", NULL }, /* ANSI standard name */ 5.1802 ++ { V('A','m'), 1, "&", NULL }, /* ampersand */ 5.1803 ++ { V('B','a'), 1, "|", NULL }, /* vertical bar */ 5.1804 ++ { V('G','e'), 1, "≥", NULL }, /* greater-than-equal */ 5.1805 ++ { V('G','t'), 1, ">", NULL }, /* greater-than */ 5.1806 ++ { V('I','f'), 8, "infinity", NULL }, /* infinity */ 5.1807 ++ { V('L','e'), 1, "≤", NULL }, /* less-than-equal */ 5.1808 ++ { V('L','q'), 1, "“", NULL }, /* left-double-quote */ 5.1809 ++ { V('L','t'), 1, "<", NULL }, /* less-than */ 5.1810 ++ { V('N','a'), 3, "NaN", NULL }, /* NaN */ 5.1811 ++ { V('N','e'), 1, "≠", NULL }, /* not equal */ 5.1812 ++ { V('P','i'), 2, "pi", NULL }, /* pi */ 5.1813 ++ { V('P','m'), 1, "±", NULL }, /* plus-minus */ 5.1814 ++ { V('P','x'), 5, "POSIX", NULL }, /* POSIX standard name */ 5.1815 ++ { V('R',' '), 1, "®", NULL }, /* restricted mark */ 5.1816 ++ { V('R','q'), 1, "”", NULL }, /* right-double-quote */ 5.1817 ++ { V('T','m'), 4, "(Tm)", NULL }, /* trade mark */ 5.1818 ++ { V('a','a'), 1, "´", NULL }, /* acute */ 5.1819 ++ { V('g','a'), 1, "`", NULL }, /* grave */ 5.1820 ++ { V('l','p'), 1, "(", NULL }, /* left-parenthesis */ 5.1821 ++ { V('l','q'), 1, "“", NULL }, /* left double-quote */ 5.1822 ++ { V('q',' '), 1, """, NULL }, /* double-quote */ 5.1823 ++ { V('r','p'), 1, ")", NULL }, /* right-parenthesis */ 5.1824 ++ { V('r','q'), 1, "”", NULL }, /* right double-quote */ 5.1825 ++ { V('u','a'), 1, "↑", NULL }, /* up-arrow */ 5.1826 ++ { V('v','a'), 1, "↕", NULL }, /* up-down arrow */ 5.1827 + { 0, 0, NULL, NULL} 5.1828 + }; 5.1829 + 5.1830 + static STRDEF standardchar[] = { 5.1831 +- { V('*','*'), 1, "*", NULL }, /* math star */ 5.1832 +- { V('*','A'), 1, "Α", NULL }, 5.1833 +- { V('*','B'), 1, "Β", NULL }, 5.1834 +- { V('*','C'), 1, "Ξ", NULL }, 5.1835 +- { V('*','D'), 1, "Δ", NULL }, 5.1836 +- { V('*','E'), 1, "Ε", NULL }, 5.1837 +- { V('*','F'), 1, "Φ", NULL }, 5.1838 +- { V('*','G'), 1, "Γ", NULL }, 5.1839 +- { V('*','H'), 1, "Θ", NULL }, 5.1840 +- { V('*','I'), 1, "Ι", NULL }, 5.1841 +- { V('*','K'), 1, "Κ", NULL }, 5.1842 +- { V('*','L'), 1, "Λ", NULL }, 5.1843 +- { V('*','M'), 1, "Μ", NULL }, 5.1844 +- { V('*','N'), 1, "Ν", NULL }, 5.1845 +- { V('*','O'), 1, "Ο", NULL }, 5.1846 +- { V('*','P'), 1, "Π", NULL }, 5.1847 +- { V('*','Q'), 1, "Ψ", NULL }, 5.1848 +- { V('*','R'), 1, "Ρ", NULL }, 5.1849 +- { V('*','S'), 1, "Σ", NULL }, 5.1850 +- { V('*','T'), 1, "Τ", NULL }, 5.1851 +- { V('*','U'), 1, "Υ", NULL }, 5.1852 +- { V('*','W'), 1, "Ω", NULL }, 5.1853 +- { V('*','X'), 1, "Χ", NULL }, 5.1854 +- { V('*','Y'), 1, "Η", NULL }, 5.1855 +- { V('*','Z'), 1, "Ζ", NULL }, 5.1856 +- { V('*','a'), 1, "α", NULL }, 5.1857 +- { V('*','b'), 1, "β", NULL }, 5.1858 +- { V('*','c'), 1, "ξ", NULL }, 5.1859 +- { V('*','d'), 1, "δ", NULL }, 5.1860 +- { V('*','e'), 1, "ε", NULL }, 5.1861 +- { V('*','f'), 1, "φ", NULL }, 5.1862 +- { V('*','g'), 1, "γ", NULL }, 5.1863 +- { V('*','h'), 1, "θ", NULL }, 5.1864 +- { V('*','i'), 1, "ι", NULL }, 5.1865 +- { V('*','k'), 1, "κ", NULL }, 5.1866 +- { V('*','l'), 1, "λ", NULL }, 5.1867 +- { V('*','m'), 1, "μ", NULL }, 5.1868 +- { V('*','n'), 1, "ν", NULL }, 5.1869 +- { V('*','o'), 1, "ο", NULL }, 5.1870 +- { V('*','p'), 1, "π", NULL }, 5.1871 +- { V('*','q'), 1, "ψ", NULL }, 5.1872 +- { V('*','r'), 1, "ρ", NULL }, 5.1873 +- { V('*','s'), 1, "σ", NULL }, 5.1874 +- { V('*','t'), 1, "τ", NULL }, 5.1875 +- { V('*','u'), 1, "υ", NULL }, 5.1876 +- { V('*','w'), 1, "ω", NULL }, 5.1877 +- { V('*','x'), 1, "χ", NULL }, 5.1878 +- { V('*','y'), 1, "η", NULL }, 5.1879 +- { V('*','z'), 1, "ζ", NULL }, 5.1880 +- { V('\'','A'), 1, "Á", NULL }, 5.1881 +- { V('\'','E'), 1, "É", NULL }, 5.1882 +- { V('\'','I'), 1, "Í", NULL }, 5.1883 +- { V('\'','O'), 1, "Ó", NULL }, 5.1884 +- { V('\'','U'), 1, "Ú", NULL }, 5.1885 +- { V('\'','Y'), 1, "Ý", NULL }, 5.1886 +- { V('\'','a'), 1, "á", NULL }, 5.1887 +- { V('\'','e'), 1, "é", NULL }, 5.1888 +- { V('\'','i'), 1, "í", NULL }, 5.1889 +- { V('\'','o'), 1, "ó", NULL }, 5.1890 +- { V('\'','u'), 1, "ú", NULL }, 5.1891 +- { V('\'','y'), 1, "ý", NULL }, 5.1892 +- { V('!','='), 1, "≠", NULL }, 5.1893 +- { V('%','0'), 1, "‰", NULL }, 5.1894 +- { V('+','-'), 1, "±", NULL }, 5.1895 +- { V(',','C'), 1, "Ç", NULL }, 5.1896 +- { V(',','c'), 1, "ç", NULL }, 5.1897 +- { V('-','>'), 1, "→", NULL }, 5.1898 +- { V('-','D'), 1, "Ð", NULL }, 5.1899 +- { V('.','i'), 1, "ı", NULL }, 5.1900 +- { V('/','L'), 1, "Ł", NULL }, 5.1901 +- { V('/','O'), 1, "Ø", NULL }, 5.1902 +- { V('/','l'), 1, "ł", NULL }, 5.1903 +- { V('/','o'), 1, "ø", NULL }, 5.1904 +- { V('1','2'), 1, "½", NULL }, 5.1905 +- { V('1','4'), 1, "¼", NULL }, 5.1906 +- { V('3','4'), 1, "¾", NULL }, 5.1907 +- { V(':','A'), 1, "Ä", NULL }, 5.1908 +- { V(':','E'), 1, "Ë", NULL }, 5.1909 +- { V(':','I'), 1, "Ï", NULL }, 5.1910 +- { V(':','O'), 1, "Ö", NULL }, 5.1911 +- { V(':','U'), 1, "Ü", NULL }, 5.1912 +- { V(':','a'), 1, "ä", NULL }, 5.1913 +- { V(':','e'), 1, "ë", NULL }, 5.1914 +- { V(':','i'), 1, "ï", NULL }, 5.1915 +- { V(':','o'), 1, "ö", NULL }, 5.1916 +- { V(':','u'), 1, "ü", NULL }, 5.1917 +- { V(':','y'), 1, "ÿ", NULL }, 5.1918 +- { V('<','-'), 1, "←", NULL }, 5.1919 +- { V('<','='), 1, "≤", NULL }, 5.1920 +- { V('<','>'), 1, "↔", NULL }, 5.1921 +- { V('=','='), 1, "≡", NULL }, 5.1922 +- { V('=','~'), 1, "≅", NULL }, 5.1923 +- { V('>','='), 1, "≥", NULL }, 5.1924 +- { V('A','E'), 1, "Æ", NULL }, 5.1925 +- { V('A','h'), 1, "&alepfsym;", NULL }, 5.1926 +- { V('C','R'), 1, "␍", NULL }, 5.1927 +- { V('C','s'), 1, "¤", NULL }, 5.1928 +- { V('D','o'), 1, "$", NULL }, 5.1929 +- { V('E','u'), 1, "€", NULL }, 5.1930 +- { V('F','c'), 1, "»", NULL }, 5.1931 +- { V('F','i'), 3, "ffi", NULL }, 5.1932 +- { V('F','l'), 3, "ffl", NULL }, 5.1933 +- { V('F','o'), 1, "«", NULL }, 5.1934 +- { V('O','E'), 1, "Œ", NULL }, 5.1935 +- { V('P','o'), 1, "£", NULL }, 5.1936 +- { V('S','1'), 1, "¹", NULL }, 5.1937 +- { V('S','2'), 1, "²", NULL }, 5.1938 +- { V('S','3'), 1, "³", NULL }, 5.1939 +- { V('S','d'), 1, "ð", NULL }, 5.1940 +- { V('T','P'), 1, "Þ", NULL }, 5.1941 +- { V('T','p'), 1, "þ", NULL }, 5.1942 +- { V('Y','e'), 1, "¥", NULL }, 5.1943 +- { V('^','A'), 1, "Â", NULL }, 5.1944 +- { V('^','E'), 1, "Ê", NULL }, 5.1945 +- { V('^','I'), 1, "Î", NULL }, 5.1946 +- { V('^','O'), 1, "Ô", NULL }, 5.1947 +- { V('^','U'), 1, "Û", NULL }, 5.1948 +- { V('^','a'), 1, "â", NULL }, 5.1949 +- { V('^','e'), 1, "ê", NULL }, 5.1950 +- { V('^','i'), 1, "î", NULL }, 5.1951 +- { V('^','o'), 1, "ô", NULL }, 5.1952 +- { V('^','u'), 1, "û", NULL }, 5.1953 +- { V('`','A'), 1, "À", NULL }, 5.1954 +- { V('`','E'), 1, "È", NULL }, 5.1955 +- { V('`','I'), 1, "Ì", NULL }, 5.1956 +- { V('`','O'), 1, "Ò", NULL }, 5.1957 +- { V('`','U'), 1, "Ù", NULL }, 5.1958 +- { V('`','a'), 1, "à", NULL }, 5.1959 +- { V('`','e'), 1, "è", NULL }, 5.1960 +- { V('`','i'), 1, "ì", NULL }, 5.1961 +- { V('`','o'), 1, "ò", NULL }, 5.1962 +- { V('`','u'), 1, "ù", NULL }, 5.1963 +- { V('a','a'), 1, "´", NULL }, 5.1964 +- { V('a','e'), 1, "æ", NULL }, 5.1965 +- { V('a','p'), 1, "≈", NULL }, 5.1966 +- { V('a','q'), 1, "'", NULL }, 5.1967 +- { V('a','t'), 1, "@", NULL }, 5.1968 +- { V('a','~'), 1, "~", NULL }, 5.1969 +- { V('b','a'), 1, "|", NULL }, 5.1970 +- { V('b','b'), 1, "|", NULL }, 5.1971 +- { V('b','r'), 1, "|", NULL }, 5.1972 +- { V('b','r'), 1, "|", NULL }, 5.1973 +- { V('b','u'), 1, "•", NULL }, 5.1974 +- { V('b','v'), 1, "|", NULL }, 5.1975 +- { V('c','*'), 1, "⊗", NULL }, 5.1976 +- { V('c','+'), 1, "⊕", NULL }, 5.1977 +- { V('c','i'), 1, "○", NULL }, 5.1978 +- { V('c','o'), 1, "©", NULL }, 5.1979 +- { V('c','q'), 1, "'", NULL }, 5.1980 +- { V('c','t'), 1, "¢", NULL }, 5.1981 +- { V('d','A'), 1, "⇓", NULL }, 5.1982 +- { V('d','a'), 1, "↓", NULL }, 5.1983 +- { V('d','d'), 1, "=", NULL }, 5.1984 +- { V('d','e'), 1, "°", NULL }, 5.1985 +- { V('d','g'), 1, "-", NULL }, 5.1986 +- { V('d','i'), 1, "÷", NULL }, 5.1987 +- { V('d','q'), 1, """, NULL }, 5.1988 +- { V('e','m'), 3, "---", NULL }, /* em dash */ 5.1989 +- { V('e','n'), 1, "-", NULL }, /* en dash */ 5.1990 +- { V('e','q'), 1, "=", NULL }, 5.1991 +- { V('e','s'), 1, "Ø", NULL }, 5.1992 +- { V('e','u'), 1, "€", NULL }, 5.1993 +- { V('f','/'), 1, "⁄", NULL }, 5.1994 +- { V('f','c'), 1, "›", NULL }, 5.1995 +- { V('f','f'), 2, "ff", NULL }, 5.1996 +- { V('f','i'), 2, "fi", NULL }, 5.1997 +- { V('f','l'), 2, "fl", NULL }, 5.1998 +- { V('f','m'), 1, "´", NULL }, 5.1999 +- { V('f','o'), 1, "‹", NULL }, 5.2000 +- { V('g','a'), 1, "`", NULL }, 5.2001 +- { V('h','A'), 1, "⇔", NULL }, 5.2002 +- { V('h','y'), 1, "-", NULL }, 5.2003 +- { V('i','f'), 1, "∞", NULL }, 5.2004 +- { V('i','s'), 8, "Integral", NULL }, /* integral sign */ 5.2005 +- { V('l','A'), 1, "⇐", NULL }, 5.2006 +- { V('l','B'), 1, "[", NULL }, 5.2007 +- { V('l','C'), 1, "{", NULL }, 5.2008 +- { V('l','a'), 1, "<", NULL }, 5.2009 +- { V('l','b'), 1, "[", NULL }, 5.2010 +- { V('l','c'), 2, "|¯", NULL }, 5.2011 +- { V('l','f'), 2, "|_", NULL }, 5.2012 +- { V('l','h'), 1, "☚", NULL }, 5.2013 +- { V('l','k'), 1, "<FONT SIZE=\"+2\">{</FONT>", NULL }, 5.2014 +- { V('l','q'), 1, "\"", NULL }, 5.2015 +- { V('l','z'), 1, "◊", NULL }, 5.2016 +- { V('m','c'), 1, "µ", NULL }, 5.2017 +- { V('m','i'), 1, "-", NULL }, 5.2018 +- { V('m','u'), 1, "×", NULL }, 5.2019 +- { V('n','o'), 1, "¬", NULL }, 5.2020 +- { V('o','A'), 1, "Å", NULL }, 5.2021 +- { V('o','a'), 1, "å", NULL }, 5.2022 +- { V('o','e'), 1, "œ", NULL }, 5.2023 +- { V('o','q'), 1, "'", NULL }, 5.2024 +- { V('o','r'), 1, "|", NULL }, 5.2025 +- { V('p','d'), 1, "d", NULL }, /* partial derivative */ 5.2026 +- { V('p','l'), 1, "+", NULL }, 5.2027 +- { V('p','s'), 1, "¶", NULL }, 5.2028 +- { V('r','!'), 1, "¡", NULL }, 5.2029 +- { V('r','?'), 1, "¿", NULL }, 5.2030 +- { V('r','A'), 1, "⇒", NULL }, 5.2031 +- { V('r','B'), 1, "]", NULL }, 5.2032 +- { V('r','C'), 1, "}", NULL }, 5.2033 +- { V('r','a'), 1, ">", NULL }, 5.2034 +- { V('r','c'), 2, "¯|", NULL }, 5.2035 +- { V('r','f'), 2, "_|", NULL }, 5.2036 +- { V('r','g'), 1, "®", NULL }, 5.2037 +- { V('r','h'), 1, "☛", NULL }, 5.2038 +- { V('r','k'), 1, "<FONT SIZE=\"+2\">}</FONT>", NULL }, 5.2039 +- { V('r','n'), 1, "¯", NULL }, 5.2040 +- { V('r','q'), 1, "\"", NULL }, 5.2041 +- { V('r','s'), 1, "\\", NULL }, 5.2042 +- { V('r','u'), 1, "_", NULL }, 5.2043 +- { V('s','c'), 1, "§", NULL }, 5.2044 +- { V('s','h'), 1, "#", NULL }, 5.2045 +- { V('s','l'), 1, "/", NULL }, 5.2046 +- { V('s','q'), 1, "□", NULL }, 5.2047 +- { V('s','s'), 1, "ß", NULL }, 5.2048 +- { V('t','f'), 1, "∴", NULL }, 5.2049 +- { V('t','i'), 1, "~", NULL }, 5.2050 +- { V('t','m'), 1, "™", NULL }, 5.2051 +- { V('t','s'), 1, "s", NULL }, /* should be terminal sigma */ 5.2052 +- { V('u','A'), 1, "⇑", NULL }, 5.2053 +- { V('u','a'), 1, "↑", NULL }, 5.2054 +- { V('u','l'), 1, "_", NULL }, 5.2055 +- { V('~','A'), 1, "Ã", NULL }, 5.2056 +- { V('~','N'), 1, "Ñ", NULL }, 5.2057 +- { V('~','O'), 1, "Õ", NULL }, 5.2058 +- { V('~','a'), 1, "ã", NULL }, 5.2059 +- { V('~','n'), 1, "ñ", NULL }, 5.2060 +- { V('~','o'), 1, "õ", NULL }, 5.2061 ++ { V('*','*'), 1, "∗", NULL }, /* asterisk */ 5.2062 ++ { V('*','A'), 1, "Α", NULL }, /* Alpha */ 5.2063 ++ { V('*','B'), 1, "Β", NULL }, /* Beta */ 5.2064 ++ { V('*','C'), 1, "Ξ", NULL }, /* Xi */ 5.2065 ++ { V('*','D'), 1, "Δ", NULL }, /* Delta */ 5.2066 ++ { V('*','E'), 1, "Ε", NULL }, /* Epsilon */ 5.2067 ++ { V('*','F'), 1, "Φ", NULL }, /* Phi */ 5.2068 ++ { V('*','G'), 1, "Γ", NULL }, /* Gamma */ 5.2069 ++ { V('*','H'), 1, "Θ", NULL }, /* Theta */ 5.2070 ++ { V('*','I'), 1, "Ι", NULL }, /* Iota */ 5.2071 ++ { V('*','K'), 1, "Κ", NULL }, /* Kappa */ 5.2072 ++ { V('*','L'), 1, "Λ", NULL }, /* Lambda */ 5.2073 ++ { V('*','M'), 1, "Μ", NULL }, /* Mu */ 5.2074 ++ { V('*','N'), 1, "Ν", NULL }, /* Nu */ 5.2075 ++ { V('*','O'), 1, "Ο", NULL }, /* Omicron */ 5.2076 ++ { V('*','P'), 1, "Π", NULL }, /* Pi */ 5.2077 ++ { V('*','Q'), 1, "Ψ", NULL }, /* Psi */ 5.2078 ++ { V('*','R'), 1, "Ρ", NULL }, /* Rho */ 5.2079 ++ { V('*','S'), 1, "Σ", NULL }, /* Sigma */ 5.2080 ++ { V('*','T'), 1, "Τ", NULL }, /* Tau */ 5.2081 ++ { V('*','U'), 1, "Υ", NULL }, /* Upsilon */ 5.2082 ++ { V('*','W'), 1, "Ω", NULL }, /* Omega */ 5.2083 ++ { V('*','X'), 1, "Χ", NULL }, /* Chi */ 5.2084 ++ { V('*','Y'), 1, "Η", NULL }, /* Eta */ 5.2085 ++ { V('*','Z'), 1, "Ζ", NULL }, /* Zeta */ 5.2086 ++ { V('*','a'), 1, "α", NULL }, /* alpha */ 5.2087 ++ { V('*','b'), 1, "β", NULL }, /* beta */ 5.2088 ++ { V('*','c'), 1, "ξ", NULL }, /* xi */ 5.2089 ++ { V('*','d'), 1, "δ", NULL }, /* delta */ 5.2090 ++ { V('*','e'), 1, "ε", NULL }, /* epsilon */ 5.2091 ++ { V('*','f'), 1, "φ", NULL }, /* phi */ 5.2092 ++ { V('*','g'), 1, "γ", NULL }, /* gamma */ 5.2093 ++ { V('*','h'), 1, "θ", NULL }, /* theta */ 5.2094 ++ { V('*','i'), 1, "ι", NULL }, /* iota */ 5.2095 ++ { V('*','k'), 1, "κ", NULL }, /* kappa */ 5.2096 ++ { V('*','l'), 1, "λ", NULL }, /* lambda */ 5.2097 ++ { V('*','m'), 1, "μ", NULL }, /* mu */ 5.2098 ++ { V('*','n'), 1, "ν", NULL }, /* nu */ 5.2099 ++ { V('*','o'), 1, "ο", NULL }, /* omicron */ 5.2100 ++ { V('*','p'), 1, "π", NULL }, /* pi */ 5.2101 ++ { V('*','q'), 1, "ψ", NULL }, /* psi */ 5.2102 ++ { V('*','r'), 1, "ρ", NULL }, /* rho */ 5.2103 ++ { V('*','s'), 1, "σ", NULL }, /* sigma */ 5.2104 ++ { V('*','t'), 1, "τ", NULL }, /* tau */ 5.2105 ++ { V('*','u'), 1, "υ", NULL }, /* upsilon */ 5.2106 ++ { V('*','w'), 1, "ω", NULL }, /* omega */ 5.2107 ++ { V('*','x'), 1, "χ", NULL }, /* chi */ 5.2108 ++ { V('*','y'), 1, "η", NULL }, /* eta */ 5.2109 ++ { V('*','z'), 1, "ζ", NULL }, /* zeta */ 5.2110 ++ { V('\'','A'), 1, "Á", NULL }, /* acute A */ 5.2111 ++ { V('\'','E'), 1, "É", NULL }, /* acute E */ 5.2112 ++ { V('\'','I'), 1, "Í", NULL }, /* acute I */ 5.2113 ++ { V('\'','O'), 1, "Ó", NULL }, /* acute O */ 5.2114 ++ { V('\'','U'), 1, "Ú", NULL }, /* acute U */ 5.2115 ++ { V('\'','Y'), 1, "Ý", NULL }, /* Yacute (*) */ 5.2116 ++ { V('\'','a'), 1, "á", NULL }, /* acute a */ 5.2117 ++ { V('\'','e'), 1, "é", NULL }, /* acute e */ 5.2118 ++ { V('\'','i'), 1, "í", NULL }, /* acute i */ 5.2119 ++ { V('\'','o'), 1, "ó", NULL }, /* acute o */ 5.2120 ++ { V('\'','u'), 1, "ú", NULL }, /* acute u */ 5.2121 ++ { V('\'','y'), 1, "ý", NULL }, /* yacute (*) */ 5.2122 ++ { V('!','='), 1, "≠", NULL }, /* not equal */ 5.2123 ++ { V('%','0'), 1, "‰", NULL }, /* per-thousand */ 5.2124 ++ { V('+','-'), 1, "±", NULL }, /* plus-minus */ 5.2125 ++ { V('+','e'), 1, "ϵ", NULL }, /* epsilon variant */ 5.2126 ++ { V('+','f'), 1, "φ", NULL }, /* phi variant */ 5.2127 ++ { V('+','h'), 1, "ϑ", NULL }, /* theta variant */ 5.2128 ++ { V('+','p'), 1, "ϖ", NULL }, /* pi variant */ 5.2129 ++ { V(',','C'), 1, "Ç", NULL }, /* cedilla C */ 5.2130 ++ { V(',','c'), 1, "ç", NULL }, /* cedilla c */ 5.2131 ++ { V('-','+'), 1, "∓", NULL }, /* minus-plus */ 5.2132 ++ { V('-','>'), 1, "→", NULL }, /* right arrow */ 5.2133 ++ { V('-','D'), 1, "Ð", NULL }, /* Eth */ 5.2134 ++ { V('-','h'), 1, "ℏ", NULL }, /* Planck constant over 2π */ 5.2135 ++ { V('.','i'), 1, "ı", NULL }, /* dotless i */ 5.2136 ++ { V('.','j'), 1, "ȷ", NULL }, /* dotless j */ 5.2137 ++ { V('/','L'), 1, "Ł", NULL }, /* stroke L */ 5.2138 ++ { V('/','O'), 1, "Ø", NULL }, /* stroke O */ 5.2139 ++ { V('/','_'), 1, "∠", NULL }, /* angle */ 5.2140 ++ { V('/','l'), 1, "ł", NULL }, /* stroke l */ 5.2141 ++ { V('/','o'), 1, "ø", NULL }, /* stroke o */ 5.2142 ++ { V('1','2'), 1, "½", NULL }, /* 1/2 (*) */ 5.2143 ++ { V('1','4'), 1, "¼", NULL }, /* 1/4 (*) */ 5.2144 ++ { V('3','4'), 1, "¾", NULL }, /* 3/4 (*) */ 5.2145 ++ { V('3','d'), 1, "∴", NULL }, /* therefore */ 5.2146 ++ { V(':','A'), 1, "Ä", NULL }, /* dieresis A */ 5.2147 ++ { V(':','E'), 1, "Ë", NULL }, /* dieresis E */ 5.2148 ++ { V(':','I'), 1, "Ï", NULL }, /* dieresis I */ 5.2149 ++ { V(':','O'), 1, "Ö", NULL }, /* dieresis O */ 5.2150 ++ { V(':','U'), 1, "Ü", NULL }, /* dieresis U */ 5.2151 ++ { V(':','a'), 1, "ä", NULL }, /* dieresis a */ 5.2152 ++ { V(':','e'), 1, "ë", NULL }, /* dieresis e */ 5.2153 ++ { V(':','i'), 1, "ï", NULL }, /* dieresis i */ 5.2154 ++ { V(':','o'), 1, "ö", NULL }, /* dieresis o */ 5.2155 ++ { V(':','u'), 1, "ü", NULL }, /* dieresis u */ 5.2156 ++ { V(':','y'), 1, "ÿ", NULL }, /* dieresis y */ 5.2157 ++ { V('<','-'), 1, "←", NULL }, /* left arrow */ 5.2158 ++ { V('<','<'), 1, "≪", NULL }, /* much less */ 5.2159 ++ { V('<','='), 1, "≤", NULL }, /* less-than-equal */ 5.2160 ++ { V('<','>'), 1, "↔", NULL }, /* left-right arrow */ 5.2161 ++ { V('=','='), 1, "≡", NULL }, /* equivalent */ 5.2162 ++ { V('=','~'), 1, "≅", NULL }, /* approximately equal */ 5.2163 ++ { V('>','='), 1, "≥", NULL }, /* greater-than-equal */ 5.2164 ++ { V('>','>'), 1, "≫", NULL }, /* much greater */ 5.2165 ++ { V('A','E'), 1, "Æ", NULL }, /* AE ligature */ 5.2166 ++ { V('A','N'), 1, "∧", NULL }, /* logical and */ 5.2167 ++ { V('A','h'), 1, "ℵ", NULL }, /* aleph */ 5.2168 ++ { V('B','q'), 1, "„", NULL }, /* right low double-quote */ 5.2169 ++ { V('C','R'), 1, "↵", NULL }, /* carriage return */ 5.2170 ++ { V('C','s'), 1, "¤", NULL }, /* Scandinavian */ 5.2171 ++ { V('D','o'), 1, "$", NULL }, /* dollar */ 5.2172 ++ { V('E','u'), 1, "€", NULL }, /* Euro symbol */ 5.2173 ++ { V('F','c'), 1, "»", NULL }, /* right guillemet */ 5.2174 ++ { V('F','i'), 1, "ffi", NULL }, /* ffi ligature */ 5.2175 ++ { V('F','l'), 1, "ffl", NULL }, /* ffl ligature */ 5.2176 ++ { V('F','n'), 1, "ƒ", NULL }, /* florin */ 5.2177 ++ { V('F','o'), 1, "«", NULL }, /* left guillemet */ 5.2178 ++ { V('I','J'), 1, "IJ", NULL }, /* IJ ligature */ 5.2179 ++ { V('I','m'), 1, "ℑ", NULL }, /* imaginary */ 5.2180 ++ { V('O','E'), 1, "Œ", NULL }, /* OE ligature */ 5.2181 ++ { V('O','K'), 1, "✓", NULL }, /* check mark */ 5.2182 ++ { V('O','R'), 1, "∨", NULL }, /* logical or */ 5.2183 ++ { V('P','o'), 1, "£", NULL }, /* pound */ 5.2184 ++ { V('R','e'), 1, "ℜ", NULL }, /* real */ 5.2185 ++ { V('S','1'), 1, "¹", NULL }, /* sup1 (*) */ 5.2186 ++ { V('S','2'), 1, "²", NULL }, /* sup2 (*) */ 5.2187 ++ { V('S','3'), 1, "³", NULL }, /* sup3 (*) */ 5.2188 ++ { V('S','d'), 1, "ð", NULL }, /* eth */ 5.2189 ++ { V('T','P'), 1, "Þ", NULL }, /* Thorn */ 5.2190 ++ { V('T','p'), 1, "þ", NULL }, /* thorn */ 5.2191 ++ { V('Y','e'), 1, "¥", NULL }, /* yen */ 5.2192 ++ { V('^','A'), 1, "Â", NULL }, /* circumflex A */ 5.2193 ++ { V('^','E'), 1, "Ê", NULL }, /* circumflex E */ 5.2194 ++ { V('^','I'), 1, "Î", NULL }, /* circumflex I */ 5.2195 ++ { V('^','O'), 1, "Ô", NULL }, /* circumflex O */ 5.2196 ++ { V('^','U'), 1, "Û", NULL }, /* circumflex U */ 5.2197 ++ { V('^','a'), 1, "â", NULL }, /* circumflex a */ 5.2198 ++ { V('^','e'), 1, "ê", NULL }, /* circumflex e */ 5.2199 ++ { V('^','i'), 1, "î", NULL }, /* circumflex i */ 5.2200 ++ { V('^','o'), 1, "ô", NULL }, /* circumflex o */ 5.2201 ++ { V('^','u'), 1, "û", NULL }, /* circumflex u */ 5.2202 ++ { V('`','A'), 1, "À", NULL }, /* grave A */ 5.2203 ++ { V('`','E'), 1, "È", NULL }, /* grave E */ 5.2204 ++ { V('`','I'), 1, "Ì", NULL }, /* grave I */ 5.2205 ++ { V('`','O'), 1, "Ò", NULL }, /* grave O */ 5.2206 ++ { V('`','U'), 1, "Ù", NULL }, /* grave U */ 5.2207 ++ { V('`','a'), 1, "à", NULL }, /* grave a */ 5.2208 ++ { V('`','e'), 1, "è", NULL }, /* grave e */ 5.2209 ++ { V('`','i'), 1, "ì", NULL }, /* grave i */ 5.2210 ++ { V('`','o'), 1, "ò", NULL }, /* grave o */ 5.2211 ++ { V('`','u'), 1, "ù", NULL }, /* grave u */ 5.2212 ++ { V('a','"'), 1, "˝", NULL }, /* Hungarian umlaut */ 5.2213 ++ { V('a','-'), 1, "¯", NULL }, /* macron */ 5.2214 ++ { V('a','.'), 1, "˙", NULL }, /* dotted */ 5.2215 ++ { V('a','^'), 1, "^", NULL }, /* circumflex */ 5.2216 ++ { V('a','a'), 1, "´", NULL }, /* acute */ 5.2217 ++ { V('a','b'), 1, "˘", NULL }, /* breve */ 5.2218 ++ { V('a','c'), 1, "¸", NULL }, /* cedilla */ 5.2219 ++ { V('a','d'), 1, "¨", NULL }, /* dieresis */ 5.2220 ++ { V('a','e'), 1, "æ", NULL }, /* ae ligature */ 5.2221 ++ { V('a','h'), 1, "ˇ", NULL }, /* caron */ 5.2222 ++ { V('a','o'), 1, "˚", NULL }, /* ring */ 5.2223 ++ { V('a','p'), 1, "∼", NULL }, /* tilde operator */ 5.2224 ++ { V('a','q'), 1, "'", NULL }, /* apostrophe quote (text) */ 5.2225 ++ { V('a','t'), 1, "@", NULL }, /* at */ 5.2226 ++ { V('a','~'), 1, "~", NULL }, /* tilde */ 5.2227 ++ { V('b','a'), 1, "|", NULL }, /* bar */ 5.2228 ++ { V('b','b'), 1, "¦", NULL }, /* broken bar */ 5.2229 ++ { V('b','r'), 1, "│", NULL }, /* box rule */ 5.2230 ++ { V('b','q'), 1, "‚", NULL }, /* right low single-quote */ 5.2231 ++ { V('b','u'), 1, "•", NULL }, /* bullet */ 5.2232 ++ { V('b','v'), 1, "⎪", NULL }, /* brace extension */ 5.2233 ++ { V('c','*'), 1, "⊗", NULL }, /* circle-multiply */ 5.2234 ++ { V('c','+'), 1, "⊕", NULL }, /* circle-plus */ 5.2235 ++ { V('c','a'), 1, "∩", NULL }, /* intersection */ 5.2236 ++ { V('c','i'), 1, "○", NULL }, /* circle */ 5.2237 ++ { V('c','o'), 1, "©", NULL }, /* copyright */ 5.2238 ++ { V('c','q'), 1, "’", NULL }, /* right single-quote */ 5.2239 ++ { V('c','t'), 1, "¢", NULL }, /* cent */ 5.2240 ++ { V('c','u'), 1, "∪", NULL }, /* union */ 5.2241 ++ { V('d','A'), 1, "⇓", NULL }, /* down double-arrow */ 5.2242 ++ { V('d','a'), 1, "↓", NULL }, /* down arrow */ 5.2243 ++ { V('d','d'), 1, "‡", NULL }, /* double dagger */ 5.2244 ++ { V('d','e'), 1, "°", NULL }, /* degree */ 5.2245 ++ { V('d','g'), 1, "†", NULL }, /* dagger */ 5.2246 ++ { V('d','i'), 1, "÷", NULL }, /* divide */ 5.2247 ++ { V('d','q'), 1, "\"", NULL }, /* double quote (text) */ 5.2248 ++ { V('e','m'), 1, "—", NULL }, /* em-dash */ 5.2249 ++ { V('e','n'), 1, "–", NULL }, /* en-dash */ 5.2250 ++ { V('e','q'), 1, "=", NULL }, /* equal */ 5.2251 ++ { V('e','s'), 1, "∅", NULL }, /* empty set */ 5.2252 ++ { V('e','u'), 1, "€", NULL }, /* Euro symbol */ 5.2253 ++ { V('f','/'), 1, "⁄", NULL }, /* fraction */ 5.2254 ++ { V('f','a'), 1, "∀", NULL }, /* universal quantifier */ 5.2255 ++ { V('f','c'), 1, "›", NULL }, /* right single guillemet */ 5.2256 ++ { V('f','f'), 1, "ff", NULL }, /* ff ligature */ 5.2257 ++ { V('f','i'), 1, "fi", NULL }, /* fi ligature */ 5.2258 ++ { V('f','l'), 1, "fl", NULL }, /* fl ligature */ 5.2259 ++ { V('f','m'), 1, "′", NULL }, /* minute */ 5.2260 ++ { V('f','o'), 1, "‹", NULL }, /* left single guillemet */ 5.2261 ++ { V('g','a'), 1, "`", NULL }, /* grave */ 5.2262 ++ { V('g','r'), 1, "∇", NULL }, /* gradient */ 5.2263 ++ { V('h','A'), 1, "⇔", NULL }, /* left-right double-arrow */ 5.2264 ++ { V('h','a'), 1, "^", NULL }, /* hat (text) */ 5.2265 ++ { V('h','o'), 1, "˛", NULL }, /* ogonek */ 5.2266 ++ { V('h','y'), 1, "‐", NULL }, /* hyphen */ 5.2267 ++ { V('i','b'), 1, "⊆", NULL }, /* reflexive subset */ 5.2268 ++ { V('i','f'), 1, "∞", NULL }, /* infinity */ 5.2269 ++ { V('i','j'), 1, "ij", NULL }, /* ij ligature */ 5.2270 ++ { V('i','p'), 1, "⊇", NULL }, /* reflexive superset */ 5.2271 ++ { V('i','s'), 1, "∫", NULL }, /* integral */ 5.2272 ++ { V('l','A'), 1, "⇐", NULL }, /* left double-arrow */ 5.2273 ++ { V('l','B'), 1, "[", NULL }, /* left bracket */ 5.2274 ++ { V('l','C'), 1, "{", NULL }, /* left brace */ 5.2275 ++ { V('l','a'), 1, "⟨", NULL }, /* left angle */ 5.2276 ++ { V('l','b'), 1, "⎩", NULL }, /* bottom-left hooked brace */ 5.2277 ++ { V('l','c'), 1, "⌈", NULL }, /* left-ceiling */ 5.2278 ++ { V('l','f'), 1, "⌊", NULL }, /* left-floor */ 5.2279 ++ { V('l','h'), 1, "☜", NULL }, /* left hand */ 5.2280 ++ { V('l','k'), 1, "⎨", NULL }, /* mid-left hooked brace */ 5.2281 ++ { V('l','q'), 1, "“", NULL }, /* left double-quote */ 5.2282 ++ { V('l','t'), 1, "⎧", NULL }, /* top-left hooked brace */ 5.2283 ++ { V('l','z'), 1, "◊", NULL }, /* lozenge */ 5.2284 ++ { V('m','c'), 1, "µ", NULL }, /* micro */ 5.2285 ++ { V('m','i'), 1, "−", NULL }, /* minus */ 5.2286 ++ { V('m','o'), 1, "∈", NULL }, /* element */ 5.2287 ++ { V('m','u'), 1, "×", NULL }, /* multiply */ 5.2288 ++ { V('n','b'), 1, "⊄", NULL }, /* not subset */ 5.2289 ++ { V('n','c'), 1, "⊅", NULL }, /* not superset */ 5.2290 ++ { V('n','e'), 1, "≢", NULL }, /* not equivalent */ 5.2291 ++ { V('n','m'), 1, "∉", NULL }, /* not element */ 5.2292 ++ { V('n','o'), 1, "¬", NULL }, /* logical not */ 5.2293 ++ { V('o','A'), 1, "Å", NULL }, /* ring A */ 5.2294 ++ { V('o','a'), 1, "å", NULL }, /* ring a */ 5.2295 ++ { V('o','e'), 1, "œ", NULL }, /* oe ligature */ 5.2296 ++ { V('o','q'), 1, "‘", NULL }, /* left single-quote */ 5.2297 ++ { V('o','r'), 1, "|", NULL }, /* bitwise or */ 5.2298 ++ { V('p','c'), 1, "·", NULL }, /* center-dot */ 5.2299 ++ { V('p','d'), 1, "∂", NULL }, /* partial differential */ 5.2300 ++ { V('p','l'), 1, "+", NULL }, /* plus */ 5.2301 ++ { V('p','p'), 1, "⊥", NULL }, /* perpendicular */ 5.2302 ++ { V('p','s'), 1, "¶", NULL }, /* paragraph */ 5.2303 ++ { V('p','t'), 1, "∝", NULL }, /* proportionate */ 5.2304 ++ { V('r','!'), 1, "¡", NULL }, /* upside-down exclamation */ 5.2305 ++ { V('r','?'), 1, "¿", NULL }, /* upside-down question */ 5.2306 ++ { V('r','A'), 1, "⇒", NULL }, /* right double-arrow */ 5.2307 ++ { V('r','B'), 1, "]", NULL }, /* right bracket */ 5.2308 ++ { V('r','C'), 1, "}", NULL }, /* right brace */ 5.2309 ++ { V('r','a'), 1, "⟩", NULL }, /* right angle */ 5.2310 ++ { V('r','b'), 1, "⎭", NULL }, /* bottom-right hooked brace */ 5.2311 ++ { V('r','c'), 1, "⌉", NULL }, /* right-ceiling */ 5.2312 ++ { V('r','f'), 1, "⌋", NULL }, /* right-floor */ 5.2313 ++ { V('r','g'), 1, "®", NULL }, /* registered */ 5.2314 ++ { V('r','h'), 1, "☞", NULL }, /* right hand */ 5.2315 ++ { V('r','k'), 1, "⎬", NULL }, /* mid-right hooked brace */ 5.2316 ++ { V('r','l'), 1, "‾", NULL }, /* overline */ 5.2317 ++ { V('r','n'), 1, "‾", NULL }, /* overline */ 5.2318 ++ { V('r','q'), 1, "”", NULL }, /* right double-quote */ 5.2319 ++ { V('r','s'), 1, "\\", NULL }, /* backward slash */ 5.2320 ++ { V('r','t'), 1, "⎫", NULL }, /* top-left hooked brace */ 5.2321 ++ { V('r','u'), 1, "_", NULL }, /* (*) */ 5.2322 ++ { V('s','b'), 1, "⊂", NULL }, /* proper subset */ 5.2323 ++ { V('s','c'), 1, "§", NULL }, /* section */ 5.2324 ++ { V('s','d'), 1, "″", NULL }, /* second */ 5.2325 ++ { V('s','h'), 1, "#", NULL }, /* hash (pound) */ 5.2326 ++ { V('s','l'), 1, "/", NULL }, /* forward slash */ 5.2327 ++ { V('s','p'), 1, "⊃", NULL }, /* proper superset */ 5.2328 ++ { V('s','q'), 1, "□", NULL }, /* white square */ 5.2329 ++ { V('s','r'), 1, "√", NULL }, /* square root */ 5.2330 ++ { V('s','s'), 1, "ß", NULL }, /* German eszett */ 5.2331 ++ { V('s','t'), 1, "∋", NULL }, /* such that */ 5.2332 ++ { V('t','e'), 1, "∃", NULL }, /* existential quantifier */ 5.2333 ++ { V('t','f'), 1, "∴", NULL }, /* therefore */ 5.2334 ++ { V('t','i'), 1, "~", NULL }, /* tilde (text) */ 5.2335 ++ { V('t','m'), 1, "™", NULL }, /* trademarked */ 5.2336 ++ { V('t','s'), 1, "ς", NULL }, /* sigma terminal */ 5.2337 ++ { V('u','A'), 1, "⇑", NULL }, /* up double-arrow */ 5.2338 ++ { V('u','a'), 1, "↑", NULL }, /* up arrow */ 5.2339 ++ { V('u','l'), 1, "_", NULL }, /* underscore */ 5.2340 ++ { V('v','A'), 1, "⇕", NULL }, /* up-down double-arrow */ 5.2341 ++ { V('v','a'), 1, "↕", NULL }, /* up-down arrow */ 5.2342 ++ { V('|','='), 1, "≃", NULL }, /* asymptotically equal */ 5.2343 ++ { V('~','='), 1, "≈", NULL }, /* almost equal */ 5.2344 ++ { V('~','A'), 1, "Ã", NULL }, /* tilde A */ 5.2345 ++ { V('~','N'), 1, "Ñ", NULL }, /* tilde N */ 5.2346 ++ { V('~','O'), 1, "Õ", NULL }, /* tilde O */ 5.2347 ++ { V('~','a'), 1, "ã", NULL }, /* tilde a */ 5.2348 ++ { V('~','n'), 1, "ñ", NULL }, /* tilde n */ 5.2349 ++ { V('~','o'), 1, "õ", NULL }, /* tilde o */ 5.2350 ++ { V('~','~'), 1, "≈", NULL }, /* almost equal */ 5.2351 + { 0, 0, NULL, NULL } 5.2352 +- 5.2353 +- 5.2354 + }; 5.2355 + 5.2356 + void stdinit(void) { 5.2357 +--- /dev/null 5.2358 ++++ b/version.h 5.2359 +@@ -0,0 +1 @@ 5.2360 ++#define version "1.6g-7-slitaz"
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 6.2 +++ b/man2html/stuff/ru.po Fri Jan 22 17:24:34 2016 +0200 6.3 @@ -0,0 +1,430 @@ 6.4 +# SOME DESCRIPTIVE TITLE. 6.5 +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 6.6 +# This file is distributed under the same license as the PACKAGE package. 6.7 +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. 6.8 +# 6.9 +msgid "" 6.10 +msgstr "" 6.11 +"Project-Id-Version: man2html\n" 6.12 +"Report-Msgid-Bugs-To: \n" 6.13 +"POT-Creation-Date: 2016-01-18 22:36+0200\n" 6.14 +"PO-Revision-Date: 2016-01-18 22:41+0200\n" 6.15 +"Last-Translator: Aleksej Bobylev <al.bobylev@gmail.com>\n" 6.16 +"Language-Team: \n" 6.17 +"Language: ru\n" 6.18 +"MIME-Version: 1.0\n" 6.19 +"Content-Type: text/plain; charset=UTF-8\n" 6.20 +"Content-Transfer-Encoding: 8bit\n" 6.21 +"X-Generator: Poedit 1.8.6\n" 6.22 +"X-Poedit-SourceCharset: UTF-8\n" 6.23 + 6.24 +#: cgibase.c:76 6.25 +msgid "This document was created by <b>man2html</b> using the manual pages." 6.26 +msgstr "Этот документ создан <b>man2html</b> из страницы руководства." 6.27 + 6.28 +#: cgibase.c:88 6.29 +msgid "Return to Main Contents" 6.30 +msgstr "Вернуться на главную" 6.31 + 6.32 +#: man2html.c:141 6.33 +msgid "chardef corrupted" 6.34 +msgstr "chardef поврежден" 6.35 + 6.36 +#: man2html.c:1374 6.37 +#, c-format 6.38 +msgid "man2html: Unknown operator %c.\n" 6.39 +msgstr "man2html: неизвестный оператор %c.\n" 6.40 + 6.41 +#: man2html.c:1462 man2html.c:1463 man2html.c:1464 man2html.c:1465 6.42 +#: man2html.c:1466 man.sh:16 6.43 +msgid "User Commands" 6.44 +msgstr "Команды пользователя" 6.45 + 6.46 +#: man2html.c:1467 man2html.c:1468 man.sh:16 6.47 +msgid "System Calls" 6.48 +msgstr "Системные вызовы" 6.49 + 6.50 +#: man2html.c:1469 man2html.c:1478 man.sh:16 6.51 +msgid "C Library Functions" 6.52 +msgstr "Библиотечные функции C" 6.53 + 6.54 +#: man2html.c:1470 6.55 +msgid "Compatibility Functions" 6.56 +msgstr "Функции совместимости" 6.57 + 6.58 +#: man2html.c:1471 6.59 +msgid "Fortran Library Routines" 6.60 +msgstr "Библиотечные подпрограммы Fortran" 6.61 + 6.62 +#: man2html.c:1472 6.63 +msgid "Kernel VM Library Functions" 6.64 +msgstr "Библиотечные функции Kernel VM" 6.65 + 6.66 +#: man2html.c:1473 6.67 +msgid "Lightweight Processes Library" 6.68 +msgstr "Библиотека легковесных процессов" 6.69 + 6.70 +#: man2html.c:1474 6.71 +msgid "Mathematical Library" 6.72 +msgstr "Математическая библиотека" 6.73 + 6.74 +#: man2html.c:1475 6.75 +msgid "Network Functions" 6.76 +msgstr "Сетевые функции" 6.77 + 6.78 +#: man2html.c:1476 6.79 +msgid "RPC Services Library" 6.80 +msgstr "Библиотека сервисов RPC" 6.81 + 6.82 +#: man2html.c:1477 6.83 +msgid "Standard I/O Functions" 6.84 +msgstr "Стандартные функции ввода-вывода" 6.85 + 6.86 +#: man2html.c:1479 6.87 +msgid "Miscellaneous Library Functions" 6.88 +msgstr "Разнообразные библиотечные функции" 6.89 + 6.90 +#: man2html.c:1480 man2html.c:1482 man2html.c:1483 man2html.c:1484 6.91 +#: man2html.c:1486 man2html.c:1487 man.sh:17 6.92 +msgid "Devices and Network Interfaces" 6.93 +msgstr "Устройства и сетевые интерфейсы" 6.94 + 6.95 +#: man2html.c:1481 6.96 +msgid "Protocol Families" 6.97 +msgstr "Семейства протоколов" 6.98 + 6.99 +#: man2html.c:1485 6.100 +msgid "Protocols" 6.101 +msgstr "Протоколы" 6.102 + 6.103 +#: man2html.c:1488 man2html.c:1489 man.sh:17 6.104 +msgid "File Formats" 6.105 +msgstr "Форматы файлов" 6.106 + 6.107 +#: man2html.c:1490 man.sh:18 6.108 +msgid "Games and Demos" 6.109 +msgstr "Игры и демо" 6.110 + 6.111 +#: man2html.c:1491 man2html.c:1492 man.sh:18 6.112 +msgid "Environments, Tables, and Troff Macros" 6.113 +msgstr "Окружение, таблицы и макросы Troff" 6.114 + 6.115 +#: man2html.c:1493 man2html.c:1494 man2html.c:1495 man2html.c:1496 man.sh:19 6.116 +msgid "Maintenance Commands" 6.117 +msgstr "Команды обслуживания" 6.118 + 6.119 +#: man2html.c:1497 6.120 +msgid "Local Commands" 6.121 +msgstr "Локальные команды" 6.122 + 6.123 +#: man2html.c:1566 6.124 +msgid "Misc. Reference Manual Pages" 6.125 +msgstr "Разнообразные справочные руководства" 6.126 + 6.127 +#: man2html.c:2010 6.128 +#, c-format 6.129 +msgid "man2html: unable to open or read file %s\n" 6.130 +msgstr "man2html: не удалось открыть или прочитать файл %s\n" 6.131 + 6.132 +#: man2html.c:2012 6.133 +msgid "man2html: unable to open or read file\n" 6.134 +msgstr "man2html: не удалось открыть или прочитать файл\n" 6.135 + 6.136 +#: man2html.c:2293 6.137 +#, c-format 6.138 +msgid "Man page of %s" 6.139 +msgstr "Страница руководства %s" 6.140 + 6.141 +#: man2html.c:2299 6.142 +msgid "Section: " 6.143 +msgstr "Раздел: " 6.144 + 6.145 +#: man2html.c:2308 6.146 +msgid "Updated: " 6.147 +msgstr "Обновлено: " 6.148 + 6.149 +#: man2html.c:2312 man2html.c:3375 6.150 +msgid "Index" 6.151 +msgstr "Оглавление" 6.152 + 6.153 +#: man2html.c:3208 man2html.c:3217 man2html.c:3226 6.154 +msgid "Out of memory" 6.155 +msgstr "Недостаточно памяти" 6.156 + 6.157 +#: man2html.c:3209 man2html.c:3218 man2html.c:3227 6.158 +msgid "Sorry, out of memory, aborting...\n" 6.159 +msgstr "К сожалению, недостаточно памяти, завершение…\n" 6.160 + 6.161 +#: man2html.c:3233 6.162 +msgid "man2html: bad invocation" 6.163 +msgstr "man2html: плохой вызов" 6.164 + 6.165 +#: man2html.c:3234 6.166 +msgid "" 6.167 +"Call: man2html [-l|-h host.domain:port] [-p|-q] [filename]\n" 6.168 +"or: man2html -r [filename]\n" 6.169 +msgstr "" 6.170 +"Вызов: man2html [-l|-h хост.домен:порт] [-p|-q] [имя_файла]\n" 6.171 +"или: man2html -r [имя_файла]\n" 6.172 + 6.173 +#: man2html.c:3258 man2html.c:3299 6.174 +msgid "Error" 6.175 +msgstr "Ошибка" 6.176 + 6.177 +#: man2html.c:3258 6.178 +#, c-format 6.179 +msgid "man2html: could not chdir to %s" 6.180 +msgstr "man2html: не удалось перейти в папку %s" 6.181 + 6.182 +#: man2html.c:3352 6.183 +msgid "File not found" 6.184 +msgstr "Файл не найден" 6.185 + 6.186 +#: man2html.c:3352 6.187 +#, c-format 6.188 +msgid "Could not open %s\n" 6.189 +msgstr "Не удалось открыть %s\n" 6.190 + 6.191 +#: man2html.c:3387 man2html.c:3394 6.192 +msgid "Invalid Man Page" 6.193 +msgstr "Недопустимая страница руководства" 6.194 + 6.195 +#: man2html.c:3388 6.196 +#, c-format 6.197 +msgid "" 6.198 +"The requested file %s is not a valid (unformatted) man page.\n" 6.199 +"If the file is a formatted man page, you could try to load the\n" 6.200 +"<a href=\"file://%s\">plain file</a>.\n" 6.201 +msgstr "" 6.202 +"Запрошенный файл %s не является допустимой (неформатированной) страницей " 6.203 +"руководства.\n" 6.204 +"В случае, если этот файл является форматированной страницей, вы можете " 6.205 +"попробовать загрузить ее как\n" 6.206 +"<a href=\"file://%s\">обычный файл</a>.\n" 6.207 + 6.208 +#: man2html.c:3395 6.209 +#, c-format 6.210 +msgid "The requested file %s is not a valid (unformatted) man page." 6.211 +msgstr "" 6.212 +"Запрошенный файл %s не является допустимой (неформатированной) страницей " 6.213 +"руководства." 6.214 + 6.215 +#: hman.sh:87 6.216 +msgid "bad number of args" 6.217 +msgstr "плохое количество аргументов" 6.218 + 6.219 +#: man.sh:19 6.220 +msgid "All available manual pages" 6.221 +msgstr "Все доступные страницы руководства" 6.222 + 6.223 +#: man.sh:52 6.224 +msgid "Section %s: %s" 6.225 +msgstr "Раздел %s: %s" 6.226 + 6.227 +#: man.sh:53 6.228 +msgid "Manual Pages" 6.229 +msgstr "Страницы руководства" 6.230 + 6.231 +#: man.sh:58 6.232 +msgid "" 6.233 +"Section 1 of the manual describes user commands and tools, for example, file " 6.234 +"manipulation tools, shells, compilers, web browsers, file and image viewers " 6.235 +"and editors, and so on." 6.236 +msgstr "" 6.237 +"Раздел 1 руководства описывает пользовательские команды и инструменты, такие " 6.238 +"как команды для работы с файлами, оболочки, компиляторы, браузеры, программы " 6.239 +"для просмотра и редактирования файлов и графики, и так далее." 6.240 + 6.241 +#: man.sh:61 6.242 +msgid "" 6.243 +"Section 2 of the manual describes the Linux system calls. A system call is " 6.244 +"an entry point into the Linux kernel." 6.245 +msgstr "" 6.246 +"Раздел 2 руководства описывает системные вызовы Linux. Системный вызов " 6.247 +"является точкой входа в ядро Linux." 6.248 + 6.249 +#: man.sh:63 6.250 +msgid "" 6.251 +"Section 3 of the manual describes all library functions excluding the " 6.252 +"library functions (system call wrappers) described in Section 2, which " 6.253 +"implement system calls." 6.254 +msgstr "" 6.255 +"Раздел 3 руководства описывает все библиотечные функции кроме библиотечных " 6.256 +"функций (оберток системных вызовов), описанных в разделе 2, которые " 6.257 +"реализуют системные вызовы." 6.258 + 6.259 +#: man.sh:65 6.260 +msgid "Section 4 of the manual describes special files (devices)." 6.261 +msgstr "Раздел 4 руководства описывает специальные файлы (устройства)." 6.262 + 6.263 +#: man.sh:66 6.264 +msgid "" 6.265 +"Section 5 of the manual describes various file formats, as well as the " 6.266 +"corresponding C structures, if any." 6.267 +msgstr "" 6.268 +"Раздел 5 руководства описывает различные форматов файлов, а также " 6.269 +"соответствующие структуры C, если таковые имеются." 6.270 + 6.271 +#: man.sh:68 6.272 +msgid "" 6.273 +"Section 6 of the manual describes all the games and funny little programs " 6.274 +"available on the system." 6.275 +msgstr "" 6.276 +"Раздел 6 руководства описывает все игры и забавные программы, имеющиеся в " 6.277 +"системе." 6.278 + 6.279 +#: man.sh:70 6.280 +msgid "" 6.281 +"Section 7 of the manual provides overviews on various topics, and describes " 6.282 +"conventions and protocols, character set standards, the standard filesystem " 6.283 +"layout, and miscellaneous other things." 6.284 +msgstr "" 6.285 +"Раздел 7 руководства содержит обзоры на различные темы, описывает соглашения " 6.286 +"и протоколы, стандартные наборы символов, макет стандартной файловой системы " 6.287 +"и прочее." 6.288 + 6.289 +#: man.sh:73 6.290 +msgid "" 6.291 +"Section 8 of the manual describes commands which either can be or are used " 6.292 +"only by the superuser, like system-administration commands, daemons, and " 6.293 +"hardware-related commands." 6.294 +msgstr "" 6.295 +"Раздел 8 руководства описывает команды супер-пользователя, такие как команды " 6.296 +"администрирования системы, службы и команды, связанные с аппаратным " 6.297 +"обеспечением." 6.298 + 6.299 +#: man.sh:116 6.300 +msgid "Sections" 6.301 +msgstr "Разделы" 6.302 + 6.303 +#: man.sh:125 man.sh:189 6.304 +msgid "All Sections" 6.305 +msgstr "Все разделы" 6.306 + 6.307 +#: man.sh:158 man.sh:162 6.308 +msgid "Manual Pages - Main Contents" 6.309 +msgstr "Страницы руководств — главная" 6.310 + 6.311 +#: man.sh:163 6.312 +msgid "Name and Section lookup" 6.313 +msgstr "Поиск по имени и разделу" 6.314 + 6.315 +#: man.sh:166 6.316 +msgid "Search" 6.317 +msgstr "Искать" 6.318 + 6.319 +#: man.sh:168 6.320 +msgid "" 6.321 +"You can enter a program name, possibly preceded by the section, the " 6.322 +"directories to search (with -M) or a full name. For example:" 6.323 +msgstr "" 6.324 +"Можно ввести название программы (возможно предварив его номером раздела), " 6.325 +"папку со страницами руководств (после -M) или полное название файла " 6.326 +"руководства. Например:" 6.327 + 6.328 +#: man.sh:179 6.329 +msgid "Index of pages" 6.330 +msgstr "Оглавление страниц" 6.331 + 6.332 +#: man.sh:193 6.333 +msgid "The original man2html program and scripts are due to %s and %s." 6.334 +msgstr "Оригинальная версия man2html и скрипты разработаны %s и %s." 6.335 + 6.336 +#: man.sh:196 6.337 +msgid "This version is from %s maintained by %s." 6.338 +msgstr "Эта версия %s сопровождается %s." 6.339 + 6.340 +#: man.sh:229 6.341 +msgid "Cannot find a page" 6.342 +msgstr "Не удалось найти страницу" 6.343 + 6.344 +#: man.sh:231 6.345 +msgid "Cannot find a page for <b>%s</b> %s" 6.346 +msgstr "Не удалось найти страницу <b>%s</b> %s" 6.347 + 6.348 +#: man.sh:233 6.349 +msgid "Cannot find a page for <b>%s</b> in section <b>%s</b> %s" 6.350 +msgstr "Не удалось найти страницу <b>%s</b> в разделе <b>%s</b> %s" 6.351 + 6.352 +#: man.sh:243 6.353 +msgid "Multiple pages" 6.354 +msgstr "Выбор" 6.355 + 6.356 +#: man.sh:245 6.357 +msgid "Multiple pages found" 6.358 +msgstr "Найдено несколько страниц" 6.359 + 6.360 +#~ msgid "" 6.361 +#~ "User Commands:System Calls:C Library Functions:Devices and Network " 6.362 +#~ "Interfaces:File Formats:Games and Demos:Environments, Tables, and Troff " 6.363 +#~ "Macros:Maintenance Commands:All available manual pages" 6.364 +#~ msgstr "" 6.365 +#~ "Команды пользователя:Системные вызовы:Библиотечные функции C:Устройства и " 6.366 +#~ "сетевые интерфейсы:Форматы файлов:Игры и демо:Окружение, таблицы и " 6.367 +#~ "макросы Troff:Команды технического обслуживания:Все доступные страницы " 6.368 +#~ "руководств" 6.369 + 6.370 +#~ msgid "" 6.371 +#~ "Section 1 of the manual describes user commands and tools, for example, " 6.372 +#~ "file \n" 6.373 +#~ "manipulation tools, shells, compilers, web browsers, file and image " 6.374 +#~ "viewers and editors, and so \n" 6.375 +#~ "on." 6.376 +#~ msgstr "" 6.377 +#~ "Раздел 1 руководства описывает пользовательские команды и инструменты, " 6.378 +#~ "такие как команды для работы с файлами, оболочки, компиляторы, браузеры, " 6.379 +#~ "программы для просмотра и редактирования файлов и графики, и так далее." 6.380 + 6.381 +#~ msgid "" 6.382 +#~ "Section 2 of the manual describes the Linux system calls. A system call " 6.383 +#~ "is \n" 6.384 +#~ "an entry point into the Linux kernel." 6.385 +#~ msgstr "" 6.386 +#~ "Раздел 2 руководства описывает системные вызовы Linux. Системный вызов " 6.387 +#~ "является точкой входа в ядро Linux." 6.388 + 6.389 +#~ msgid "" 6.390 +#~ "Section 3 of the manual describes all library functions excluding the \n" 6.391 +#~ "library functions (system call wrappers) described in Section 2, which " 6.392 +#~ "implement system calls." 6.393 +#~ msgstr "" 6.394 +#~ "Раздел 3 руководства описывает все библиотечные функции кроме " 6.395 +#~ "библиотечных функций (оберток системных вызовов), описанных в разделе 2, " 6.396 +#~ "которые реализуют системные вызовы." 6.397 + 6.398 +#~ msgid "" 6.399 +#~ "Section 5 of the manual describes various file formats, as well as the \n" 6.400 +#~ "corresponding C structures, if any." 6.401 +#~ msgstr "" 6.402 +#~ "Раздел 5 руководства описывает различные форматов файлов, а также " 6.403 +#~ "соответствующие структуры C, если таковые имеются." 6.404 + 6.405 +#~ msgid "" 6.406 +#~ "Section 6 of the manual describes all the games and funny little " 6.407 +#~ "programs \n" 6.408 +#~ "available on the system." 6.409 +#~ msgstr "" 6.410 +#~ "Раздел 6 руководства описывает все игры и забавные программы, имеющиеся в " 6.411 +#~ "системе." 6.412 + 6.413 +#~ msgid "" 6.414 +#~ "Section 7 of the manual provides overviews on various topics, and " 6.415 +#~ "describes \n" 6.416 +#~ "conventions and protocols, character set standards, the standard " 6.417 +#~ "filesystem layout, and \n" 6.418 +#~ "miscellaneous other things." 6.419 +#~ msgstr "" 6.420 +#~ "Раздел 7 руководства содержит обзоры на различные темы, описывает " 6.421 +#~ "соглашения и протоколы, стандартные наборы символов, макет стандартной " 6.422 +#~ "файловой системы и прочее." 6.423 + 6.424 +#~ msgid "" 6.425 +#~ "Section 8 of the manual describes commands which either can be or are " 6.426 +#~ "used \n" 6.427 +#~ "only by the superuser, like system-administration commands, daemons, and " 6.428 +#~ "hardware-related \n" 6.429 +#~ "commands." 6.430 +#~ msgstr "" 6.431 +#~ "Раздел 8 руководства описывает команды супер-пользователя, такие как " 6.432 +#~ "команды системы администрирования, службы и команды, связанные с " 6.433 +#~ "аппаратным обеспечением."