wok annotate man2html/stuff/man2html-slitaz.diff @ rev 19974
Up: tor (0.3.0.8), privoxy (3.0.26-stable),
get-palemoon (27.3.0)
get-palemoon (27.3.0)
author | Xander Ziiryanoff <psychomaniak@xakep.ru> |
---|---|
date | Thu Jun 08 21:57:08 2017 +0200 (2017-06-08) |
parents | |
children |
rev | line source |
---|---|
al@18840 | 1 --- /dev/null |
al@18840 | 2 +++ b/Makefile |
al@18840 | 3 @@ -0,0 +1,89 @@ |
al@18840 | 4 +CFLAGS += -Wall -Wstrict-prototypes -Wmissing-prototypes -DGUNZIP='"gunzip"' `pkg-config --cflags --libs glib-2.0` |
al@18840 | 5 +# -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0 |
al@18840 | 6 +OBJECTS = man2html.o cgibase.o abbrev.o strdefs.o |
al@18840 | 7 +bindir = $(DESTDIR)$(PREFIX)/usr/bin |
al@18840 | 8 +mandir = $(DESTDIR)$(PREFIX)/usr/share/man |
al@18840 | 9 +vardir = $(DESTDIR)$(PREFIX)/var |
al@18840 | 10 +httpdir = $(DESTDIR)$(PREFIX)/home/httpd |
al@18840 | 11 +cgidir = $(DESTDIR)$(PREFIX)/var/www |
al@18840 | 12 +sharedir = $(DESTDIR)$(PREFIX)/usr/share/man2html |
al@18840 | 13 +cgiowner = www |
al@18840 | 14 +cgigroup = www |
al@18840 | 15 +CC ?= gcc |
al@18840 | 16 + |
al@18840 | 17 +all: man2html hman |
al@18840 | 18 + |
al@18840 | 19 +man2html: $(OBJECTS) |
al@18840 | 20 + $(CC) -o man2html $(OBJECTS) $(CFLAGS) |
al@18840 | 21 + |
al@18840 | 22 +pot: |
al@18840 | 23 + mkdir -p po |
al@18840 | 24 + xgettext -o po/man2html.pot -k_ -kN_ \ |
al@18840 | 25 + --package-name="man2html" \ |
al@18840 | 26 + --from-code="UTF-8" \ |
al@18840 | 27 + cgibase.c man2html.c hman.sh man.sh |
al@18840 | 28 + |
al@18840 | 29 +msgmerge: |
al@18840 | 30 + @for l in $(LINGUAS); do \ |
al@18840 | 31 + echo -n "Updating $$l po file."; \ |
al@18840 | 32 + msgmerge -U po/$$l.po po/man2html.pot; \ |
al@18840 | 33 + done; |
al@18840 | 34 + |
al@18840 | 35 +msgfmt: |
al@18840 | 36 + @for l in $(LINGUAS); do \ |
al@18840 | 37 + echo "Compiling $$l mo file..."; \ |
al@18840 | 38 + mkdir -p po/mo/$$l/LC_MESSAGES; \ |
al@18840 | 39 + msgfmt -o po/mo/$$l/LC_MESSAGES/man2html.mo po/$$l.po; \ |
al@18840 | 40 + done; |
al@18840 | 41 + |
al@18840 | 42 + |
al@18840 | 43 +# man2html: ../src/version.h |
al@18840 | 44 + |
al@18840 | 45 +# This installs the man2html utility |
al@18840 | 46 +install: man2html |
al@18840 | 47 + mkdir -p $(bindir) |
al@18840 | 48 + install -m 755 man2html $(bindir) |
al@18840 | 49 + mkdir -p $(mandir)/man1 |
al@18840 | 50 + install -m 644 man2html.1 $(mandir)/man1/man2html.1 |
al@18840 | 51 + |
al@18840 | 52 +install-scripts: install-man-scripts install-glimpse-stuff install-hman |
al@18840 | 53 + |
al@18840 | 54 +# These are the scripts that allow pointing a browser at |
al@18840 | 55 +# http://localhost/cgi-bin/man/man2html |
al@18840 | 56 +# to work. |
al@18840 | 57 +install-man-scripts: |
al@18840 | 58 + mkdir -p $(cgidir) |
al@18840 | 59 + mkdir -p $(sharedir) |
al@18840 | 60 + install -m 755 scripts/cgi-bin/man/* $(cgidir) |
al@18840 | 61 + install -m 644 scripts/cgi-aux/man/* $(sharedir) |
al@18840 | 62 + install -d -o $(cgiowner) -g $(cgigroup) -m 775 $(vardir)/man2html |
al@18840 | 63 +# (aux was renamed to cgi-aux since aux causes problems under DOS) |
al@18840 | 64 + |
al@18840 | 65 +# If you have installed glimpse, and have compressed man pages, |
al@18840 | 66 +# then perhaps you also want these filters. |
al@18840 | 67 +install-glimpse-stuff: |
al@18840 | 68 + install -m 644 glimpse_filters $(vardir)/man2html/.glimpse_filters |
al@18840 | 69 + |
al@18840 | 70 +# In order not to have to type a long command like |
al@18840 | 71 +# netscape http://localhost/cgi-bin/man/man2html?section+topic |
al@18840 | 72 +# or |
al@18840 | 73 +# lynx lynxcgi:/home/httpd/cgi-bin/man/man2html?section+topic |
al@18840 | 74 +# it is convenient to have some shell script as a wrapper. |
al@18840 | 75 +# The script hman can be aliased to man. It uses an environment |
al@18840 | 76 +# variable MANHTMLPAGER to find out which browser you use, and |
al@18840 | 77 +# you can set MANHTMLHOST if the pages are not on localhost. |
al@18840 | 78 +hman: hman.sh |
al@18840 | 79 + rm -f hman |
al@18840 | 80 + sed -e 's,%version%,1.6g-7,' hman.sh > hman |
al@18840 | 81 + |
al@18840 | 82 +install-hman: hman |
al@18840 | 83 + install -m 555 hman $(bindir)/hman |
al@18840 | 84 + install -m 644 hman.1 $(mandir)/man1/hman.1 |
al@18840 | 85 + |
al@18840 | 86 +clean: |
al@18840 | 87 + rm -f core hman man2html $(OBJECTS) *~ |
al@18840 | 88 + |
al@18840 | 89 +spotless: clean |
al@18840 | 90 + rm -f Makefile |
al@18840 | 91 + |
al@18840 | 92 +$(OBJECTS): defs.h |
al@18840 | 93 --- a/abbrev.c |
al@18840 | 94 +++ b/abbrev.c |
al@18840 | 95 @@ -27,7 +27,7 @@ |
al@18840 | 96 "SSO", "System Services Overview", |
al@18840 | 97 "TEXT", "Editing Text Files", |
al@18840 | 98 "DOCS", "Formatting Documents", |
al@18840 | 99 - "TROFF", "Using <B>nroff</B> and <B>troff</B>", |
al@18840 | 100 + "TROFF", "Using <b>nroff</b> and <b>troff</b>", |
al@18840 | 101 "INDEX", "Global Index", |
al@18840 | 102 "CPG", "C Programmer's Guide", |
al@18840 | 103 "CREF", "C Reference Manual", |
al@18840 | 104 @@ -46,7 +46,7 @@ |
al@18840 | 105 "CGI", "SunCGI Reference Manual", |
al@18840 | 106 "CORE", "SunCore Reference Manual", |
al@18840 | 107 "4ASSY", "Sun-4 Assembly Language Reference", |
al@18840 | 108 - "SARCH", "<FONT SIZE=\"-1\">SPARC</FONT> Architecture Manual", |
al@18840 | 109 + "SARCH", "SPARC Architecture Manual", |
al@18840 | 110 "KR", "The C Programming Language", |
al@18840 | 111 0, 0 }; |
al@18840 | 112 |
al@18840 | 113 --- a/cgibase.c |
al@18840 | 114 +++ b/cgibase.c |
al@18840 | 115 @@ -8,6 +8,8 @@ |
al@18840 | 116 #include <ctype.h> /* tolower() */ |
al@18840 | 117 #include <string.h> /* strlen() */ |
al@18840 | 118 #include "defs.h" |
al@18840 | 119 +#include <glib.h> |
al@18840 | 120 +#include <glib/gi18n.h> |
al@18840 | 121 |
al@18840 | 122 /* |
al@18840 | 123 * The default is to use cgibase. With relative html style |
al@18840 | 124 @@ -21,8 +23,8 @@ |
al@18840 | 125 * and uses lynx, and we use lynxcgi:/usr/lib/cgi-bin. |
al@18840 | 126 */ |
al@18840 | 127 |
al@18840 | 128 -static char *man2htmlpath = "/cgi-bin/man/man2html"; /* default */ |
al@18840 | 129 -static char *cgibase_format = "http://%s"; /* host.domain:port */ |
al@18840 | 130 +static char *man2htmlpath = ""; /* default */ |
al@18840 | 131 +static char *cgibase_format = "%s"; /* host.domain:port */ |
al@18840 | 132 static char *cgibase_ll_format = "lynxcgi:%s"; /* directory */ |
al@18840 | 133 static char *cgibase = ""; /* default */ |
al@18840 | 134 |
al@18840 | 135 @@ -68,76 +70,46 @@ |
al@18840 | 136 relat_html_style = 1; |
al@18840 | 137 } |
al@18840 | 138 |
al@18840 | 139 -/* What shall we say in case of relat_html_style? */ |
al@18840 | 140 -static char *signature = "<HR>\n" |
al@18840 | 141 -"This document was created by\n" |
al@18840 | 142 -"<A HREF=\"%s%s\">man2html</A>,\n" |
al@18840 | 143 -"using the manual pages.<BR>\n" |
al@18840 | 144 -"%s\n"; |
al@18840 | 145 - |
al@18840 | 146 -#define TIMEFORMAT "%T GMT, %B %d, %Y" |
al@18840 | 147 -#define TIMEBUFSZ 500 |
al@18840 | 148 - |
al@18840 | 149 void print_sig() |
al@18840 | 150 { |
al@18840 | 151 - char timebuf[TIMEBUFSZ]; |
al@18840 | 152 - struct tm *timetm; |
al@18840 | 153 - time_t now; |
al@18840 | 154 - |
al@18840 | 155 - timebuf[0] = 0; |
al@18840 | 156 -#ifdef TIMEFORMAT |
al@18840 | 157 - sprintf(timebuf, "Time: "); |
al@18840 | 158 - now=time(NULL); |
al@18840 | 159 - timetm=gmtime(&now); |
al@18840 | 160 - strftime(timebuf+6, TIMEBUFSZ-6, TIMEFORMAT, timetm); |
al@18840 | 161 - timebuf[TIMEBUFSZ-1] = 0; |
al@18840 | 162 -#endif |
al@18840 | 163 - printf(signature, cgibase, man2htmlpath, timebuf); |
al@18840 | 164 + printf("</section>\n<footer>\n<p>%s</p>\n</footer>\n", |
al@18840 | 165 + _("This document was created by <b>man2html</b> using the manual pages.")); |
al@18840 | 166 } |
al@18840 | 167 |
al@18840 | 168 void |
al@18840 | 169 include_file_html(char *g) { |
al@18840 | 170 - printf("<A HREF=\"file:///usr/include/%s\">%s</A>>", g,g); |
al@18840 | 171 + printf("<a href=\"file:///usr/include/%s\">%s</a>>", g,g); |
al@18840 | 172 } |
al@18840 | 173 |
al@18840 | 174 void |
al@18840 | 175 man_page_html(char *sec, char *h) { |
al@18840 | 176 - if (relat_html_style) { |
al@18840 | 177 - if (!h) |
al@18840 | 178 - printf("<A HREF=\"../index.html\">" |
al@18840 | 179 - "Return to Main Contents</A>"); |
al@18840 | 180 - else |
al@18840 | 181 - printf("<A HREF=\"../man%s/%s.%s.html\">%s</A>", |
al@18840 | 182 - sec, h, sec, h); |
al@18840 | 183 - } else { |
al@18840 | 184 - if (!h) |
al@18840 | 185 - printf("<A HREF=\"%s%s\">Return to Main Contents</A>", |
al@18840 | 186 - cgibase, man2htmlpath); |
al@18840 | 187 - else if (!sec) |
al@18840 | 188 - printf("<A HREF=\"%s%s%c%s\">%s</A>", |
al@18840 | 189 - cgibase, man2htmlpath, sep, h, h); |
al@18840 | 190 - else |
al@18840 | 191 - printf("<A HREF=\"%s%s%c%s+%s\">%s</A>", |
al@18840 | 192 - cgibase, man2htmlpath, sep, sec, h, h); |
al@18840 | 193 - } |
al@18840 | 194 + if (!h) |
al@18840 | 195 + printf("<a href=\"?\">%s</a>", |
al@18840 | 196 + _("Return to Main Contents")); |
al@18840 | 197 + else if (!sec) |
al@18840 | 198 + printf("<a href=\"?%s\">%s</a>", |
al@18840 | 199 + h, h); |
al@18840 | 200 + else |
al@18840 | 201 + printf("<a href=\"?%s+%s\">%s</a>", |
al@18840 | 202 + sec, h, h); |
al@18840 | 203 } |
al@18840 | 204 |
al@18840 | 205 void |
al@18840 | 206 ftp_html(char *f) { |
al@18840 | 207 - printf("<A HREF=\"ftp://%s\">%s</A>", f, f); |
al@18840 | 208 + printf("<a href=\"ftp://%s\">%s</a>", f, f); |
al@18840 | 209 } |
al@18840 | 210 |
al@18840 | 211 void |
al@18840 | 212 www_html(char *f) { |
al@18840 | 213 - printf("<A HREF=\"http://%s\">%s</A>", f, f); |
al@18840 | 214 + printf("<a href=\"http://%s\">%s</a>", f, f); |
al@18840 | 215 } |
al@18840 | 216 |
al@18840 | 217 void |
al@18840 | 218 mailto_html(char *g) { |
al@18840 | 219 - printf("<A HREF=\"mailto:%s\">%s</A>", g, g); |
al@18840 | 220 + printf("<a href=\"mailto:%s\">%s</a>", g, g); |
al@18840 | 221 } |
al@18840 | 222 |
al@18840 | 223 void |
al@18840 | 224 url_html(char *g) { |
al@18840 | 225 - printf("<A HREF=\"%s\">%s</A>", g, g); |
al@18840 | 226 + printf("<a href=\"%s\">%s</a>", g, g); |
al@18840 | 227 } |
al@18840 | 228 --- a/hman.sh |
al@18840 | 229 +++ b/hman.sh |
al@18840 | 230 @@ -8,99 +8,83 @@ |
al@18840 | 231 # Usage examples: |
al@18840 | 232 # hman - get start page |
al@18840 | 233 # hman man2html - get man page for man2html |
al@18840 | 234 -# hman 7 locale - get section 7 man page for locale |
al@18840 | 235 +# hman 7 locale - get section 7 man page for locale |
al@18840 | 236 # hman 1 - section 1 index of names only |
al@18840 | 237 # hman 3 index - section 3 index names+descriptions |
al@18840 | 238 # hman -k editor - search all man pages for some string |
al@18840 | 239 -# hman -P arena ./twm.man - specify browser; specify man page |
al@18840 | 240 +# hman -P arena ./twm.man - specify browser; specify man page |
al@18840 | 241 # |
al@18840 | 242 -# hman from %version% |
al@18840 | 243 +# hman from 1.6g-7 |
al@18840 | 244 # |
al@18840 | 245 |
al@18840 | 246 -if [ x"$1" = x"-v" ] || [ x"$1" = x"-V" ]; then |
al@18840 | 247 - echo "`basename $0` from %version%" |
al@18840 | 248 +. /usr/lib/slitaz/httphelper.sh |
al@18840 | 249 +. /lib/libtaz.sh |
al@18840 | 250 + |
al@18840 | 251 +# Internationalization |
al@18840 | 252 +export TEXTDOMAIN='man2html' |
al@18840 | 253 +_() { local T="$1"; shift; printf "$(gettext "$T")" "$@"; echo; } |
al@18840 | 254 + |
al@18840 | 255 + |
al@18840 | 256 +if [ "$1" == '-v' ] || [ "$1" == '-V' ]; then |
al@18840 | 257 + echo "$(basename $0) v. 1.6g-slitaz" |
al@18840 | 258 exit 0 |
al@18840 | 259 fi |
al@18840 | 260 |
al@18840 | 261 # The user has to set MANHTMLPAGER (or he will get httpd-free lynx). |
al@18840 | 262 # Pick your favorite browser: lynx, xmosaic, netscape, arena, amaya, grail, ... |
al@18840 | 263 -if [ x"$MANHTMLPAGER" = x ] && ! which lynx > /dev/null ; then |
al@18840 | 264 - HMAN_BROWSER=sensible-browser |
al@18840 | 265 -else |
al@18840 | 266 - HMAN_BROWSER=${MANHTMLPAGER-lynxcgi} |
al@18840 | 267 -fi |
al@18840 | 268 +HMAN_BROWSER="${MANHTMLPAGER:-tazweb}" |
al@18840 | 269 |
al@18840 | 270 -# |
al@18840 | 271 # If the man pages are on a remote host, specify it in MANHTMLHOST. |
al@18840 | 272 -HOST=${MANHTMLHOST-localhost} |
al@18840 | 273 +HOST=${MANHTMLHOST:-localhost} |
al@18840 | 274 |
al@18840 | 275 # Perhaps the browser was specified on the command line? |
al@18840 | 276 -if [ "$#" -gt 1 ] && [ x"$1" = x"-P" ]; then |
al@18840 | 277 - HMAN_BROWSER="$2" |
al@18840 | 278 - shift; shift |
al@18840 | 279 +if [ "$#" -gt 1 ] && [ "$1" == '-P' ]; then |
al@18840 | 280 + HMAN_BROWSER="$2" |
al@18840 | 281 + shift; shift |
al@18840 | 282 fi |
al@18840 | 283 |
al@18840 | 284 # Perhaps the host was specified on the command line? |
al@18840 | 285 -if [ "$#" -gt 1 ] && [ x"$1" = x"-H" ]; then |
al@18840 | 286 - HOST="$2" |
al@18840 | 287 - shift; shift |
al@18840 | 288 +if [ "$#" -gt 1 ] && [ "$1" == '-H' ]; then |
al@18840 | 289 + HOST="$2" |
al@18840 | 290 + shift; shift |
al@18840 | 291 fi |
al@18840 | 292 |
al@18840 | 293 -# Interface to a live (already running) netscape browser. |
al@18840 | 294 -nsfunc () { |
al@18840 | 295 - if ( /bin/ps xc | grep -q 'netscape$' ) ; then |
al@18840 | 296 - if [ -x netscape-remote ] ; then |
al@18840 | 297 - exec netscape-remote -remote "openURL($1,new_window)" |
al@18840 | 298 - else |
al@18840 | 299 - exec netscape -remote "openURL($1,new_window)" |
al@18840 | 300 - fi |
al@18840 | 301 - else |
al@18840 | 302 - netscape $1 & |
al@18840 | 303 - fi |
al@18840 | 304 -} |
al@18840 | 305 +CGI="http://$HOST/man.cgi" |
al@18840 | 306 |
al@18840 | 307 -urlencode() { |
al@18840 | 308 - echo "$@" | perl -pe 'chomp(); s/([^A-Za-z0-9\ \_\-\.\/])/"%" . unpack("H*", $1)/eg; tr/ /+/;' |
al@18840 | 309 +enc() { |
al@18840 | 310 + echo "$@" | sed -e 's|+|%2B|g; s| |+|g'; |
al@18840 | 311 } |
al@18840 | 312 |
al@18840 | 313 - |
al@18840 | 314 -case "$HMAN_BROWSER" in |
al@18840 | 315 - lynxcgi) |
al@18840 | 316 - HMAN_BROWSER=lynx |
al@18840 | 317 - CG="lynxcgi:/usr/lib/cgi-bin/man" |
al@18840 | 318 - ;; |
al@18840 | 319 - netscape) |
al@18840 | 320 - HMAN_BROWSER=nsfunc |
al@18840 | 321 - CG="http://$HOST/cgi-bin/man" |
al@18840 | 322 - ;; |
al@18840 | 323 - *) |
al@18840 | 324 - CG="http://$HOST/cgi-bin/man" |
al@18840 | 325 - ;; |
al@18840 | 326 +case "$#" in |
al@18840 | 327 + 0) |
al@18840 | 328 + $HMAN_BROWSER "$CGI";; |
al@18840 | 329 + 1) |
al@18840 | 330 + case "$1" in |
al@18840 | 331 + 1|2|3|4|5|6|7|8|l|n) |
al@18840 | 332 + $HMAN_BROWSER "$CGI?$1";; |
al@18840 | 333 + /*) |
al@18840 | 334 + $HMAN_BROWSER "$CGI?$(enc "$1")";; |
al@18840 | 335 + */*) |
al@18840 | 336 + $HMAN_BROWSER "$CGI?$(enc "$(realpath "$PWD/$1")")";; |
al@18840 | 337 + *) |
al@18840 | 338 + $HMAN_BROWSER "$CGI?$(enc "$1")";; |
al@18840 | 339 + esac |
al@18840 | 340 + ;; |
al@18840 | 341 + 2) |
al@18840 | 342 +# case "$1" in |
al@18840 | 343 +# -k) |
al@18840 | 344 +# $HMAN_BROWSER "$CGI?search=$(enc "$2")";; |
al@18840 | 345 +# *) |
al@18840 | 346 +# if [ "$2" == 'index' ]; then |
al@18840 | 347 +# $HMAN_BROWSER "$CGI?whatis=$(enc "$1")" |
al@18840 | 348 +# else |
al@18840 | 349 + $HMAN_BROWSER "$CGI?$(enc "$1 $2")" |
al@18840 | 350 +# fi |
al@18840 | 351 +# ;; |
al@18840 | 352 +# esac |
al@18840 | 353 + ;; |
al@18840 | 354 + *) |
al@18840 | 355 + _ 'bad number of args';; |
al@18840 | 356 esac |
al@18840 | 357 - |
al@18840 | 358 - case "$#" in |
al@18840 | 359 - 0) $HMAN_BROWSER "$CG/man2html" ;; |
al@18840 | 360 - 1) case "$1" in |
al@18840 | 361 - 1|2|3|4|5|6|7|8|l|n) |
al@18840 | 362 - $HMAN_BROWSER "$CG/mansec?query=$1" ;; |
al@18840 | 363 - /*) |
al@18840 | 364 - $HMAN_BROWSER "$CG/man2html?query=`urlencode "$1"`" ;; |
al@18840 | 365 - */*) |
al@18840 | 366 - $HMAN_BROWSER "$CG/man2html?query=`urlencode "$PWD/$1"`" ;; |
al@18840 | 367 - *) |
al@18840 | 368 - $HMAN_BROWSER "$CG/man2html?query=`urlencode "$1"`" ;; |
al@18840 | 369 - esac ;; |
al@18840 | 370 - 2) case "$1" in |
al@18840 | 371 - -k) |
al@18840 | 372 - $HMAN_BROWSER "$CG/mansearch?query=`urlencode "$2"`" ;; |
al@18840 | 373 - *) |
al@18840 | 374 - if [ "$2" = index ]; then |
al@18840 | 375 - $HMAN_BROWSER "$CG/manwhatis?query=`urlencode "$1"`" |
al@18840 | 376 - else |
al@18840 | 377 - $HMAN_BROWSER "$CG/man2html?query=`urlencode "$1 $2"`" |
al@18840 | 378 - fi ;; |
al@18840 | 379 - esac ;; |
al@18840 | 380 - *) echo "bad number of args" ;; |
al@18840 | 381 - esac |
al@18840 | 382 |
al@18840 | 383 exit 0 |
al@18840 | 384 --- /dev/null |
al@18840 | 385 +++ b/man.sh |
al@18840 | 386 @@ -0,0 +1,292 @@ |
al@18840 | 387 +#!/bin/sh |
al@18840 | 388 +# man2html cgi script - uses /usr/bin/man2html to format man pages |
al@18840 | 389 +# aeb@cwi.nl - 980109 |
al@18840 | 390 +# Aleksej Bobylev <al.bobylev@gmail.com>, 2015-2016 |
al@18840 | 391 + |
al@18840 | 392 +. /usr/lib/slitaz/httphelper.sh |
al@18840 | 393 +. /lib/libtaz.sh |
al@18840 | 394 + |
al@18840 | 395 +# Internationalization. |
al@18840 | 396 +[ -e /etc/locale.conf ] && . /etc/locale.conf |
al@18840 | 397 +export TEXTDOMAIN='man2html' |
al@18840 | 398 +export LANG LC_ALL |
al@18840 | 399 +_() { local T="$1"; shift; printf "$(gettext "$T")" "$@"; echo; } |
al@18840 | 400 + |
al@18840 | 401 + |
al@18840 | 402 +SECTIONS="$(_ 'User Commands'):$(_ 'System Calls'):$(_ 'C Library Functions'):\ |
al@18840 | 403 +$(_ 'Devices and Network Interfaces'):$(_ 'File Formats'):\ |
al@18840 | 404 +$(_ 'Games and Demos'):$(_ 'Environments, Tables, and Troff Macros'):\ |
al@18840 | 405 +$(_ 'Maintenance Commands'):$(_ 'All available manual pages')" |
al@18840 | 406 + |
al@18840 | 407 +query="$(GET query)" |
al@18840 | 408 +if [ -z "$query" ]; then |
al@18840 | 409 + set -- $(echo $(GET) | tr '+' ' ') |
al@18840 | 410 +else |
al@18840 | 411 + set -- $(echo $(GET query) | tr '+' ' ') |
al@18840 | 412 +fi |
al@18840 | 413 + |
al@18840 | 414 + |
al@18840 | 415 +if [ $1 == 'css' ]; then |
al@18840 | 416 + # post css file on query |
al@18840 | 417 + header 'Content-Type: text/css' |
al@18840 | 418 + cat /usr/share/doc/slitaz-doc.css |
al@18840 | 419 +fi |
al@18840 | 420 + |
al@18840 | 421 +if [ $# -eq 1 ]; then |
al@18840 | 422 + case $1 in |
al@18840 | 423 + 1|2|3|4|5|6|7|8|all) |
al@18840 | 424 + if [ "$1" == 'all' ]; then |
al@18840 | 425 + sec_n='9'; sec_folder='man?' |
al@18840 | 426 + else |
al@18840 | 427 + sec_n="$1"; sec_folder="man$1" |
al@18840 | 428 + fi |
al@18840 | 429 + sec_desc=$(echo "$SECTIONS" | cut -d':' -f $sec_n) |
al@18840 | 430 + header |
al@18840 | 431 + cat <<EOT |
al@18840 | 432 +<!DOCTYPE html> |
al@18840 | 433 +<html> |
al@18840 | 434 +<head> |
al@18840 | 435 + <title>$1. $sec_desc</title> |
al@18840 | 436 + <link rel="stylesheet" href="?css"> |
al@18840 | 437 +</head> |
al@18840 | 438 +<body><header><h1>$(_ 'Section %s: %s' $1 "$sec_desc")</h1></header> |
al@18840 | 439 + <section><header>$(_ 'Manual Pages')</header> |
al@18840 | 440 + <p> |
al@18840 | 441 +EOT |
al@18840 | 442 + |
al@18840 | 443 + case $1 in |
al@18840 | 444 + 1) _ "Section 1 of the manual describes user commands and tools, for example, file \ |
al@18840 | 445 +manipulation tools, shells, compilers, web browsers, file and image viewers and editors, and so \ |
al@18840 | 446 +on.";; |
al@18840 | 447 + 2) _ "Section 2 of the manual describes the Linux system calls. A system call is \ |
al@18840 | 448 +an entry point into the Linux kernel.";; |
al@18840 | 449 + 3) _ "Section 3 of the manual describes all library functions excluding the \ |
al@18840 | 450 +library functions (system call wrappers) described in Section 2, which implement system calls.";; |
al@18840 | 451 + 4) _ "Section 4 of the manual describes special files (devices).";; |
al@18840 | 452 + 5) _ "Section 5 of the manual describes various file formats, as well as the \ |
al@18840 | 453 +corresponding C structures, if any.";; |
al@18840 | 454 + 6) _ "Section 6 of the manual describes all the games and funny little programs \ |
al@18840 | 455 +available on the system.";; |
al@18840 | 456 + 7) _ "Section 7 of the manual provides overviews on various topics, and describes \ |
al@18840 | 457 +conventions and protocols, character set standards, the standard filesystem layout, and \ |
al@18840 | 458 +miscellaneous other things.";; |
al@18840 | 459 + 8) _ "Section 8 of the manual describes commands which either can be or are used \ |
al@18840 | 460 +only by the superuser, like system-administration commands, daemons, and hardware-related \ |
al@18840 | 461 +commands.";; |
al@18840 | 462 + esac |
al@18840 | 463 + |
al@18840 | 464 + [ "$1" != 'all' ] && echo "<b><a href=\"?intro.$1\">intro</a></b>($1)" |
al@18840 | 465 + echo '</p>' |
al@18840 | 466 + |
al@18840 | 467 + temp="$(mktemp)"; temp2="$(mktemp)" |
al@18840 | 468 + for dir in $(find /usr/share/man -type d -name "$sec_folder"); do |
al@18840 | 469 + ls $dir | sed 's|\.\([0-9]\)\.*[bgx]*z*2*$|:\1|' |
al@18840 | 470 + # fix sorting 'feature': leading '_' always ignored by `sort` |
al@18840 | 471 + done | sed 's|_|zzzzzzzz|g' | sort -fu | sed 's|zzzzzzzz|_|g' | \ |
al@18840 | 472 + awk -F' ' -vtemp="$temp" -vtemp2="$temp2" ' |
al@18840 | 473 + { |
al@18840 | 474 + split($1, man, ":"); |
al@18840 | 475 + |
al@18840 | 476 + letter = tolower(substr(man[1], 1, 1)); |
al@18840 | 477 + if (letter != last_letter) { |
al@18840 | 478 + last_letter = letter; |
al@18840 | 479 + letter_index[++num_letters] = letter; |
al@18840 | 480 + print "<h3 id=\"l" letter "\">" toupper(letter) "</h3>" > temp; |
al@18840 | 481 + } |
al@18840 | 482 + lnk = man[1]; gsub("+", "%2b", lnk); |
al@18840 | 483 + printf "<b><a href=\"?%s.%s\">%s</a></b>(%s) ", lnk, man[2], man[1], man[2] > temp; |
al@18840 | 484 + } |
al@18840 | 485 + END { |
al@18840 | 486 + # Print out alphabetic quick index and other links |
al@18840 | 487 + for (i = 1; i <= num_letters; i++) { |
al@18840 | 488 + print "<a href=\"#l" letter_index[i] section "\">" toupper(letter_index[i]) "</a>" > temp2; |
al@18840 | 489 + } |
al@18840 | 490 + } |
al@18840 | 491 + ' |
al@18840 | 492 + if [ -s "$temp" ]; then |
al@18840 | 493 + echo '<hr>'; cat "$temp2"; echo '<hr>' |
al@18840 | 494 + cat "$temp" |
al@18840 | 495 + echo '<hr>'; cat "$temp2"; echo '<hr>' |
al@18840 | 496 + fi |
al@18840 | 497 + |
al@18840 | 498 + rm -f "$temp" "$temp2" |
al@18840 | 499 + |
al@18840 | 500 + cat <<EOT |
al@18840 | 501 + </section> |
al@18840 | 502 + <section><header>$(_ 'Sections')</header> |
al@18840 | 503 + <ol> |
al@18840 | 504 +EOT |
al@18840 | 505 + for i in $(seq 8); do |
al@18840 | 506 + sec_desc=$(echo "$SECTIONS" | cut -d':' -f $i) |
al@18840 | 507 + echo "<li><a href=\"?$i\">$sec_desc</a></li>" |
al@18840 | 508 + done |
al@18840 | 509 + cat <<EOT |
al@18840 | 510 + </ol> |
al@18840 | 511 + <p><a href="?all">$(_ 'All Sections')</a></p> |
al@18840 | 512 +</section> |
al@18840 | 513 + |
al@18840 | 514 +</body> |
al@18840 | 515 +</html> |
al@18840 | 516 +EOT |
al@18840 | 517 + exit 0 |
al@18840 | 518 + ;; |
al@18840 | 519 + esac |
al@18840 | 520 +fi |
al@18840 | 521 + |
al@18840 | 522 +# Find the required page - expect to be called with "man2html [sec] page". |
al@18840 | 523 +# There may a prefixed "-M manpath" option. |
al@18840 | 524 + |
al@18840 | 525 +if [ $# -ge 2 -a "$1" == '-M' ]; then |
al@18840 | 526 + MANPATH="$2" |
al@18840 | 527 + export MANPATH |
al@18840 | 528 + shift; shift |
al@18840 | 529 + MP=' using the given MANPATH' |
al@18840 | 530 +else |
al@18840 | 531 + MP='' |
al@18840 | 532 +fi |
al@18840 | 533 + |
al@18840 | 534 + |
al@18840 | 535 +# If no arguments given, show a start page. |
al@18840 | 536 + |
al@18840 | 537 +if [ $# -eq 0 ]; then |
al@18840 | 538 + header |
al@18840 | 539 + cat <<EOT |
al@18840 | 540 +<!DOCTYPE html> |
al@18840 | 541 +<html> |
al@18840 | 542 +<head> |
al@18840 | 543 + <meta charset="UTF-8"> |
al@18840 | 544 + <title>$(_ 'Manual Pages - Main Contents')</title> |
al@18840 | 545 + <link rel="stylesheet" href="?css"> |
al@18840 | 546 +</head> |
al@18840 | 547 +<body> |
al@18840 | 548 +<header><h1>$(_ 'Manual Pages - Main Contents')</h1></header> |
al@18840 | 549 +<section><header>$(_ 'Name and Section lookup')</header> |
al@18840 | 550 + <form method="GET"> |
al@18840 | 551 + <input name="query" size="40"> |
al@18840 | 552 + <button type="submit">$(_ 'Search')</button> |
al@18840 | 553 + </form> |
al@18840 | 554 + <p>$(_ "You can enter a program name, possibly preceded by the section, the directories to search \ |
al@18840 | 555 +(with -M) or a full name. For example:")</p> |
al@18840 | 556 + |
al@18840 | 557 + <ul> |
al@18840 | 558 + <li><tt>find</tt></li> |
al@18840 | 559 + <li><tt>1 find</tt></li> |
al@18840 | 560 + <li><tt>-M /usr/share/man:/opt/man:/usr/local/share/man find</tt></li> |
al@18840 | 561 + <li><tt>/usr/share/man/man1/gperf.1</tt></li> |
al@18840 | 562 + </ul> |
al@18840 | 563 +</section> |
al@18840 | 564 + |
al@18840 | 565 +<section><header>$(_ 'Index of pages')</header> |
al@18840 | 566 + |
al@18840 | 567 + <ol> |
al@18840 | 568 +EOT |
al@18840 | 569 + for i in $(seq 8); do |
al@18840 | 570 + sec_desc=$(echo "$SECTIONS" | cut -d':' -f $i) |
al@18840 | 571 + echo "<li><a href=\"?$i\">$sec_desc</a></li>" |
al@18840 | 572 + done |
al@18840 | 573 + cat <<EOT |
al@18840 | 574 + </ol> |
al@18840 | 575 + <p><a href="?all">$(_ 'All Sections')</a></p> |
al@18840 | 576 +</section> |
al@18840 | 577 + |
al@18840 | 578 +<footer> |
al@18840 | 579 + <p>$(_ 'The original man2html program and scripts are due to %s and %s.' \ |
al@18840 | 580 + '<a href="http://wsinwp01.win.tue.nl:1234/index.html">Richard Verhoeven</a>' \ |
al@18840 | 581 + '<a href="mailto:michael@actrix.gen.nz">Michael Hamilton</a>') |
al@18840 | 582 + $(_ 'This version is from %s maintained by %s.' 'man-1.6g' \ |
al@18840 | 583 + '<a href="mailto:flucifredi@acm.org">Federico Lucifredi</a>')</p> |
al@18840 | 584 +</footer> |
al@18840 | 585 +</body> |
al@18840 | 586 +</html> |
al@18840 | 587 +EOT |
al@18840 | 588 + exit 0 |
al@18840 | 589 +fi |
al@18840 | 590 + |
al@18840 | 591 +if [ $# -gt 2 ]; then |
al@18840 | 592 + man2html -E "man2html: bad invocation: too many arguments" |
al@18840 | 593 + exit 0 |
al@18840 | 594 +fi |
al@18840 | 595 + |
al@18840 | 596 +# A single argument may be an explicitly give path name |
al@18840 | 597 +# Otherwise, find it |
al@18840 | 598 + |
al@18840 | 599 +if [ $# -eq 1 ]; then |
al@18840 | 600 + arg=${1//%2b/+} |
al@18840 | 601 + case "$arg" in |
al@18840 | 602 + /*) PAGE="$arg";; |
al@18840 | 603 + *.*) PAGE=$(find /usr/share/man \( -type f -o -type l \) \( -name "$arg" -o -name "$arg.gz" -o -name "$arg.bz2" -o -name "$arg.xz" \));; |
al@18840 | 604 + *) PAGE=$(find /usr/share/man \( -type f -o -type l \) \( -name "$arg.*" -o -name "$arg.*.gz" -o -name "$arg.*.bz2" -o -name "$arg.*.xz" \));; |
al@18840 | 605 + esac |
al@18840 | 606 +else |
al@18840 | 607 + arg=${2//%2b/+} |
al@18840 | 608 + PAGE="$( |
al@18840 | 609 + for dir in $(find /usr/share/man -type d -name man$1); do |
al@18840 | 610 + find $dir \( -type f -o -type l \) -name "$arg.$1*" |
al@18840 | 611 + done)" |
al@18840 | 612 +fi |
al@18840 | 613 + |
al@18840 | 614 +if [ -z "$PAGE" ]; then |
al@18840 | 615 + complaint="$(_ 'Cannot find a page')" |
al@18840 | 616 + if [ $# -eq 1 ]; then |
al@18840 | 617 + complaint="$(_ 'Cannot find a page for <b>%s</b> %s' $1 $MP)" |
al@18840 | 618 + else |
al@18840 | 619 + complaint="$(_ 'Cannot find a page for <b>%s</b> in section <b>%s</b> %s') $2 $1 $MP" |
al@18840 | 620 + fi |
al@18840 | 621 + man2html -E "<p>$complaint</p>" |
al@18840 | 622 + exit 0 |
al@18840 | 623 +fi |
al@18840 | 624 + |
al@18840 | 625 +if [ "$(echo "$PAGE" | wc -l)" -gt 1 ]; then |
al@18840 | 626 + header |
al@18840 | 627 + cat <<EOT |
al@18840 | 628 +<!DOCTYPE html> |
al@18840 | 629 +<html><head><title>$(_ 'Multiple pages')</title> |
al@18840 | 630 +<link rel="stylesheet" href="?css"></link></head> |
al@18840 | 631 +<body><header><h1>$(_ 'Multiple pages found')</h1></header> |
al@18840 | 632 + <section> |
al@18840 | 633 + <ul> |
al@18840 | 634 +EOT |
al@18840 | 635 + echo "$PAGE" | awk -F'/' '{ |
al@18840 | 636 + if ($5 ~ "man") { |
al@18840 | 637 + split($6, man, "."); |
al@18840 | 638 + printf "<li><a href=\"?%s\">%s</a> (%s)</li>\n", $0, man[1], man[2]; |
al@18840 | 639 + } else { |
al@18840 | 640 + split($7, man, "."); |
al@18840 | 641 + printf "<li><a href=\"?%s\">%s</a> (%s) — %s</li>\n", $0, man[1], man[2], $5; |
al@18840 | 642 + } |
al@18840 | 643 + }' |
al@18840 | 644 + sed 's|^.*$|<li><a href="?&">&</a></li>|' |
al@18840 | 645 + echo '</ul></section></body></html>' |
al@18840 | 646 + exit 0 |
al@18840 | 647 +fi |
al@18840 | 648 + |
al@18840 | 649 +if [ -r "$PAGE" ]; then |
al@18840 | 650 + tmpman="$(mktemp)" |
al@18840 | 651 + # Unpack man page |
al@18840 | 652 + case "$PAGE" in |
al@18840 | 653 + *.gz) zcat "$PAGE" > "$tmpman";; |
al@18840 | 654 + *.bz2) bzcat "$PAGE" > "$tmpman";; |
al@18840 | 655 + *.xz) xzcat "$PAGE" > "$tmpman";; |
al@18840 | 656 + *) cp "$PAGE" "$tmpman";; |
al@18840 | 657 + esac |
al@18840 | 658 + |
al@18840 | 659 + # Check for link |
al@18840 | 660 + line="$(fgrep -v '.\"' "$tmpman" | head -n1)" |
al@18840 | 661 + case "$line" in |
al@18840 | 662 + .so*) |
al@18840 | 663 + link="$(echo "$line" | cut -d'/' -f2)" |
al@18840 | 664 + header "HTTP/1.1 301 Moved Permanently" \ |
al@18840 | 665 + "Location: ?$link" |
al@18840 | 666 + ;; |
al@18840 | 667 + *) |
al@18840 | 668 + # Convert page to HTML |
al@18840 | 669 + man2html "$tmpman" |
al@18840 | 670 + ;; |
al@18840 | 671 + esac |
al@18840 | 672 + |
al@18840 | 673 + # Clean |
al@18840 | 674 + rm "$tmpman" |
al@18840 | 675 +else |
al@18840 | 676 + man2html -E "Strange... Cannot find (or read) $PAGE." |
al@18840 | 677 +fi |
al@18840 | 678 +exit 0 |
al@18840 | 679 --- a/man2html.c |
al@18840 | 680 +++ b/man2html.c |
al@18840 | 681 @@ -21,14 +21,17 @@ |
al@18840 | 682 #include <ctype.h> |
al@18840 | 683 #include <sys/stat.h> |
al@18840 | 684 #include "defs.h" |
al@18840 | 685 -#include "../src/version.h" |
al@18840 | 686 +#include "version.h" |
al@18840 | 687 +#include <glib.h> |
al@18840 | 688 +#include <glib/gi18n.h> |
al@18840 | 689 +#define GETTEXT_PACKAGE "man2html" |
al@18840 | 690 |
al@18840 | 691 /* BSD mandoc Bd/Ed example(?) blocks */ |
al@18840 | 692 #define BD_LITERAL 1 |
al@18840 | 693 #define BD_INDENT 2 |
al@18840 | 694 |
al@18840 | 695 #define SIZE(a) (sizeof(a)/sizeof(*a)) |
al@18840 | 696 -#define DOCTYPE "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n" |
al@18840 | 697 +#define DOCTYPE "<!DOCTYPE html>\n" |
al@18840 | 698 #define CONTENTTYPE "Content-type: text/html; charset=UTF-8\n\n" |
al@18840 | 699 |
al@18840 | 700 static char NEWLINE[2]="\n"; |
al@18840 | 701 @@ -58,28 +61,13 @@ |
al@18840 | 702 |
al@18840 | 703 static char charb[3]; |
al@18840 | 704 |
al@18840 | 705 -#ifdef GUNZIP |
al@18840 | 706 -/* from src/utils.c */ |
al@18840 | 707 -static int |
al@18840 | 708 -is_shell_safe(const char *ss, int quoted) { |
al@18840 | 709 - char *bad = " ;'\\\"<>|"; |
al@18840 | 710 - char *p; |
al@18840 | 711 |
al@18840 | 712 - if (quoted) |
al@18840 | 713 - bad++; /* allow a space inside quotes */ |
al@18840 | 714 - for (p = bad; *p; p++) |
al@18840 | 715 - if (strchr(ss, *p)) |
al@18840 | 716 - return 0; |
al@18840 | 717 - return 1; |
al@18840 | 718 -} |
al@18840 | 719 -#endif |
al@18840 | 720 - |
al@18840 | 721 /* reads the entire manpage into buffer *buf and returns number of chars read */ |
al@18840 | 722 static int |
al@18840 | 723 read_manpage_into_buffer(char *path, char **buf) { |
al@18840 | 724 int compressed = 0; |
al@18840 | 725 FILE * f = NULL; |
al@18840 | 726 - char * ext; |
al@18840 | 727 + /* char * ext; */ |
al@18840 | 728 int l = 0; |
al@18840 | 729 struct stat stbuf; |
al@18840 | 730 |
al@18840 | 731 @@ -94,26 +82,6 @@ |
al@18840 | 732 char * tmp = NULL; |
al@18840 | 733 char * command = NULL; |
al@18840 | 734 char * openpath = path; |
al@18840 | 735 -#ifdef GUNZIP |
al@18840 | 736 - |
al@18840 | 737 - if (is_shell_safe(openpath, 1)) { |
al@18840 | 738 - ext = strrchr(openpath, '.'); |
al@18840 | 739 - compressed = (ext && !strcmp(ext, ".gz")); |
al@18840 | 740 - |
al@18840 | 741 - if (!compressed && stat(openpath, &stbuf)) { |
al@18840 | 742 - tmp = (char*) xmalloc(strlen(path) + 4); |
al@18840 | 743 - sprintf(tmp, "%s.gz", path); |
al@18840 | 744 - if ((compressed = !stat(tmp, &stbuf))) |
al@18840 | 745 - openpath = tmp; |
al@18840 | 746 - } |
al@18840 | 747 - } |
al@18840 | 748 - |
al@18840 | 749 - if (compressed) { |
al@18840 | 750 - command = (char*) xmalloc(strlen(openpath) + sizeof(GUNZIP) + 4); |
al@18840 | 751 - sprintf(command, GUNZIP " '%s'", openpath); |
al@18840 | 752 - f = popen(command, "r"); |
al@18840 | 753 - } else |
al@18840 | 754 -#endif |
al@18840 | 755 f = fopen(openpath, "r"); |
al@18840 | 756 |
al@18840 | 757 if (tmp) free(tmp); |
al@18840 | 758 @@ -170,7 +138,7 @@ |
al@18840 | 759 |
al@18840 | 760 h = chardef; |
al@18840 | 761 if (h->nr != V('*','*')) { |
al@18840 | 762 - printf("chardef corrupted\n"); |
al@18840 | 763 + printf("%s\n", _("chardef corrupted")); |
al@18840 | 764 exit(1); |
al@18840 | 765 } |
al@18840 | 766 |
al@18840 | 767 @@ -216,7 +184,7 @@ |
al@18840 | 768 ** Add the links to the output. |
al@18840 | 769 ** At the moment the following are recognized: |
al@18840 | 770 ** |
al@18840 | 771 - ** name(*) -> ../man?/name.* |
al@18840 | 772 + ** name(*) -> ?name.* |
al@18840 | 773 ** method://string -> method://string |
al@18840 | 774 ** www.host.name -> http://www.host.name |
al@18840 | 775 ** ftp.host.name -> ftp://ftp.host.name |
al@18840 | 776 @@ -453,8 +421,8 @@ |
al@18840 | 777 #define DL 1 |
al@18840 | 778 #define UL 2 |
al@18840 | 779 #define OL 3 |
al@18840 | 780 -static char *dl_open[4] = { "", "<DL COMPACT>\n", "<UL>", "<OL>" }; |
al@18840 | 781 -static char *dl_close[4] = { "", "</DL>\n", "</UL>", "</OL>" }; |
al@18840 | 782 +static char *dl_open[4] = { "", "<dl compact>\n", "<ul>", "<ol>" }; |
al@18840 | 783 +static char *dl_close[4] = { "", "</dl>\n", "</ul>", "</ol>" }; |
al@18840 | 784 |
al@18840 | 785 static inline void |
al@18840 | 786 dl_begin(void) { |
al@18840 | 787 @@ -462,7 +430,7 @@ |
al@18840 | 788 out_html(dl_open[DL]); |
al@18840 | 789 dl_set[itemdepth]=DL; |
al@18840 | 790 } |
al@18840 | 791 - out_html("<DT>"); |
al@18840 | 792 + out_html("<dt>"); |
al@18840 | 793 } |
al@18840 | 794 |
al@18840 | 795 static inline void |
al@18840 | 796 @@ -481,14 +449,14 @@ |
al@18840 | 797 itemdepth++; |
al@18840 | 798 if (itemdepth < SIZE(dl_set)) |
al@18840 | 799 dl_set[itemdepth]=noDL; |
al@18840 | 800 - out_html("<DL COMPACT><DT><DD>"); |
al@18840 | 801 + out_html("<dl compact><dt><dd>"); |
al@18840 | 802 } |
al@18840 | 803 |
al@18840 | 804 static inline void |
al@18840 | 805 dl_endlevel(void) { |
al@18840 | 806 if (itemdepth) { |
al@18840 | 807 dl_end(); |
al@18840 | 808 - out_html("</DL>\n"); |
al@18840 | 809 + out_html("</dl>\n"); |
al@18840 | 810 itemdepth--; |
al@18840 | 811 } |
al@18840 | 812 } |
al@18840 | 813 @@ -538,12 +506,12 @@ |
al@18840 | 814 |
al@18840 | 815 #define FO0 "" |
al@18840 | 816 #define FC0 "" |
al@18840 | 817 -#define FO1 "<I>" |
al@18840 | 818 -#define FC1 "</I>" |
al@18840 | 819 -#define FO2 "<B>" |
al@18840 | 820 -#define FC2 "</B>" |
al@18840 | 821 -#define FO3 "<TT>" |
al@18840 | 822 -#define FC3 "</TT>" |
al@18840 | 823 +#define FO1 "<i>" |
al@18840 | 824 +#define FC1 "</i>" |
al@18840 | 825 +#define FO2 "<b>" |
al@18840 | 826 +#define FC2 "</b>" |
al@18840 | 827 +#define FO3 "<tt>" |
al@18840 | 828 +#define FC3 "</tt>" |
al@18840 | 829 |
al@18840 | 830 char *switchfont[16] = { "" , FC0 FO1, FC0 FO2, FC0 FO3, |
al@18840 | 831 FC1 FO0, "" , FC1 FO2, FC1 FO3, |
al@18840 | 832 @@ -588,14 +556,16 @@ |
al@18840 | 833 i=current_font; |
al@18840 | 834 sizebuf[0]=0; |
al@18840 | 835 strcat(sizebuf, change_to_font(0)); |
al@18840 | 836 - if (current_size) strcat(sizebuf, "</FONT>"); |
al@18840 | 837 + if (current_size) strcat(sizebuf, "</span>"); |
al@18840 | 838 current_size=nr; |
al@18840 | 839 if (nr) { |
al@18840 | 840 int l; |
al@18840 | 841 - strcat(sizebuf, "<FONT SIZE=\""); |
al@18840 | 842 + strcat(sizebuf, "<span style=\"font-size: "); |
al@18840 | 843 l=strlen(sizebuf); |
al@18840 | 844 if (nr>0) sizebuf[l++]='+'; else sizebuf[l++]='-',nr=-nr; |
al@18840 | 845 sizebuf[l++]=nr+'0'; |
al@18840 | 846 + sizebuf[l++]='p'; |
al@18840 | 847 + sizebuf[l++]='t'; |
al@18840 | 848 sizebuf[l++]='"'; |
al@18840 | 849 sizebuf[l++]='>'; |
al@18840 | 850 sizebuf[l]=0; |
al@18840 | 851 @@ -775,7 +745,7 @@ |
al@18840 | 852 skip_escape=exskipescape; |
al@18840 | 853 intresult=j; |
al@18840 | 854 break; |
al@18840 | 855 - case 'l': h="<HR>"; curpos=0; |
al@18840 | 856 + case 'l': h="<hr>"; curpos=0; |
al@18840 | 857 case 'b': |
al@18840 | 858 case 'v': |
al@18840 | 859 case 'x': |
al@18840 | 860 @@ -812,7 +782,7 @@ |
al@18840 | 861 case 'c': no_newline_output=1; break; |
al@18840 | 862 case '{': newline_for_fun++; h="";break; |
al@18840 | 863 case '}': if (newline_for_fun) newline_for_fun--; h="";break; |
al@18840 | 864 - case 'p': h="<BR>\n";curpos=0; break; |
al@18840 | 865 + case 'p': h="<br>\n";curpos=0; break; |
al@18840 | 866 case 't': h="\t";curpos=(curpos+8)&0xfff8; break; |
al@18840 | 867 case '<': h="<";curpos++; break; |
al@18840 | 868 case '>': h=">";curpos++; break; |
al@18840 | 869 @@ -1021,7 +991,7 @@ |
al@18840 | 870 out_html(change_to_size(0)); |
al@18840 | 871 if (!fillout) { |
al@18840 | 872 fillout=1; |
al@18840 | 873 - out_html("</PRE>"); |
al@18840 | 874 + out_html("</pre>"); |
al@18840 | 875 } |
al@18840 | 876 while (*h && *h!='\n') h++; |
al@18840 | 877 if (h[-1]==';') { |
al@18840 | 878 @@ -1197,45 +1167,45 @@ |
al@18840 | 879 currow=currow->prev; |
al@18840 | 880 } |
al@18840 | 881 /* produce html output */ |
al@18840 | 882 - if (center) out_html("<CENTER>"); |
al@18840 | 883 - if (box==2) out_html("<TABLE BORDER><TR><TD>"); |
al@18840 | 884 - out_html("<TABLE"); |
al@18840 | 885 + if (center) out_html("<div style=\"margin: 0 auto\">"); |
al@18840 | 886 + if (box==2) out_html("<table border><tr><td>"); |
al@18840 | 887 + out_html("<table"); |
al@18840 | 888 if (box || border) { |
al@18840 | 889 - out_html(" BORDER"); |
al@18840 | 890 - if (!border) out_html("><TR><TD><TABLE"); |
al@18840 | 891 - if (expand) out_html(" WIDTH=100%"); |
al@18840 | 892 + out_html(" border"); |
al@18840 | 893 + if (!border) out_html("><tr><td><table"); |
al@18840 | 894 + if (expand) out_html(" width=100%"); |
al@18840 | 895 } |
al@18840 | 896 out_html(">\n"); |
al@18840 | 897 currow=layout; |
al@18840 | 898 while (currow) { |
al@18840 | 899 j=0; |
al@18840 | 900 - out_html("<TR VALIGN=top>"); |
al@18840 | 901 + out_html("<tr style=\"vertical-align: top\">"); |
al@18840 | 902 curfield=currow->first; |
al@18840 | 903 while (curfield) { |
al@18840 | 904 if (curfield->align!='S' && curfield->align!='^') { |
al@18840 | 905 - out_html("<TD"); |
al@18840 | 906 + out_html("<td"); |
al@18840 | 907 switch (curfield->align) { |
al@18840 | 908 case 'N': |
al@18840 | 909 curfield->space+=4; |
al@18840 | 910 case 'R': |
al@18840 | 911 - out_html(" ALIGN=right"); |
al@18840 | 912 + out_html(" style=\"text-align: right\""); |
al@18840 | 913 break; |
al@18840 | 914 case 'C': |
al@18840 | 915 - out_html(" ALIGN=center"); |
al@18840 | 916 + out_html(" style=\"text-align: center\""); |
al@18840 | 917 default: |
al@18840 | 918 break; |
al@18840 | 919 } |
al@18840 | 920 if (!curfield->valign && curfield->rowspan>1) |
al@18840 | 921 - out_html(" VALIGN=center"); |
al@18840 | 922 + out_html(" style=\"vertical-align: center\""); |
al@18840 | 923 if (curfield->colspan>1) { |
al@18840 | 924 char buf[5]; |
al@18840 | 925 - out_html(" COLSPAN="); |
al@18840 | 926 + out_html(" colspan="); |
al@18840 | 927 sprintf(buf, "%i", curfield->colspan); |
al@18840 | 928 out_html(buf); |
al@18840 | 929 } |
al@18840 | 930 if (curfield->rowspan>1) { |
al@18840 | 931 char buf[5]; |
al@18840 | 932 - out_html(" ROWSPAN="); |
al@18840 | 933 + out_html(" rowspan="); |
al@18840 | 934 sprintf(buf, "%i", curfield->rowspan); |
al@18840 | 935 out_html(buf); |
al@18840 | 936 } |
al@18840 | 937 @@ -1244,8 +1214,8 @@ |
al@18840 | 938 if (curfield->size) out_html(change_to_size(curfield->size)); |
al@18840 | 939 if (curfield->font) out_html(change_to_font(curfield->font)); |
al@18840 | 940 switch (curfield->align) { |
al@18840 | 941 - case '=': out_html("<HR><HR>"); break; |
al@18840 | 942 - case '_': out_html("<HR>"); break; |
al@18840 | 943 + case '=': out_html("<hr><hr>"); break; |
al@18840 | 944 + case '_': out_html("<hr>"); break; |
al@18840 | 945 default: |
al@18840 | 946 if (curfield->contents) out_html(curfield->contents); |
al@18840 | 947 break; |
al@18840 | 948 @@ -1255,20 +1225,20 @@ |
al@18840 | 949 if (curfield->font) out_html(change_to_font(0)); |
al@18840 | 950 if (curfield->size) out_html(change_to_size(0)); |
al@18840 | 951 if (j>=maxcol && curfield->align>'@' && curfield->align!='_') |
al@18840 | 952 - out_html("<BR>"); |
al@18840 | 953 - out_html("</TD>"); |
al@18840 | 954 + out_html("<br>"); |
al@18840 | 955 + out_html("</td>"); |
al@18840 | 956 } |
al@18840 | 957 curfield=curfield->next; |
al@18840 | 958 } |
al@18840 | 959 - out_html("</TR>\n"); |
al@18840 | 960 + out_html("</tr>\n"); |
al@18840 | 961 currow=currow->next; |
al@18840 | 962 } |
al@18840 | 963 - if (box && !border) out_html("</TABLE>"); |
al@18840 | 964 - out_html("</TABLE>"); |
al@18840 | 965 - if (box==2) out_html("</TABLE>"); |
al@18840 | 966 - if (center) out_html("</CENTER>\n"); |
al@18840 | 967 + if (box && !border) out_html("</table>"); |
al@18840 | 968 + out_html("</table>"); |
al@18840 | 969 + if (box==2) out_html("</table>"); |
al@18840 | 970 + if (center) out_html("</div>\n"); |
al@18840 | 971 else out_html("\n"); |
al@18840 | 972 - if (!oldfillout) out_html("<PRE>"); |
al@18840 | 973 + if (!oldfillout) out_html("<pre>"); |
al@18840 | 974 fillout=oldfillout; |
al@18840 | 975 out_html(change_to_size(oldsize)); |
al@18840 | 976 out_html(change_to_font(oldfont)); |
al@18840 | 977 @@ -1401,7 +1371,7 @@ |
al@18840 | 978 case '&': value = (value && value2); break; |
al@18840 | 979 case ':': value = (value || value2); break; |
al@18840 | 980 default: fprintf(stderr, |
al@18840 | 981 - "man2html: Unknown operator %c.\n", oper); |
al@18840 | 982 + _("man2html: Unknown operator %c.\n"), oper); |
al@18840 | 983 } |
al@18840 | 984 oper=0; |
al@18840 | 985 } |
al@18840 | 986 @@ -1489,42 +1459,42 @@ |
al@18840 | 987 |
al@18840 | 988 |
al@18840 | 989 char *section_list[] = { |
al@18840 | 990 - "1", "User Commands ", |
al@18840 | 991 - "1C", "User Commands", |
al@18840 | 992 - "1G", "User Commands", |
al@18840 | 993 - "1S", "User Commands", |
al@18840 | 994 - "1V", "User Commands ", |
al@18840 | 995 - "2", "System Calls", |
al@18840 | 996 - "2V", "System Calls", |
al@18840 | 997 - "3", "C Library Functions", |
al@18840 | 998 - "3C", "Compatibility Functions", |
al@18840 | 999 - "3F", "Fortran Library Routines", |
al@18840 | 1000 - "3K", "Kernel VM Library Functions", |
al@18840 | 1001 - "3L", "Lightweight Processes Library", |
al@18840 | 1002 - "3M", "Mathematical Library", |
al@18840 | 1003 - "3N", "Network Functions", |
al@18840 | 1004 - "3R", "RPC Services Library", |
al@18840 | 1005 - "3S", "Standard I/O Functions", |
al@18840 | 1006 - "3V", "C Library Functions", |
al@18840 | 1007 - "3X", "Miscellaneous Library Functions", |
al@18840 | 1008 - "4", "Devices and Network Interfaces", |
al@18840 | 1009 - "4F", "Protocol Families", |
al@18840 | 1010 - "4I", "Devices and Network Interfaces", |
al@18840 | 1011 - "4M", "Devices and Network Interfaces", |
al@18840 | 1012 - "4N", "Devices and Network Interfaces", |
al@18840 | 1013 - "4P", "Protocols", |
al@18840 | 1014 - "4S", "Devices and Network Interfaces", |
al@18840 | 1015 - "4V", "Devices and Network Interfaces", |
al@18840 | 1016 - "5", "File Formats", |
al@18840 | 1017 - "5V", "File Formats", |
al@18840 | 1018 - "6", "Games and Demos", |
al@18840 | 1019 - "7", "Environments, Tables, and Troff Macros", |
al@18840 | 1020 - "7V", "Environments, Tables, and Troff Macros", |
al@18840 | 1021 - "8", "Maintenance Commands", |
al@18840 | 1022 - "8C", "Maintenance Commands", |
al@18840 | 1023 - "8S", "Maintenance Commands", |
al@18840 | 1024 - "8V", "Maintenance Commands", |
al@18840 | 1025 - "L", "Local Commands", |
al@18840 | 1026 + "1", N_("User Commands"), |
al@18840 | 1027 + "1C", N_("User Commands"), |
al@18840 | 1028 + "1G", N_("User Commands"), |
al@18840 | 1029 + "1S", N_("User Commands"), |
al@18840 | 1030 + "1V", N_("User Commands"), |
al@18840 | 1031 + "2", N_("System Calls"), |
al@18840 | 1032 + "2V", N_("System Calls"), |
al@18840 | 1033 + "3", N_("C Library Functions"), |
al@18840 | 1034 + "3C", N_("Compatibility Functions"), |
al@18840 | 1035 + "3F", N_("Fortran Library Routines"), |
al@18840 | 1036 + "3K", N_("Kernel VM Library Functions"), |
al@18840 | 1037 + "3L", N_("Lightweight Processes Library"), |
al@18840 | 1038 + "3M", N_("Mathematical Library"), |
al@18840 | 1039 + "3N", N_("Network Functions"), |
al@18840 | 1040 + "3R", N_("RPC Services Library"), |
al@18840 | 1041 + "3S", N_("Standard I/O Functions"), |
al@18840 | 1042 + "3V", N_("C Library Functions"), |
al@18840 | 1043 + "3X", N_("Miscellaneous Library Functions"), |
al@18840 | 1044 + "4", N_("Devices and Network Interfaces"), |
al@18840 | 1045 + "4F", N_("Protocol Families"), |
al@18840 | 1046 + "4I", N_("Devices and Network Interfaces"), |
al@18840 | 1047 + "4M", N_("Devices and Network Interfaces"), |
al@18840 | 1048 + "4N", N_("Devices and Network Interfaces"), |
al@18840 | 1049 + "4P", N_("Protocols"), |
al@18840 | 1050 + "4S", N_("Devices and Network Interfaces"), |
al@18840 | 1051 + "4V", N_("Devices and Network Interfaces"), |
al@18840 | 1052 + "5", N_("File Formats"), |
al@18840 | 1053 + "5V", N_("File Formats"), |
al@18840 | 1054 + "6", N_("Games and Demos"), |
al@18840 | 1055 + "7", N_("Environments, Tables, and Troff Macros"), |
al@18840 | 1056 + "7V", N_("Environments, Tables, and Troff Macros"), |
al@18840 | 1057 + "8", N_("Maintenance Commands"), |
al@18840 | 1058 + "8C", N_("Maintenance Commands"), |
al@18840 | 1059 + "8S", N_("Maintenance Commands"), |
al@18840 | 1060 + "8V", N_("Maintenance Commands"), |
al@18840 | 1061 + "L", N_("Local Commands"), |
al@18840 | 1062 /* for Solaris: |
al@18840 | 1063 "1", "User Commands", |
al@18840 | 1064 "1B", "SunOS/BSD Compatibility Package Commands", |
al@18840 | 1065 @@ -1593,7 +1563,7 @@ |
al@18840 | 1066 "9s", "DDI and DKI Data Structures", |
al@18840 | 1067 "L", "Local Commands", |
al@18840 | 1068 */ |
al@18840 | 1069 - NULL, "Misc. Reference Manual Pages", |
al@18840 | 1070 + NULL, N_("Misc. Reference Manual Pages"), |
al@18840 | 1071 NULL, NULL |
al@18840 | 1072 }; |
al@18840 | 1073 |
al@18840 | 1074 @@ -1604,7 +1574,7 @@ |
al@18840 | 1075 |
al@18840 | 1076 if (!c) return ""; |
al@18840 | 1077 while (section_list[i] && strcmp(c,section_list[i])) i=i+2; |
al@18840 | 1078 - if (section_list[i+1]) return section_list[i+1]; |
al@18840 | 1079 + if (section_list[i+1]) return _(section_list[i+1]); |
al@18840 | 1080 else return c; |
al@18840 | 1081 } |
al@18840 | 1082 |
al@18840 | 1083 @@ -1636,10 +1606,10 @@ |
al@18840 | 1084 if (level != subs) { |
al@18840 | 1085 manidx_need(6); |
al@18840 | 1086 if (subs) { |
al@18840 | 1087 - strcpy(manidx+mip, "</DL>\n"); |
al@18840 | 1088 + strcpy(manidx+mip, "</dl>\n"); |
al@18840 | 1089 mip += 6; |
al@18840 | 1090 } else { |
al@18840 | 1091 - strcpy(manidx+mip, "<DL>\n"); |
al@18840 | 1092 + strcpy(manidx+mip, "<dl>\n"); |
al@18840 | 1093 mip += 5; |
al@18840 | 1094 } |
al@18840 | 1095 } |
al@18840 | 1096 @@ -1647,7 +1617,7 @@ |
al@18840 | 1097 |
al@18840 | 1098 scan_troff(item, 1, &c); |
al@18840 | 1099 manidx_need(100 + strlen(c)); |
al@18840 | 1100 - sprintf(manidx+mip, "<DT><A HREF=\"#%s\">%s</A><DD>\n", label, c); |
al@18840 | 1101 + sprintf(manidx+mip, "<dt><a href=\"#%s\">%s</a></dt><dd>\n", label, c); |
al@18840 | 1102 if (c) free(c); |
al@18840 | 1103 while (manidx[mip]) mip++; |
al@18840 | 1104 } |
al@18840 | 1105 @@ -1834,8 +1804,8 @@ |
al@18840 | 1106 } |
al@18840 | 1107 break; |
al@18840 | 1108 case V('b','r'): |
al@18840 | 1109 - if (still_dd) out_html("<DD>"); |
al@18840 | 1110 - else out_html("<BR>\n"); |
al@18840 | 1111 + if (still_dd) out_html("<dd>"); |
al@18840 | 1112 + else out_html("<br>\n"); |
al@18840 | 1113 curpos=0; |
al@18840 | 1114 c=c+j; |
al@18840 | 1115 if (c[0] == escapesym) { c=scan_escape(c+1); } |
al@18840 | 1116 @@ -1865,17 +1835,17 @@ |
al@18840 | 1117 c=skip_till_newline(c); |
al@18840 | 1118 /* center next i lines */ |
al@18840 | 1119 if (i>0) { |
al@18840 | 1120 - out_html("<CENTER>\n"); |
al@18840 | 1121 + out_html("<div style=\"margin: 0 auto\">\n"); |
al@18840 | 1122 while (i && *c) { |
al@18840 | 1123 char *line=NULL; |
al@18840 | 1124 c=scan_troff(c,1, &line); |
al@18840 | 1125 - if (line && strncmp(line, "<BR>", 4)) { |
al@18840 | 1126 + if (line && strncmp(line, "<br>", 4)) { |
al@18840 | 1127 out_html(line); |
al@18840 | 1128 - out_html("<BR>\n"); |
al@18840 | 1129 + out_html("<br>\n"); |
al@18840 | 1130 i--; |
al@18840 | 1131 } |
al@18840 | 1132 } |
al@18840 | 1133 - out_html("</CENTER>\n"); |
al@18840 | 1134 + out_html("</div>\n"); |
al@18840 | 1135 curpos=0; |
al@18840 | 1136 } |
al@18840 | 1137 break; |
al@18840 | 1138 @@ -1906,7 +1876,7 @@ |
al@18840 | 1139 if (!fillout) { |
al@18840 | 1140 out_html(change_to_font(0)); |
al@18840 | 1141 out_html(change_to_size('0')); |
al@18840 | 1142 - out_html("</PRE>\n"); |
al@18840 | 1143 + out_html("</pre>\n"); |
al@18840 | 1144 } |
al@18840 | 1145 curpos=0; |
al@18840 | 1146 fillout=1; |
al@18840 | 1147 @@ -1981,7 +1951,7 @@ |
al@18840 | 1148 if (fillout) { |
al@18840 | 1149 out_html(change_to_font(0)); |
al@18840 | 1150 out_html(change_to_size('0')); |
al@18840 | 1151 - out_html("<PRE>\n"); |
al@18840 | 1152 + out_html("<pre>\n"); |
al@18840 | 1153 } |
al@18840 | 1154 curpos=0; |
al@18840 | 1155 fillout=0; |
al@18840 | 1156 @@ -2002,7 +1972,7 @@ |
al@18840 | 1157 break; |
al@18840 | 1158 case V('s','p'): |
al@18840 | 1159 c=c+j; |
al@18840 | 1160 - if (fillout) out_html("<P>"); else { |
al@18840 | 1161 + if (fillout) out_html("<p>"); else { |
al@18840 | 1162 out_html(NEWLINE); |
al@18840 | 1163 NEWLINE[0]='\n'; |
al@18840 | 1164 } |
al@18840 | 1165 @@ -2033,30 +2003,15 @@ |
al@18840 | 1166 *c = 0; |
al@18840 | 1167 scan_troff(h,1, &name); |
al@18840 | 1168 if (name[3] == '/') h=name+3; else h=name; |
al@18840 | 1169 -#if NOCGI |
al@18840 | 1170 - if (!out_length) { |
al@18840 | 1171 - char *t,*s; |
al@18840 | 1172 - t=strrchr(fname, '/'); |
al@18840 | 1173 - if (!t) t=fname; |
al@18840 | 1174 - fprintf(stderr, "ln -s %s.html %s.html\n", h, t); |
al@18840 | 1175 - s=strrchr(t, '.');if (!s) s=t; |
al@18840 | 1176 - printf(CONTENTTYPE DOCTYPE); |
al@18840 | 1177 - printf("<HTML><HEAD><TITLE> Man page of %s</TITLE>\n" |
al@18840 | 1178 - "</HEAD><BODY>\n" |
al@18840 | 1179 - "See the man page for <A HREF=\"%s.html\">%s</A>.\n" |
al@18840 | 1180 - "</BODY></HTML>\n", |
al@18840 | 1181 - s, h, h); |
al@18840 | 1182 - } else |
al@18840 | 1183 -#endif |
al@18840 | 1184 { |
al@18840 | 1185 /* this works alright, except for section 3 */ |
al@18840 | 1186 if ((l = read_manpage_into_buffer(h, &buf)) < 0) { |
al@18840 | 1187 fprintf(stderr, |
al@18840 | 1188 - "man2html: unable to open or read file %s\n", h); |
al@18840 | 1189 - out_html("<BLOCKQUOTE>" |
al@18840 | 1190 - "man2html: unable to open or read file\n"); |
al@18840 | 1191 + _("man2html: unable to open or read file %s\n"), h); |
al@18840 | 1192 + out_html("<blockquote>"); |
al@18840 | 1193 + out_html(_("man2html: unable to open or read file\n")); |
al@18840 | 1194 out_html(h); |
al@18840 | 1195 - out_html("</BLOCKQUOTE>\n"); |
al@18840 | 1196 + out_html("</blockquote>\n"); |
al@18840 | 1197 } else { |
al@18840 | 1198 buf[0]=buf[l]='\n'; |
al@18840 | 1199 buf[l+1]=buf[l+2]=0; |
al@18840 | 1200 @@ -2085,7 +2040,7 @@ |
al@18840 | 1201 #if 0 |
al@18840 | 1202 dl_down(); |
al@18840 | 1203 #endif |
al@18840 | 1204 - out_html("<BR>\n"); |
al@18840 | 1205 + out_html("<br>\n"); |
al@18840 | 1206 c=c+j; |
al@18840 | 1207 c=scan_expression(c, &j); |
al@18840 | 1208 for (i=0; i<j; i++) out_html(" "); |
al@18840 | 1209 @@ -2163,7 +2118,7 @@ |
al@18840 | 1210 if (words) { |
al@18840 | 1211 scan_troff(wordlist[0], 1,NULL); |
al@18840 | 1212 } |
al@18840 | 1213 - out_html("<DD>"); |
al@18840 | 1214 + out_html("<dd>"); |
al@18840 | 1215 curpos = 0; |
al@18840 | 1216 break; |
al@18840 | 1217 case V('T','P'): |
al@18840 | 1218 @@ -2172,7 +2127,7 @@ |
al@18840 | 1219 /* somewhere a definition ends with '.TP' */ |
al@18840 | 1220 if (!*c) still_dd=1; else { |
al@18840 | 1221 c=scan_troff(c,1,NULL); |
al@18840 | 1222 - out_html("<DD>"); |
al@18840 | 1223 + out_html("<dd>"); |
al@18840 | 1224 } |
al@18840 | 1225 curpos=0; |
al@18840 | 1226 break; |
al@18840 | 1227 @@ -2195,20 +2150,20 @@ |
al@18840 | 1228 fprintf(idxfile,"\n"); |
al@18840 | 1229 } |
al@18840 | 1230 #endif |
al@18840 | 1231 - out_html("<A NAME=\""); |
al@18840 | 1232 + out_html("<span id=\""); |
al@18840 | 1233 out_html(idxlabel); |
al@18840 | 1234 /* this will not work in mosaic (due to a bug). |
al@18840 | 1235 ** Adding ' ' between '>' and '<' solves it, but creates |
al@18840 | 1236 ** some space. A normal space does not work. |
al@18840 | 1237 */ |
al@18840 | 1238 - out_html("\"></A>"); |
al@18840 | 1239 + out_html("\"></span>"); |
al@18840 | 1240 break; |
al@18840 | 1241 case V('P',' '): |
al@18840 | 1242 case V('P','\n'): |
al@18840 | 1243 case V('L','P'): |
al@18840 | 1244 case V('P','P'): |
al@18840 | 1245 dl_end(); |
al@18840 | 1246 - if (fillout) out_html("<P>\n"); else { |
al@18840 | 1247 + if (fillout) out_html("<p>\n"); else { |
al@18840 | 1248 out_html(NEWLINE); |
al@18840 | 1249 NEWLINE[0]='\n'; |
al@18840 | 1250 } |
al@18840 | 1251 @@ -2272,19 +2227,29 @@ |
al@18840 | 1252 out_html(change_to_size(0)); |
al@18840 | 1253 if (!fillout) { |
al@18840 | 1254 fillout=1; |
al@18840 | 1255 - out_html("</PRE>"); |
al@18840 | 1256 + out_html("</pre>"); |
al@18840 | 1257 } |
al@18840 | 1258 trans_char(c,'"', '\a'); |
al@18840 | 1259 add_to_index(mode, c); |
al@18840 | 1260 - out_html("<A NAME=\""); |
al@18840 | 1261 - out_html(label); |
al@18840 | 1262 - /* for mosaic users */ |
al@18840 | 1263 - if (mode) out_html("\"> </A>\n<H3>"); |
al@18840 | 1264 - else out_html("\"> </A>\n<H2>"); |
al@18840 | 1265 + |
al@18840 | 1266 + if (mode) { |
al@18840 | 1267 + out_html("<h3 id=\""); |
al@18840 | 1268 + out_html(label); |
al@18840 | 1269 + out_html("\">"); |
al@18840 | 1270 + } else { |
al@18840 | 1271 + out_html("</section>\n\n<section id=\""); |
al@18840 | 1272 + out_html(label); |
al@18840 | 1273 + out_html("\">\n<h2>"); |
al@18840 | 1274 + } |
al@18840 | 1275 + |
al@18840 | 1276 mandoc_synopsis = (strncmp(c, "SYNOPSIS", 8) == 0); |
al@18840 | 1277 c = (mandoc_command ? scan_troff_mandoc : scan_troff)(c,1,NULL); |
al@18840 | 1278 - if (mode) out_html("</H3>\n"); |
al@18840 | 1279 - else out_html("</H2>\n"); |
al@18840 | 1280 + |
al@18840 | 1281 + if (mode) |
al@18840 | 1282 + out_html("</h3>\n"); |
al@18840 | 1283 + else |
al@18840 | 1284 + out_html("</h2>\n"); |
al@18840 | 1285 + |
al@18840 | 1286 curpos=0; |
al@18840 | 1287 break; |
al@18840 | 1288 case V('T','S'): |
al@18840 | 1289 @@ -2315,7 +2280,7 @@ |
al@18840 | 1290 int skip=0; |
al@18840 | 1291 output_possible=1; |
al@18840 | 1292 printf(CONTENTTYPE DOCTYPE); |
al@18840 | 1293 - out_html("<HTML><HEAD><TITLE>Man page of "); |
al@18840 | 1294 + out_html("<html><head>\n<meta charset=\"UTF-8\">\n<title>"); |
al@18840 | 1295 scan_troff(wordlist[0], 0, &t); |
al@18840 | 1296 /* we need to remove all html tags */ |
al@18840 | 1297 for (s=q=t; *s; s++) { |
al@18840 | 1298 @@ -2324,11 +2289,14 @@ |
al@18840 | 1299 else if (!skip) *q++ = *s; |
al@18840 | 1300 } |
al@18840 | 1301 *q = '\0'; |
al@18840 | 1302 - out_html(t); |
al@18840 | 1303 + char buff[256]; |
al@18840 | 1304 + sprintf(buff, _("Man page of %s"), t); |
al@18840 | 1305 + out_html(buff); |
al@18840 | 1306 free(t); |
al@18840 | 1307 - out_html("</TITLE>\n</HEAD><BODY>\n<H1>"); |
al@18840 | 1308 + out_html("</title>\n<link rel=\"stylesheet\" href=\"?css\">\n</head><body>\n<header><h1>"); |
al@18840 | 1309 scan_troff(wordlist[0], 0, NULL); |
al@18840 | 1310 - out_html("</H1>\nSection: "); |
al@18840 | 1311 + out_html("</h1></header>\n<section>\n"); |
al@18840 | 1312 + out_html(_("Section: ")); |
al@18840 | 1313 if (words>4) |
al@18840 | 1314 scan_troff(wordlist[4], 0, NULL); |
al@18840 | 1315 else |
al@18840 | 1316 @@ -2336,14 +2304,17 @@ |
al@18840 | 1317 out_html(" ("); |
al@18840 | 1318 scan_troff(wordlist[1], 0, NULL); |
al@18840 | 1319 if (words>2) { |
al@18840 | 1320 - out_html(")<BR>Updated: "); |
al@18840 | 1321 + out_html(")<br>"); |
al@18840 | 1322 + out_html(_("Updated: ")); |
al@18840 | 1323 scan_troff(wordlist[2], 1, NULL); |
al@18840 | 1324 } else out_html(")"); |
al@18840 | 1325 - out_html("<BR><A HREF=\"#index\">Index</A>\n"); |
al@18840 | 1326 + out_html("<br><a href=\"#index\">"); |
al@18840 | 1327 + out_html(_("Index")); |
al@18840 | 1328 + out_html("</a>\n"); |
al@18840 | 1329 man_page_html(0,0); /* Return to Main Contents */ |
al@18840 | 1330 *sl='\n'; |
al@18840 | 1331 - out_html("<HR>\n"); |
al@18840 | 1332 - if (mandoc_command) out_html("<BR>BSD mandoc<BR>"); |
al@18840 | 1333 + out_html("<hr>\n"); |
al@18840 | 1334 + if (mandoc_command) out_html("<br>\nBSD mandoc<br>"); |
al@18840 | 1335 } |
al@18840 | 1336 c = sl+1; |
al@18840 | 1337 } else |
al@18840 | 1338 @@ -2507,7 +2478,7 @@ |
al@18840 | 1339 dl_newlevel_type(DL); |
al@18840 | 1340 if (nl) |
al@18840 | 1341 *nl = t; |
al@18840 | 1342 - if (fillout) out_html("<P>\n"); else { |
al@18840 | 1343 + if (fillout) out_html("<p>\n"); else { |
al@18840 | 1344 out_html(NEWLINE); |
al@18840 | 1345 NEWLINE[0]='\n'; |
al@18840 | 1346 } |
al@18840 | 1347 @@ -2518,7 +2489,7 @@ |
al@18840 | 1348 case V('E','l'): /* BSD mandoc */ |
al@18840 | 1349 c=c+j; |
al@18840 | 1350 dl_endlevel_type(); |
al@18840 | 1351 - if (fillout) out_html("<P>\n"); else { |
al@18840 | 1352 + if (fillout) out_html("<p>\n"); else { |
al@18840 | 1353 out_html(NEWLINE); |
al@18840 | 1354 NEWLINE[0]='\n'; |
al@18840 | 1355 } |
al@18840 | 1356 @@ -2528,7 +2499,7 @@ |
al@18840 | 1357 case V('I','t'): /* BSD mandoc */ |
al@18840 | 1358 c=c+j; |
al@18840 | 1359 if (dl_type(DL)) { |
al@18840 | 1360 - out_html("<DT>"); |
al@18840 | 1361 + out_html("<dt>"); |
al@18840 | 1362 out_html(change_to_font('B')); |
al@18840 | 1363 if (*c == '\n') { |
al@18840 | 1364 /* Don't allow embedded comms after a newline */ |
al@18840 | 1365 @@ -2543,9 +2514,9 @@ |
al@18840 | 1366 if (inXo) |
al@18840 | 1367 still_dd = 1; |
al@18840 | 1368 else |
al@18840 | 1369 - out_html("<DD>"); |
al@18840 | 1370 + out_html("<dd>"); |
al@18840 | 1371 } else if (dl_type(UL) || dl_type(OL)) { |
al@18840 | 1372 - out_html("<LI>"); |
al@18840 | 1373 + out_html("<li>"); |
al@18840 | 1374 c=scan_troff_mandoc(c,1,NULL); |
al@18840 | 1375 out_html(NEWLINE); |
al@18840 | 1376 } |
al@18840 | 1377 @@ -2559,7 +2530,7 @@ |
al@18840 | 1378 c=c+j; |
al@18840 | 1379 if (inXo) { |
al@18840 | 1380 if (still_dd) |
al@18840 | 1381 - out_html("<DD>"); |
al@18840 | 1382 + out_html("<dd>"); |
al@18840 | 1383 inXo = 0; |
al@18840 | 1384 } |
al@18840 | 1385 break; |
al@18840 | 1386 @@ -2594,12 +2565,12 @@ |
al@18840 | 1387 case V('D','l'): /* BSD mandoc */ |
al@18840 | 1388 c=c+j; |
al@18840 | 1389 out_html(NEWLINE); |
al@18840 | 1390 - out_html("<BLOCKQUOTE>"); |
al@18840 | 1391 + out_html("<blockquote>"); |
al@18840 | 1392 out_html(change_to_font('L')); |
al@18840 | 1393 if (*c == '\n') c++; |
al@18840 | 1394 c=scan_troff_mandoc(c, 1, NULL); |
al@18840 | 1395 out_html(change_to_font('R')); |
al@18840 | 1396 - out_html("</BLOCKQUOTE>"); |
al@18840 | 1397 + out_html("</blockquote>"); |
al@18840 | 1398 if (fillout) curpos++; else curpos=0; |
al@18840 | 1399 break; |
al@18840 | 1400 case V('B','d'): /* BSD mandoc */ |
al@18840 | 1401 @@ -2615,14 +2586,14 @@ |
al@18840 | 1402 mandoc_bd_options = 0; /* Remember options for terminating Bl */ |
al@18840 | 1403 if (strstr(c, "-offset indent")) { |
al@18840 | 1404 mandoc_bd_options |= BD_INDENT; |
al@18840 | 1405 - out_html("<BLOCKQUOTE>\n"); |
al@18840 | 1406 + out_html("<blockquote>\n"); |
al@18840 | 1407 } |
al@18840 | 1408 if (strstr(c, "-literal") || strstr(c, "-unfilled")) { |
al@18840 | 1409 if (fillout) { |
al@18840 | 1410 mandoc_bd_options |= BD_LITERAL; |
al@18840 | 1411 out_html(change_to_font(0)); |
al@18840 | 1412 out_html(change_to_size('0')); |
al@18840 | 1413 - out_html("<PRE>\n"); |
al@18840 | 1414 + out_html("<pre>\n"); |
al@18840 | 1415 } |
al@18840 | 1416 curpos=0; |
al@18840 | 1417 fillout=0; |
al@18840 | 1418 @@ -2637,18 +2608,18 @@ |
al@18840 | 1419 if (!fillout) { |
al@18840 | 1420 out_html(change_to_font(0)); |
al@18840 | 1421 out_html(change_to_size('0')); |
al@18840 | 1422 - out_html("</PRE>\n"); |
al@18840 | 1423 + out_html("</pre>\n"); |
al@18840 | 1424 } |
al@18840 | 1425 } |
al@18840 | 1426 if (mandoc_bd_options & BD_INDENT) |
al@18840 | 1427 - out_html("</BLOCKQUOTE>\n"); |
al@18840 | 1428 + out_html("</blockquote>\n"); |
al@18840 | 1429 curpos=0; |
al@18840 | 1430 fillout=1; |
al@18840 | 1431 c=skip_till_newline(c); |
al@18840 | 1432 break; |
al@18840 | 1433 case V('B','e'): /* BSD mandoc */ |
al@18840 | 1434 c=c+j; |
al@18840 | 1435 - if (fillout) out_html("<P>"); else { |
al@18840 | 1436 + if (fillout) out_html("<p>"); else { |
al@18840 | 1437 out_html(NEWLINE); |
al@18840 | 1438 NEWLINE[0]='\n'; |
al@18840 | 1439 } |
al@18840 | 1440 @@ -2715,7 +2686,7 @@ |
al@18840 | 1441 if (fillout) curpos++; else curpos=0; |
al@18840 | 1442 break; |
al@18840 | 1443 case V('P','p'): /* BSD mandoc */ |
al@18840 | 1444 - if (fillout) out_html("<P>\n"); else { |
al@18840 | 1445 + if (fillout) out_html("<p>\n"); else { |
al@18840 | 1446 out_html(NEWLINE); |
al@18840 | 1447 NEWLINE[0]='\n'; |
al@18840 | 1448 } |
al@18840 | 1449 @@ -2726,9 +2697,9 @@ |
al@18840 | 1450 trans_char(c,'"','\a'); |
al@18840 | 1451 c=c+j; |
al@18840 | 1452 if (*c == '\n') c++; |
al@18840 | 1453 - out_html("``"); |
al@18840 | 1454 + out_html("“"); |
al@18840 | 1455 c=scan_troff_mandoc(c, 1, NULL); |
al@18840 | 1456 - out_html("''"); |
al@18840 | 1457 + out_html("”"); |
al@18840 | 1458 out_html(NEWLINE); |
al@18840 | 1459 if (fillout) curpos++; else curpos=0; |
al@18840 | 1460 break; |
al@18840 | 1461 @@ -2800,12 +2771,22 @@ |
al@18840 | 1462 trans_char(c,'"','\a'); |
al@18840 | 1463 c=c+j; |
al@18840 | 1464 if (*c == '\n') c++; |
al@18840 | 1465 - out_html("`"); |
al@18840 | 1466 + out_html("‘"); |
al@18840 | 1467 c=scan_troff_mandoc(c, 1, NULL); |
al@18840 | 1468 - out_html("'"); |
al@18840 | 1469 + out_html("’"); |
al@18840 | 1470 out_html(NEWLINE); |
al@18840 | 1471 if (fillout) curpos++; else curpos=0; |
al@18840 | 1472 break; |
al@18840 | 1473 + case V('A','q'): /* BSD mandoc */ |
al@18840 | 1474 + trans_char(c,'"','\a'); |
al@18840 | 1475 + c=c+j; |
al@18840 | 1476 + if (*c == '\n') c++; |
al@18840 | 1477 + out_html("⟨"); |
al@18840 | 1478 + c=scan_troff_mandoc(c, 1, NULL); |
al@18840 | 1479 + out_html("⟩"); |
al@18840 | 1480 + out_html(NEWLINE); |
al@18840 | 1481 + if (fillout) curpos++; else curpos=0; |
al@18840 | 1482 + break; |
al@18840 | 1483 case V('A','r'): /* BSD mandoc */ |
al@18840 | 1484 /* parse one line in italics */ |
al@18840 | 1485 out_html(change_to_font('I')); |
al@18840 | 1486 @@ -2855,7 +2836,7 @@ |
al@18840 | 1487 */ |
al@18840 | 1488 static int count = 0; /* Don't break on the first Nm */ |
al@18840 | 1489 if (count) { |
al@18840 | 1490 - out_html("<BR>"); |
al@18840 | 1491 + out_html("<br>"); |
al@18840 | 1492 } else { |
al@18840 | 1493 char *end, t=0 /* just for gcc */; |
al@18840 | 1494 end = strchr(c, '\n'); |
al@18840 | 1495 @@ -3038,7 +3019,7 @@ |
al@18840 | 1496 if (h[-1] == '\n' && still_dd && isalnum(*h)) { |
al@18840 | 1497 /* sometimes a .HP request is not followed by a .br request */ |
al@18840 | 1498 FLUSHIBP; |
al@18840 | 1499 - out_html("<DD>"); |
al@18840 | 1500 + out_html("<dd>"); |
al@18840 | 1501 curpos=0; |
al@18840 | 1502 still_dd=0; |
al@18840 | 1503 } |
al@18840 | 1504 @@ -3108,12 +3089,12 @@ |
al@18840 | 1505 curpos++; |
al@18840 | 1506 } |
al@18840 | 1507 } else { |
al@18840 | 1508 - out_html("<TT>"); |
al@18840 | 1509 + out_html("<tt>"); |
al@18840 | 1510 while (curpos < tabstops[curtab]) { |
al@18840 | 1511 out_html(" "); |
al@18840 | 1512 curpos++; |
al@18840 | 1513 } |
al@18840 | 1514 - out_html("</TT>"); |
al@18840 | 1515 + out_html("</tt>"); |
al@18840 | 1516 } |
al@18840 | 1517 } |
al@18840 | 1518 } |
al@18840 | 1519 @@ -3122,7 +3103,7 @@ |
al@18840 | 1520 if (*h == ' ' && (h[-1] == '\n' || usenbsp)) { |
al@18840 | 1521 FLUSHIBP; |
al@18840 | 1522 if (!usenbsp && fillout) { |
al@18840 | 1523 - out_html("<BR>"); |
al@18840 | 1524 + out_html("<br>"); |
al@18840 | 1525 curpos=0; |
al@18840 | 1526 } |
al@18840 | 1527 usenbsp=fillout; |
al@18840 | 1528 @@ -3196,13 +3177,13 @@ |
al@18840 | 1529 |
al@18840 | 1530 switch(status) { |
al@18840 | 1531 case 403: |
al@18840 | 1532 - printf("Status: 403 Forbidden\n"); |
al@18840 | 1533 + printf("HTTP/1.1 403 Forbidden\n"); |
al@18840 | 1534 break; |
al@18840 | 1535 case 404: |
al@18840 | 1536 - printf("Status: 404 Not Found\n"); |
al@18840 | 1537 + printf("HTTP/1.1 404 Not Found\n"); |
al@18840 | 1538 break; |
al@18840 | 1539 case 500: |
al@18840 | 1540 - printf("Status: 500 Internal Server Error\n"); |
al@18840 | 1541 + printf("HTTP/1.1 500 Internal Server Error\n"); |
al@18840 | 1542 break; |
al@18840 | 1543 case 0: |
al@18840 | 1544 default: |
al@18840 | 1545 @@ -3210,12 +3191,13 @@ |
al@18840 | 1546 } |
al@18840 | 1547 |
al@18840 | 1548 printf(CONTENTTYPE DOCTYPE); |
al@18840 | 1549 - printf("<HTML><HEAD><TITLE>%s</TITLE></HEAD>\n" |
al@18840 | 1550 - "<BODY>\n<H1>%s</H1>\n", s, s); |
al@18840 | 1551 + printf("<html>\n<head>\n<meta charset=\"UTF-8\">\n<title>%s</title>\n" |
al@18840 | 1552 + "<link rel=\"stylesheet\" href=\"?css\">\n</head>\n" |
al@18840 | 1553 + "<body>\n<header><h1>%s</h1></header>\n<section>\n", s, s); |
al@18840 | 1554 va_start(p, t); |
al@18840 | 1555 vfprintf(stdout, t, p); |
al@18840 | 1556 va_end(p); |
al@18840 | 1557 - printf("</BODY></HTML>\n"); |
al@18840 | 1558 + printf("</section>\n</body></html>\n"); |
al@18840 | 1559 exit(0); |
al@18840 | 1560 } |
al@18840 | 1561 |
al@18840 | 1562 @@ -3223,8 +3205,8 @@ |
al@18840 | 1563 xstrdup(const char *s) { |
al@18840 | 1564 char *p = strdup(s); |
al@18840 | 1565 if (p == NULL) |
al@18840 | 1566 - error_page(500, "Out of memory", |
al@18840 | 1567 - "Sorry, out of memory, aborting...\n"); |
al@18840 | 1568 + error_page(500, _("Out of memory"), |
al@18840 | 1569 + _("Sorry, out of memory, aborting...\n")); |
al@18840 | 1570 return p; |
al@18840 | 1571 } |
al@18840 | 1572 |
al@18840 | 1573 @@ -3232,8 +3214,8 @@ |
al@18840 | 1574 xmalloc(size_t size) { |
al@18840 | 1575 void *p = malloc(size); |
al@18840 | 1576 if (p == NULL) |
al@18840 | 1577 - error_page(500, "Out of memory", |
al@18840 | 1578 - "Sorry, out of memory, aborting...\n"); |
al@18840 | 1579 + error_page(500, _("Out of memory"), |
al@18840 | 1580 + _("Sorry, out of memory, aborting...\n")); |
al@18840 | 1581 return p; |
al@18840 | 1582 } |
al@18840 | 1583 |
al@18840 | 1584 @@ -3241,16 +3223,16 @@ |
al@18840 | 1585 xrealloc(void *ptr, size_t size) { |
al@18840 | 1586 void *p = realloc(ptr,size); |
al@18840 | 1587 if (p == NULL) |
al@18840 | 1588 - error_page(500, "Out of memory", |
al@18840 | 1589 - "Sorry, out of memory, aborting...\n"); |
al@18840 | 1590 + error_page(500, _("Out of memory"), |
al@18840 | 1591 + _("Sorry, out of memory, aborting...\n")); |
al@18840 | 1592 return p; |
al@18840 | 1593 } |
al@18840 | 1594 |
al@18840 | 1595 static void |
al@18840 | 1596 usage(void) { |
al@18840 | 1597 - error_page(500, "man2html: bad invocation", |
al@18840 | 1598 - "Call: man2html [-l|-h host.domain:port] [-p|-q] [filename]\n" |
al@18840 | 1599 - "or: man2html -r [filename]\n"); |
al@18840 | 1600 + error_page(500, _("man2html: bad invocation"), |
al@18840 | 1601 + _("Call: man2html [-l|-h host.domain:port] [-p|-q] [filename]\n" |
al@18840 | 1602 + "or: man2html -r [filename]\n")); |
al@18840 | 1603 } |
al@18840 | 1604 |
al@18840 | 1605 static void |
al@18840 | 1606 @@ -3273,7 +3255,7 @@ |
al@18840 | 1607 } |
al@18840 | 1608 #if 0 |
al@18840 | 1609 else /* complain or not - this need not be fatal */ |
al@18840 | 1610 - error_page("Error", "man2html: could not chdir to %s", s); |
al@18840 | 1611 + error_page(_("Error"), _("man2html: could not chdir to %s"), s); |
al@18840 | 1612 #endif |
al@18840 | 1613 } |
al@18840 | 1614 } |
al@18840 | 1615 @@ -3291,6 +3273,11 @@ |
al@18840 | 1616 */ |
al@18840 | 1617 int |
al@18840 | 1618 main(int argc, char **argv) { |
al@18840 | 1619 + setlocale (LC_ALL, ""); |
al@18840 | 1620 + bindtextdomain (GETTEXT_PACKAGE, "/usr/share/locale"); |
al@18840 | 1621 + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); |
al@18840 | 1622 + textdomain (GETTEXT_PACKAGE); |
al@18840 | 1623 + |
al@18840 | 1624 int l, c; |
al@18840 | 1625 char *buf, *filename, *fnam = NULL; |
al@18840 | 1626 |
al@18840 | 1627 @@ -3309,7 +3296,7 @@ |
al@18840 | 1628 case 'D': |
al@18840 | 1629 goto_dir(optarg, 0, 0); break; |
al@18840 | 1630 case 'E': |
al@18840 | 1631 - error_page(0, "Error", "%s", optarg); break; |
al@18840 | 1632 + error_page(0, _("Error"), "%s", optarg); break; |
al@18840 | 1633 case 'h': |
al@18840 | 1634 set_cgibase("localhost"); break; |
al@18840 | 1635 case 'H': |
al@18840 | 1636 @@ -3362,7 +3349,7 @@ |
al@18840 | 1637 |
al@18840 | 1638 l = read_manpage_into_buffer(fnam, &buf); |
al@18840 | 1639 if (l < 0) |
al@18840 | 1640 - error_page(404, "File not found", "Could not open %s\n", fname); |
al@18840 | 1641 + error_page(404, _("File not found"), _("Could not open %s\n"), fname); |
al@18840 | 1642 |
al@18840 | 1643 buf[0] = '\n'; |
al@18840 | 1644 buf[l+1] = '\n'; |
al@18840 | 1645 @@ -3379,34 +3366,34 @@ |
al@18840 | 1646 out_html(change_to_size(0)); |
al@18840 | 1647 if (!fillout) { |
al@18840 | 1648 fillout=1; |
al@18840 | 1649 - out_html("</PRE>"); |
al@18840 | 1650 + out_html("</pre>"); |
al@18840 | 1651 } |
al@18840 | 1652 out_html(NEWLINE); |
al@18840 | 1653 if (output_possible) { |
al@18840 | 1654 /* for mosaic users */ |
al@18840 | 1655 if (manidx) { |
al@18840 | 1656 - printf("<HR>\n<A NAME=\"index\"> </A><H2>Index</H2>\n<DL>\n"); |
al@18840 | 1657 + printf("</section>\n\n<section id=\"index\">\n<h2>%s</h2>\n\n<dl>\n", _("Index")); |
al@18840 | 1658 manidx[mip]=0; |
al@18840 | 1659 printf("%s", manidx); |
al@18840 | 1660 - if (subs) printf("</DL>\n"); |
al@18840 | 1661 - printf("</DL>\n"); |
al@18840 | 1662 + if (subs) printf("</dl>\n"); |
al@18840 | 1663 + printf("</dl>\n"); |
al@18840 | 1664 } |
al@18840 | 1665 print_sig(); |
al@18840 | 1666 - printf("</BODY>\n</HTML>\n"); |
al@18840 | 1667 + printf("</body>\n</html>\n"); |
al@18840 | 1668 } else { |
al@18840 | 1669 if (!filename) |
al@18840 | 1670 filename = fname; |
al@18840 | 1671 if (*filename == '/') |
al@18840 | 1672 - error_page(403, "Invalid Man Page", |
al@18840 | 1673 - "The requested file %s is not a valid (unformatted) " |
al@18840 | 1674 + error_page(403, _("Invalid Man Page"), |
al@18840 | 1675 + _("The requested file %s is not a valid (unformatted) " |
al@18840 | 1676 "man page.\nIf the file is a formatted man page, " |
al@18840 | 1677 "you could try to load the\n" |
al@18840 | 1678 - "<A HREF=\"file://%s\">plain file</A>.\n", |
al@18840 | 1679 + "<a href=\"file://%s\">plain file</a>.\n"), |
al@18840 | 1680 filename, filename); |
al@18840 | 1681 else |
al@18840 | 1682 - error_page(403, "Invalid Man Page", |
al@18840 | 1683 - "The requested file %s is not a valid (unformatted) " |
al@18840 | 1684 - "man page.", filename); |
al@18840 | 1685 + error_page(403, _("Invalid Man Page"), |
al@18840 | 1686 + _("The requested file %s is not a valid (unformatted) " |
al@18840 | 1687 + "man page."), filename); |
al@18840 | 1688 } |
al@18840 | 1689 if (idxfile) |
al@18840 | 1690 fclose(idxfile); |
al@18840 | 1691 --- a/scripts/cgi-bin/man/man2html |
al@18840 | 1692 +++ b/scripts/cgi-bin/man/man2html |
al@18840 | 1693 @@ -8,11 +8,11 @@ |
al@18840 | 1694 |
al@18840 | 1695 # Do we need lynxcgi URLs? For the moment our criterion is |
al@18840 | 1696 # 1) HTTP_USER_AGENT=Lynx* and 2) HTTP_HOST is unset. |
al@18840 | 1697 -AGENT="${HTTP_USER_AGENT-unknown}" |
al@18840 | 1698 +AGENT="${HTTP_USER_AGENT:-unknown}" |
al@18840 | 1699 |
al@18840 | 1700 case "$AGENT" in |
al@18840 | 1701 Lynx*|lynx*) |
al@18840 | 1702 - HH="${HTTP_HOST-nohh}" |
al@18840 | 1703 + HH="${HTTP_HOST:-nohh}" |
al@18840 | 1704 SED="s/%lynx //" |
al@18840 | 1705 ;; |
al@18840 | 1706 *) |
al@18840 | 1707 @@ -21,7 +21,7 @@ |
al@18840 | 1708 ;; |
al@18840 | 1709 esac |
al@18840 | 1710 |
al@18840 | 1711 -SERVER="${SERVER_NAME-localhost}" |
al@18840 | 1712 +SERVER="${SERVER_NAME:-localhost}" |
al@18840 | 1713 case "$HH" in |
al@18840 | 1714 nohh) |
al@18840 | 1715 LL="-l" |
al@18840 | 1716 --- a/scripts/cgi-bin/man/mansearch |
al@18840 | 1717 +++ b/scripts/cgi-bin/man/mansearch |
al@18840 | 1718 @@ -7,11 +7,11 @@ |
al@18840 | 1719 |
al@18840 | 1720 # Do we need lynxcgi URLs? For the moment our criterion is |
al@18840 | 1721 # 1) HTTP_USER_AGENT=Lynx* and 2) HTTP_HOST is unset. |
al@18840 | 1722 -AGENT="${HTTP_USER_AGENT-unknown}" |
al@18840 | 1723 +AGENT="${HTTP_USER_AGENT:-unknown}" |
al@18840 | 1724 |
al@18840 | 1725 case "$AGENT" in |
al@18840 | 1726 Lynx*|lynx*) |
al@18840 | 1727 - HH="${HTTP_HOST-nohh}" |
al@18840 | 1728 + HH="${HTTP_HOST:-nohh}" |
al@18840 | 1729 SED="s/%lynx //" |
al@18840 | 1730 ;; |
al@18840 | 1731 *) |
al@18840 | 1732 @@ -20,7 +20,7 @@ |
al@18840 | 1733 ;; |
al@18840 | 1734 esac |
al@18840 | 1735 |
al@18840 | 1736 -SERVER="${SERVER_NAME-localhost}" |
al@18840 | 1737 +SERVER="${SERVER_NAME:-localhost}" |
al@18840 | 1738 case "$HH" in |
al@18840 | 1739 nohh) |
al@18840 | 1740 CG="lynxcgi:/usr/lib/cgi-bin/man" |
al@18840 | 1741 --- a/scripts/cgi-bin/man/mansearchhelp |
al@18840 | 1742 +++ b/scripts/cgi-bin/man/mansearchhelp |
al@18840 | 1743 @@ -4,17 +4,17 @@ |
al@18840 | 1744 |
al@18840 | 1745 # Do we need lynxcgi URLs? For the moment our criterion is |
al@18840 | 1746 # 1) HTTP_USER_AGENT=Lynx* and 2) HTTP_HOST is unset. |
al@18840 | 1747 -AGENT="${HTTP_USER_AGENT-unknown}" |
al@18840 | 1748 +AGENT="${HTTP_USER_AGENT:-unknown}" |
al@18840 | 1749 case "$AGENT" in |
al@18840 | 1750 Lynx*|lynx*) |
al@18840 | 1751 - HH="${HTTP_HOST-nohh}" |
al@18840 | 1752 + HH="${HTTP_HOST:-nohh}" |
al@18840 | 1753 ;; |
al@18840 | 1754 *) |
al@18840 | 1755 HH=nolynx |
al@18840 | 1756 ;; |
al@18840 | 1757 esac |
al@18840 | 1758 |
al@18840 | 1759 -SERVER="${SERVER_NAME-localhost}" |
al@18840 | 1760 +SERVER="${SERVER_NAME:-localhost}" |
al@18840 | 1761 case "$HH" in |
al@18840 | 1762 nohh) |
al@18840 | 1763 CG="lynxcgi:/usr/lib/cgi-bin/man" |
al@18840 | 1764 --- a/strdefs.c |
al@18840 | 1765 +++ b/strdefs.c |
al@18840 | 1766 @@ -27,266 +27,333 @@ |
al@18840 | 1767 { V('.','V'), 1, 0, NULL }, /* the me package tests for this */ |
al@18840 | 1768 { 0, 0, 0, NULL } }; |
al@18840 | 1769 |
al@18840 | 1770 + |
al@18840 | 1771 +/* Characters written according to http://mdocml.bsd.lv/man/mandoc_char.7.html */ |
al@18840 | 1772 + |
al@18840 | 1773 static STRDEF standardstring[] = { |
al@18840 | 1774 - { V('<','='), 2, "<=", NULL }, /* less equal */ |
al@18840 | 1775 - { V('>','='), 2, ">=;", NULL }, /* greather equal */ |
al@18840 | 1776 - { V('A','m'), 1, "&", NULL }, /* infinity */ |
al@18840 | 1777 - { V('B','a'), 1, "|", NULL }, /* vartical bar */ |
al@18840 | 1778 - { V('G','e'), 2, ">=;", NULL }, /* greather equal */ |
al@18840 | 1779 - { V('G','t'), 1, ">", NULL }, /* greather than */ |
al@18840 | 1780 - { V('I','f'), 1, "∞", NULL }, /* infinity */ |
al@18840 | 1781 - { V('L','e'), 2, "<=", NULL }, /* less equal */ |
al@18840 | 1782 - { V('L','q'), 1, "“", NULL }, /* left double quote */ |
al@18840 | 1783 - { V('L','t'), 1, "<", NULL }, /* less than */ |
al@18840 | 1784 - { V('N','a'), 3, "NaN", NULL }, /* not a number */ |
al@18840 | 1785 - { V('N','e'), 2, "!=", NULL }, /* not equal */ |
al@18840 | 1786 - { V('P','i'), 2, "Pi", NULL }, /* pi */ |
al@18840 | 1787 - { V('P','m'), 1, "±", NULL }, /* plus minus */ |
al@18840 | 1788 - { V('R',' '), 1, "®", NULL }, |
al@18840 | 1789 - { V('R','q'), 1, "”", NULL }, /* right double quote */ |
al@18840 | 1790 - { V('a','a'), 1, "'", NULL }, /* accute accent */ |
al@18840 | 1791 - { V('g','a'), 1, "`", NULL }, /* grave accent */ |
al@18840 | 1792 - { V('l','q'), 2, "``", NULL }, |
al@18840 | 1793 - { V('q',' '), 1, """, NULL }, /* straight double quote */ |
al@18840 | 1794 - { V('r','q'), 2, "''", NULL }, |
al@18840 | 1795 - { V('u','a'), 1, "^", NULL }, /* upwards arrow */ |
al@18840 | 1796 + { V('<','='), 1, "≤", NULL }, /* less-than-equal */ |
al@18840 | 1797 + { V('>','='), 1, "≥", NULL }, /* greater-than-equal */ |
al@18840 | 1798 + { V('A','i'), 4, "ANSI", NULL }, /* ANSI standard name */ |
al@18840 | 1799 + { V('A','m'), 1, "&", NULL }, /* ampersand */ |
al@18840 | 1800 + { V('B','a'), 1, "|", NULL }, /* vertical bar */ |
al@18840 | 1801 + { V('G','e'), 1, "≥", NULL }, /* greater-than-equal */ |
al@18840 | 1802 + { V('G','t'), 1, ">", NULL }, /* greater-than */ |
al@18840 | 1803 + { V('I','f'), 8, "infinity", NULL }, /* infinity */ |
al@18840 | 1804 + { V('L','e'), 1, "≤", NULL }, /* less-than-equal */ |
al@18840 | 1805 + { V('L','q'), 1, "“", NULL }, /* left-double-quote */ |
al@18840 | 1806 + { V('L','t'), 1, "<", NULL }, /* less-than */ |
al@18840 | 1807 + { V('N','a'), 3, "NaN", NULL }, /* NaN */ |
al@18840 | 1808 + { V('N','e'), 1, "≠", NULL }, /* not equal */ |
al@18840 | 1809 + { V('P','i'), 2, "pi", NULL }, /* pi */ |
al@18840 | 1810 + { V('P','m'), 1, "±", NULL }, /* plus-minus */ |
al@18840 | 1811 + { V('P','x'), 5, "POSIX", NULL }, /* POSIX standard name */ |
al@18840 | 1812 + { V('R',' '), 1, "®", NULL }, /* restricted mark */ |
al@18840 | 1813 + { V('R','q'), 1, "”", NULL }, /* right-double-quote */ |
al@18840 | 1814 + { V('T','m'), 4, "(Tm)", NULL }, /* trade mark */ |
al@18840 | 1815 + { V('a','a'), 1, "´", NULL }, /* acute */ |
al@18840 | 1816 + { V('g','a'), 1, "`", NULL }, /* grave */ |
al@18840 | 1817 + { V('l','p'), 1, "(", NULL }, /* left-parenthesis */ |
al@18840 | 1818 + { V('l','q'), 1, "“", NULL }, /* left double-quote */ |
al@18840 | 1819 + { V('q',' '), 1, """, NULL }, /* double-quote */ |
al@18840 | 1820 + { V('r','p'), 1, ")", NULL }, /* right-parenthesis */ |
al@18840 | 1821 + { V('r','q'), 1, "”", NULL }, /* right double-quote */ |
al@18840 | 1822 + { V('u','a'), 1, "↑", NULL }, /* up-arrow */ |
al@18840 | 1823 + { V('v','a'), 1, "↕", NULL }, /* up-down arrow */ |
al@18840 | 1824 { 0, 0, NULL, NULL} |
al@18840 | 1825 }; |
al@18840 | 1826 |
al@18840 | 1827 static STRDEF standardchar[] = { |
al@18840 | 1828 - { V('*','*'), 1, "*", NULL }, /* math star */ |
al@18840 | 1829 - { V('*','A'), 1, "Α", NULL }, |
al@18840 | 1830 - { V('*','B'), 1, "Β", NULL }, |
al@18840 | 1831 - { V('*','C'), 1, "Ξ", NULL }, |
al@18840 | 1832 - { V('*','D'), 1, "Δ", NULL }, |
al@18840 | 1833 - { V('*','E'), 1, "Ε", NULL }, |
al@18840 | 1834 - { V('*','F'), 1, "Φ", NULL }, |
al@18840 | 1835 - { V('*','G'), 1, "Γ", NULL }, |
al@18840 | 1836 - { V('*','H'), 1, "Θ", NULL }, |
al@18840 | 1837 - { V('*','I'), 1, "Ι", NULL }, |
al@18840 | 1838 - { V('*','K'), 1, "Κ", NULL }, |
al@18840 | 1839 - { V('*','L'), 1, "Λ", NULL }, |
al@18840 | 1840 - { V('*','M'), 1, "Μ", NULL }, |
al@18840 | 1841 - { V('*','N'), 1, "Ν", NULL }, |
al@18840 | 1842 - { V('*','O'), 1, "Ο", NULL }, |
al@18840 | 1843 - { V('*','P'), 1, "Π", NULL }, |
al@18840 | 1844 - { V('*','Q'), 1, "Ψ", NULL }, |
al@18840 | 1845 - { V('*','R'), 1, "Ρ", NULL }, |
al@18840 | 1846 - { V('*','S'), 1, "Σ", NULL }, |
al@18840 | 1847 - { V('*','T'), 1, "Τ", NULL }, |
al@18840 | 1848 - { V('*','U'), 1, "Υ", NULL }, |
al@18840 | 1849 - { V('*','W'), 1, "Ω", NULL }, |
al@18840 | 1850 - { V('*','X'), 1, "Χ", NULL }, |
al@18840 | 1851 - { V('*','Y'), 1, "Η", NULL }, |
al@18840 | 1852 - { V('*','Z'), 1, "Ζ", NULL }, |
al@18840 | 1853 - { V('*','a'), 1, "α", NULL }, |
al@18840 | 1854 - { V('*','b'), 1, "β", NULL }, |
al@18840 | 1855 - { V('*','c'), 1, "ξ", NULL }, |
al@18840 | 1856 - { V('*','d'), 1, "δ", NULL }, |
al@18840 | 1857 - { V('*','e'), 1, "ε", NULL }, |
al@18840 | 1858 - { V('*','f'), 1, "φ", NULL }, |
al@18840 | 1859 - { V('*','g'), 1, "γ", NULL }, |
al@18840 | 1860 - { V('*','h'), 1, "θ", NULL }, |
al@18840 | 1861 - { V('*','i'), 1, "ι", NULL }, |
al@18840 | 1862 - { V('*','k'), 1, "κ", NULL }, |
al@18840 | 1863 - { V('*','l'), 1, "λ", NULL }, |
al@18840 | 1864 - { V('*','m'), 1, "μ", NULL }, |
al@18840 | 1865 - { V('*','n'), 1, "ν", NULL }, |
al@18840 | 1866 - { V('*','o'), 1, "ο", NULL }, |
al@18840 | 1867 - { V('*','p'), 1, "π", NULL }, |
al@18840 | 1868 - { V('*','q'), 1, "ψ", NULL }, |
al@18840 | 1869 - { V('*','r'), 1, "ρ", NULL }, |
al@18840 | 1870 - { V('*','s'), 1, "σ", NULL }, |
al@18840 | 1871 - { V('*','t'), 1, "τ", NULL }, |
al@18840 | 1872 - { V('*','u'), 1, "υ", NULL }, |
al@18840 | 1873 - { V('*','w'), 1, "ω", NULL }, |
al@18840 | 1874 - { V('*','x'), 1, "χ", NULL }, |
al@18840 | 1875 - { V('*','y'), 1, "η", NULL }, |
al@18840 | 1876 - { V('*','z'), 1, "ζ", NULL }, |
al@18840 | 1877 - { V('\'','A'), 1, "Á", NULL }, |
al@18840 | 1878 - { V('\'','E'), 1, "É", NULL }, |
al@18840 | 1879 - { V('\'','I'), 1, "Í", NULL }, |
al@18840 | 1880 - { V('\'','O'), 1, "Ó", NULL }, |
al@18840 | 1881 - { V('\'','U'), 1, "Ú", NULL }, |
al@18840 | 1882 - { V('\'','Y'), 1, "Ý", NULL }, |
al@18840 | 1883 - { V('\'','a'), 1, "á", NULL }, |
al@18840 | 1884 - { V('\'','e'), 1, "é", NULL }, |
al@18840 | 1885 - { V('\'','i'), 1, "í", NULL }, |
al@18840 | 1886 - { V('\'','o'), 1, "ó", NULL }, |
al@18840 | 1887 - { V('\'','u'), 1, "ú", NULL }, |
al@18840 | 1888 - { V('\'','y'), 1, "ý", NULL }, |
al@18840 | 1889 - { V('!','='), 1, "≠", NULL }, |
al@18840 | 1890 - { V('%','0'), 1, "‰", NULL }, |
al@18840 | 1891 - { V('+','-'), 1, "±", NULL }, |
al@18840 | 1892 - { V(',','C'), 1, "Ç", NULL }, |
al@18840 | 1893 - { V(',','c'), 1, "ç", NULL }, |
al@18840 | 1894 - { V('-','>'), 1, "→", NULL }, |
al@18840 | 1895 - { V('-','D'), 1, "Ð", NULL }, |
al@18840 | 1896 - { V('.','i'), 1, "ı", NULL }, |
al@18840 | 1897 - { V('/','L'), 1, "Ł", NULL }, |
al@18840 | 1898 - { V('/','O'), 1, "Ø", NULL }, |
al@18840 | 1899 - { V('/','l'), 1, "ł", NULL }, |
al@18840 | 1900 - { V('/','o'), 1, "ø", NULL }, |
al@18840 | 1901 - { V('1','2'), 1, "½", NULL }, |
al@18840 | 1902 - { V('1','4'), 1, "¼", NULL }, |
al@18840 | 1903 - { V('3','4'), 1, "¾", NULL }, |
al@18840 | 1904 - { V(':','A'), 1, "Ä", NULL }, |
al@18840 | 1905 - { V(':','E'), 1, "Ë", NULL }, |
al@18840 | 1906 - { V(':','I'), 1, "Ï", NULL }, |
al@18840 | 1907 - { V(':','O'), 1, "Ö", NULL }, |
al@18840 | 1908 - { V(':','U'), 1, "Ü", NULL }, |
al@18840 | 1909 - { V(':','a'), 1, "ä", NULL }, |
al@18840 | 1910 - { V(':','e'), 1, "ë", NULL }, |
al@18840 | 1911 - { V(':','i'), 1, "ï", NULL }, |
al@18840 | 1912 - { V(':','o'), 1, "ö", NULL }, |
al@18840 | 1913 - { V(':','u'), 1, "ü", NULL }, |
al@18840 | 1914 - { V(':','y'), 1, "ÿ", NULL }, |
al@18840 | 1915 - { V('<','-'), 1, "←", NULL }, |
al@18840 | 1916 - { V('<','='), 1, "≤", NULL }, |
al@18840 | 1917 - { V('<','>'), 1, "↔", NULL }, |
al@18840 | 1918 - { V('=','='), 1, "≡", NULL }, |
al@18840 | 1919 - { V('=','~'), 1, "≅", NULL }, |
al@18840 | 1920 - { V('>','='), 1, "≥", NULL }, |
al@18840 | 1921 - { V('A','E'), 1, "Æ", NULL }, |
al@18840 | 1922 - { V('A','h'), 1, "&alepfsym;", NULL }, |
al@18840 | 1923 - { V('C','R'), 1, "␍", NULL }, |
al@18840 | 1924 - { V('C','s'), 1, "¤", NULL }, |
al@18840 | 1925 - { V('D','o'), 1, "$", NULL }, |
al@18840 | 1926 - { V('E','u'), 1, "€", NULL }, |
al@18840 | 1927 - { V('F','c'), 1, "»", NULL }, |
al@18840 | 1928 - { V('F','i'), 3, "ffi", NULL }, |
al@18840 | 1929 - { V('F','l'), 3, "ffl", NULL }, |
al@18840 | 1930 - { V('F','o'), 1, "«", NULL }, |
al@18840 | 1931 - { V('O','E'), 1, "Œ", NULL }, |
al@18840 | 1932 - { V('P','o'), 1, "£", NULL }, |
al@18840 | 1933 - { V('S','1'), 1, "¹", NULL }, |
al@18840 | 1934 - { V('S','2'), 1, "²", NULL }, |
al@18840 | 1935 - { V('S','3'), 1, "³", NULL }, |
al@18840 | 1936 - { V('S','d'), 1, "ð", NULL }, |
al@18840 | 1937 - { V('T','P'), 1, "Þ", NULL }, |
al@18840 | 1938 - { V('T','p'), 1, "þ", NULL }, |
al@18840 | 1939 - { V('Y','e'), 1, "¥", NULL }, |
al@18840 | 1940 - { V('^','A'), 1, "Â", NULL }, |
al@18840 | 1941 - { V('^','E'), 1, "Ê", NULL }, |
al@18840 | 1942 - { V('^','I'), 1, "Î", NULL }, |
al@18840 | 1943 - { V('^','O'), 1, "Ô", NULL }, |
al@18840 | 1944 - { V('^','U'), 1, "Û", NULL }, |
al@18840 | 1945 - { V('^','a'), 1, "â", NULL }, |
al@18840 | 1946 - { V('^','e'), 1, "ê", NULL }, |
al@18840 | 1947 - { V('^','i'), 1, "î", NULL }, |
al@18840 | 1948 - { V('^','o'), 1, "ô", NULL }, |
al@18840 | 1949 - { V('^','u'), 1, "û", NULL }, |
al@18840 | 1950 - { V('`','A'), 1, "À", NULL }, |
al@18840 | 1951 - { V('`','E'), 1, "È", NULL }, |
al@18840 | 1952 - { V('`','I'), 1, "Ì", NULL }, |
al@18840 | 1953 - { V('`','O'), 1, "Ò", NULL }, |
al@18840 | 1954 - { V('`','U'), 1, "Ù", NULL }, |
al@18840 | 1955 - { V('`','a'), 1, "à", NULL }, |
al@18840 | 1956 - { V('`','e'), 1, "è", NULL }, |
al@18840 | 1957 - { V('`','i'), 1, "ì", NULL }, |
al@18840 | 1958 - { V('`','o'), 1, "ò", NULL }, |
al@18840 | 1959 - { V('`','u'), 1, "ù", NULL }, |
al@18840 | 1960 - { V('a','a'), 1, "´", NULL }, |
al@18840 | 1961 - { V('a','e'), 1, "æ", NULL }, |
al@18840 | 1962 - { V('a','p'), 1, "≈", NULL }, |
al@18840 | 1963 - { V('a','q'), 1, "'", NULL }, |
al@18840 | 1964 - { V('a','t'), 1, "@", NULL }, |
al@18840 | 1965 - { V('a','~'), 1, "~", NULL }, |
al@18840 | 1966 - { V('b','a'), 1, "|", NULL }, |
al@18840 | 1967 - { V('b','b'), 1, "|", NULL }, |
al@18840 | 1968 - { V('b','r'), 1, "|", NULL }, |
al@18840 | 1969 - { V('b','r'), 1, "|", NULL }, |
al@18840 | 1970 - { V('b','u'), 1, "•", NULL }, |
al@18840 | 1971 - { V('b','v'), 1, "|", NULL }, |
al@18840 | 1972 - { V('c','*'), 1, "⊗", NULL }, |
al@18840 | 1973 - { V('c','+'), 1, "⊕", NULL }, |
al@18840 | 1974 - { V('c','i'), 1, "○", NULL }, |
al@18840 | 1975 - { V('c','o'), 1, "©", NULL }, |
al@18840 | 1976 - { V('c','q'), 1, "'", NULL }, |
al@18840 | 1977 - { V('c','t'), 1, "¢", NULL }, |
al@18840 | 1978 - { V('d','A'), 1, "⇓", NULL }, |
al@18840 | 1979 - { V('d','a'), 1, "↓", NULL }, |
al@18840 | 1980 - { V('d','d'), 1, "=", NULL }, |
al@18840 | 1981 - { V('d','e'), 1, "°", NULL }, |
al@18840 | 1982 - { V('d','g'), 1, "-", NULL }, |
al@18840 | 1983 - { V('d','i'), 1, "÷", NULL }, |
al@18840 | 1984 - { V('d','q'), 1, """, NULL }, |
al@18840 | 1985 - { V('e','m'), 3, "---", NULL }, /* em dash */ |
al@18840 | 1986 - { V('e','n'), 1, "-", NULL }, /* en dash */ |
al@18840 | 1987 - { V('e','q'), 1, "=", NULL }, |
al@18840 | 1988 - { V('e','s'), 1, "Ø", NULL }, |
al@18840 | 1989 - { V('e','u'), 1, "€", NULL }, |
al@18840 | 1990 - { V('f','/'), 1, "⁄", NULL }, |
al@18840 | 1991 - { V('f','c'), 1, "›", NULL }, |
al@18840 | 1992 - { V('f','f'), 2, "ff", NULL }, |
al@18840 | 1993 - { V('f','i'), 2, "fi", NULL }, |
al@18840 | 1994 - { V('f','l'), 2, "fl", NULL }, |
al@18840 | 1995 - { V('f','m'), 1, "´", NULL }, |
al@18840 | 1996 - { V('f','o'), 1, "‹", NULL }, |
al@18840 | 1997 - { V('g','a'), 1, "`", NULL }, |
al@18840 | 1998 - { V('h','A'), 1, "⇔", NULL }, |
al@18840 | 1999 - { V('h','y'), 1, "-", NULL }, |
al@18840 | 2000 - { V('i','f'), 1, "∞", NULL }, |
al@18840 | 2001 - { V('i','s'), 8, "Integral", NULL }, /* integral sign */ |
al@18840 | 2002 - { V('l','A'), 1, "⇐", NULL }, |
al@18840 | 2003 - { V('l','B'), 1, "[", NULL }, |
al@18840 | 2004 - { V('l','C'), 1, "{", NULL }, |
al@18840 | 2005 - { V('l','a'), 1, "<", NULL }, |
al@18840 | 2006 - { V('l','b'), 1, "[", NULL }, |
al@18840 | 2007 - { V('l','c'), 2, "|¯", NULL }, |
al@18840 | 2008 - { V('l','f'), 2, "|_", NULL }, |
al@18840 | 2009 - { V('l','h'), 1, "☚", NULL }, |
al@18840 | 2010 - { V('l','k'), 1, "<FONT SIZE=\"+2\">{</FONT>", NULL }, |
al@18840 | 2011 - { V('l','q'), 1, "\"", NULL }, |
al@18840 | 2012 - { V('l','z'), 1, "◊", NULL }, |
al@18840 | 2013 - { V('m','c'), 1, "µ", NULL }, |
al@18840 | 2014 - { V('m','i'), 1, "-", NULL }, |
al@18840 | 2015 - { V('m','u'), 1, "×", NULL }, |
al@18840 | 2016 - { V('n','o'), 1, "¬", NULL }, |
al@18840 | 2017 - { V('o','A'), 1, "Å", NULL }, |
al@18840 | 2018 - { V('o','a'), 1, "å", NULL }, |
al@18840 | 2019 - { V('o','e'), 1, "œ", NULL }, |
al@18840 | 2020 - { V('o','q'), 1, "'", NULL }, |
al@18840 | 2021 - { V('o','r'), 1, "|", NULL }, |
al@18840 | 2022 - { V('p','d'), 1, "d", NULL }, /* partial derivative */ |
al@18840 | 2023 - { V('p','l'), 1, "+", NULL }, |
al@18840 | 2024 - { V('p','s'), 1, "¶", NULL }, |
al@18840 | 2025 - { V('r','!'), 1, "¡", NULL }, |
al@18840 | 2026 - { V('r','?'), 1, "¿", NULL }, |
al@18840 | 2027 - { V('r','A'), 1, "⇒", NULL }, |
al@18840 | 2028 - { V('r','B'), 1, "]", NULL }, |
al@18840 | 2029 - { V('r','C'), 1, "}", NULL }, |
al@18840 | 2030 - { V('r','a'), 1, ">", NULL }, |
al@18840 | 2031 - { V('r','c'), 2, "¯|", NULL }, |
al@18840 | 2032 - { V('r','f'), 2, "_|", NULL }, |
al@18840 | 2033 - { V('r','g'), 1, "®", NULL }, |
al@18840 | 2034 - { V('r','h'), 1, "☛", NULL }, |
al@18840 | 2035 - { V('r','k'), 1, "<FONT SIZE=\"+2\">}</FONT>", NULL }, |
al@18840 | 2036 - { V('r','n'), 1, "¯", NULL }, |
al@18840 | 2037 - { V('r','q'), 1, "\"", NULL }, |
al@18840 | 2038 - { V('r','s'), 1, "\\", NULL }, |
al@18840 | 2039 - { V('r','u'), 1, "_", NULL }, |
al@18840 | 2040 - { V('s','c'), 1, "§", NULL }, |
al@18840 | 2041 - { V('s','h'), 1, "#", NULL }, |
al@18840 | 2042 - { V('s','l'), 1, "/", NULL }, |
al@18840 | 2043 - { V('s','q'), 1, "□", NULL }, |
al@18840 | 2044 - { V('s','s'), 1, "ß", NULL }, |
al@18840 | 2045 - { V('t','f'), 1, "∴", NULL }, |
al@18840 | 2046 - { V('t','i'), 1, "~", NULL }, |
al@18840 | 2047 - { V('t','m'), 1, "™", NULL }, |
al@18840 | 2048 - { V('t','s'), 1, "s", NULL }, /* should be terminal sigma */ |
al@18840 | 2049 - { V('u','A'), 1, "⇑", NULL }, |
al@18840 | 2050 - { V('u','a'), 1, "↑", NULL }, |
al@18840 | 2051 - { V('u','l'), 1, "_", NULL }, |
al@18840 | 2052 - { V('~','A'), 1, "Ã", NULL }, |
al@18840 | 2053 - { V('~','N'), 1, "Ñ", NULL }, |
al@18840 | 2054 - { V('~','O'), 1, "Õ", NULL }, |
al@18840 | 2055 - { V('~','a'), 1, "ã", NULL }, |
al@18840 | 2056 - { V('~','n'), 1, "ñ", NULL }, |
al@18840 | 2057 - { V('~','o'), 1, "õ", NULL }, |
al@18840 | 2058 + { V('*','*'), 1, "∗", NULL }, /* asterisk */ |
al@18840 | 2059 + { V('*','A'), 1, "Α", NULL }, /* Alpha */ |
al@18840 | 2060 + { V('*','B'), 1, "Β", NULL }, /* Beta */ |
al@18840 | 2061 + { V('*','C'), 1, "Ξ", NULL }, /* Xi */ |
al@18840 | 2062 + { V('*','D'), 1, "Δ", NULL }, /* Delta */ |
al@18840 | 2063 + { V('*','E'), 1, "Ε", NULL }, /* Epsilon */ |
al@18840 | 2064 + { V('*','F'), 1, "Φ", NULL }, /* Phi */ |
al@18840 | 2065 + { V('*','G'), 1, "Γ", NULL }, /* Gamma */ |
al@18840 | 2066 + { V('*','H'), 1, "Θ", NULL }, /* Theta */ |
al@18840 | 2067 + { V('*','I'), 1, "Ι", NULL }, /* Iota */ |
al@18840 | 2068 + { V('*','K'), 1, "Κ", NULL }, /* Kappa */ |
al@18840 | 2069 + { V('*','L'), 1, "Λ", NULL }, /* Lambda */ |
al@18840 | 2070 + { V('*','M'), 1, "Μ", NULL }, /* Mu */ |
al@18840 | 2071 + { V('*','N'), 1, "Ν", NULL }, /* Nu */ |
al@18840 | 2072 + { V('*','O'), 1, "Ο", NULL }, /* Omicron */ |
al@18840 | 2073 + { V('*','P'), 1, "Π", NULL }, /* Pi */ |
al@18840 | 2074 + { V('*','Q'), 1, "Ψ", NULL }, /* Psi */ |
al@18840 | 2075 + { V('*','R'), 1, "Ρ", NULL }, /* Rho */ |
al@18840 | 2076 + { V('*','S'), 1, "Σ", NULL }, /* Sigma */ |
al@18840 | 2077 + { V('*','T'), 1, "Τ", NULL }, /* Tau */ |
al@18840 | 2078 + { V('*','U'), 1, "Υ", NULL }, /* Upsilon */ |
al@18840 | 2079 + { V('*','W'), 1, "Ω", NULL }, /* Omega */ |
al@18840 | 2080 + { V('*','X'), 1, "Χ", NULL }, /* Chi */ |
al@18840 | 2081 + { V('*','Y'), 1, "Η", NULL }, /* Eta */ |
al@18840 | 2082 + { V('*','Z'), 1, "Ζ", NULL }, /* Zeta */ |
al@18840 | 2083 + { V('*','a'), 1, "α", NULL }, /* alpha */ |
al@18840 | 2084 + { V('*','b'), 1, "β", NULL }, /* beta */ |
al@18840 | 2085 + { V('*','c'), 1, "ξ", NULL }, /* xi */ |
al@18840 | 2086 + { V('*','d'), 1, "δ", NULL }, /* delta */ |
al@18840 | 2087 + { V('*','e'), 1, "ε", NULL }, /* epsilon */ |
al@18840 | 2088 + { V('*','f'), 1, "φ", NULL }, /* phi */ |
al@18840 | 2089 + { V('*','g'), 1, "γ", NULL }, /* gamma */ |
al@18840 | 2090 + { V('*','h'), 1, "θ", NULL }, /* theta */ |
al@18840 | 2091 + { V('*','i'), 1, "ι", NULL }, /* iota */ |
al@18840 | 2092 + { V('*','k'), 1, "κ", NULL }, /* kappa */ |
al@18840 | 2093 + { V('*','l'), 1, "λ", NULL }, /* lambda */ |
al@18840 | 2094 + { V('*','m'), 1, "μ", NULL }, /* mu */ |
al@18840 | 2095 + { V('*','n'), 1, "ν", NULL }, /* nu */ |
al@18840 | 2096 + { V('*','o'), 1, "ο", NULL }, /* omicron */ |
al@18840 | 2097 + { V('*','p'), 1, "π", NULL }, /* pi */ |
al@18840 | 2098 + { V('*','q'), 1, "ψ", NULL }, /* psi */ |
al@18840 | 2099 + { V('*','r'), 1, "ρ", NULL }, /* rho */ |
al@18840 | 2100 + { V('*','s'), 1, "σ", NULL }, /* sigma */ |
al@18840 | 2101 + { V('*','t'), 1, "τ", NULL }, /* tau */ |
al@18840 | 2102 + { V('*','u'), 1, "υ", NULL }, /* upsilon */ |
al@18840 | 2103 + { V('*','w'), 1, "ω", NULL }, /* omega */ |
al@18840 | 2104 + { V('*','x'), 1, "χ", NULL }, /* chi */ |
al@18840 | 2105 + { V('*','y'), 1, "η", NULL }, /* eta */ |
al@18840 | 2106 + { V('*','z'), 1, "ζ", NULL }, /* zeta */ |
al@18840 | 2107 + { V('\'','A'), 1, "Á", NULL }, /* acute A */ |
al@18840 | 2108 + { V('\'','E'), 1, "É", NULL }, /* acute E */ |
al@18840 | 2109 + { V('\'','I'), 1, "Í", NULL }, /* acute I */ |
al@18840 | 2110 + { V('\'','O'), 1, "Ó", NULL }, /* acute O */ |
al@18840 | 2111 + { V('\'','U'), 1, "Ú", NULL }, /* acute U */ |
al@18840 | 2112 + { V('\'','Y'), 1, "Ý", NULL }, /* Yacute (*) */ |
al@18840 | 2113 + { V('\'','a'), 1, "á", NULL }, /* acute a */ |
al@18840 | 2114 + { V('\'','e'), 1, "é", NULL }, /* acute e */ |
al@18840 | 2115 + { V('\'','i'), 1, "í", NULL }, /* acute i */ |
al@18840 | 2116 + { V('\'','o'), 1, "ó", NULL }, /* acute o */ |
al@18840 | 2117 + { V('\'','u'), 1, "ú", NULL }, /* acute u */ |
al@18840 | 2118 + { V('\'','y'), 1, "ý", NULL }, /* yacute (*) */ |
al@18840 | 2119 + { V('!','='), 1, "≠", NULL }, /* not equal */ |
al@18840 | 2120 + { V('%','0'), 1, "‰", NULL }, /* per-thousand */ |
al@18840 | 2121 + { V('+','-'), 1, "±", NULL }, /* plus-minus */ |
al@18840 | 2122 + { V('+','e'), 1, "ϵ", NULL }, /* epsilon variant */ |
al@18840 | 2123 + { V('+','f'), 1, "φ", NULL }, /* phi variant */ |
al@18840 | 2124 + { V('+','h'), 1, "ϑ", NULL }, /* theta variant */ |
al@18840 | 2125 + { V('+','p'), 1, "ϖ", NULL }, /* pi variant */ |
al@18840 | 2126 + { V(',','C'), 1, "Ç", NULL }, /* cedilla C */ |
al@18840 | 2127 + { V(',','c'), 1, "ç", NULL }, /* cedilla c */ |
al@18840 | 2128 + { V('-','+'), 1, "∓", NULL }, /* minus-plus */ |
al@18840 | 2129 + { V('-','>'), 1, "→", NULL }, /* right arrow */ |
al@18840 | 2130 + { V('-','D'), 1, "Ð", NULL }, /* Eth */ |
al@18840 | 2131 + { V('-','h'), 1, "ℏ", NULL }, /* Planck constant over 2π */ |
al@18840 | 2132 + { V('.','i'), 1, "ı", NULL }, /* dotless i */ |
al@18840 | 2133 + { V('.','j'), 1, "ȷ", NULL }, /* dotless j */ |
al@18840 | 2134 + { V('/','L'), 1, "Ł", NULL }, /* stroke L */ |
al@18840 | 2135 + { V('/','O'), 1, "Ø", NULL }, /* stroke O */ |
al@18840 | 2136 + { V('/','_'), 1, "∠", NULL }, /* angle */ |
al@18840 | 2137 + { V('/','l'), 1, "ł", NULL }, /* stroke l */ |
al@18840 | 2138 + { V('/','o'), 1, "ø", NULL }, /* stroke o */ |
al@18840 | 2139 + { V('1','2'), 1, "½", NULL }, /* 1/2 (*) */ |
al@18840 | 2140 + { V('1','4'), 1, "¼", NULL }, /* 1/4 (*) */ |
al@18840 | 2141 + { V('3','4'), 1, "¾", NULL }, /* 3/4 (*) */ |
al@18840 | 2142 + { V('3','d'), 1, "∴", NULL }, /* therefore */ |
al@18840 | 2143 + { V(':','A'), 1, "Ä", NULL }, /* dieresis A */ |
al@18840 | 2144 + { V(':','E'), 1, "Ë", NULL }, /* dieresis E */ |
al@18840 | 2145 + { V(':','I'), 1, "Ï", NULL }, /* dieresis I */ |
al@18840 | 2146 + { V(':','O'), 1, "Ö", NULL }, /* dieresis O */ |
al@18840 | 2147 + { V(':','U'), 1, "Ü", NULL }, /* dieresis U */ |
al@18840 | 2148 + { V(':','a'), 1, "ä", NULL }, /* dieresis a */ |
al@18840 | 2149 + { V(':','e'), 1, "ë", NULL }, /* dieresis e */ |
al@18840 | 2150 + { V(':','i'), 1, "ï", NULL }, /* dieresis i */ |
al@18840 | 2151 + { V(':','o'), 1, "ö", NULL }, /* dieresis o */ |
al@18840 | 2152 + { V(':','u'), 1, "ü", NULL }, /* dieresis u */ |
al@18840 | 2153 + { V(':','y'), 1, "ÿ", NULL }, /* dieresis y */ |
al@18840 | 2154 + { V('<','-'), 1, "←", NULL }, /* left arrow */ |
al@18840 | 2155 + { V('<','<'), 1, "≪", NULL }, /* much less */ |
al@18840 | 2156 + { V('<','='), 1, "≤", NULL }, /* less-than-equal */ |
al@18840 | 2157 + { V('<','>'), 1, "↔", NULL }, /* left-right arrow */ |
al@18840 | 2158 + { V('=','='), 1, "≡", NULL }, /* equivalent */ |
al@18840 | 2159 + { V('=','~'), 1, "≅", NULL }, /* approximately equal */ |
al@18840 | 2160 + { V('>','='), 1, "≥", NULL }, /* greater-than-equal */ |
al@18840 | 2161 + { V('>','>'), 1, "≫", NULL }, /* much greater */ |
al@18840 | 2162 + { V('A','E'), 1, "Æ", NULL }, /* AE ligature */ |
al@18840 | 2163 + { V('A','N'), 1, "∧", NULL }, /* logical and */ |
al@18840 | 2164 + { V('A','h'), 1, "ℵ", NULL }, /* aleph */ |
al@18840 | 2165 + { V('B','q'), 1, "„", NULL }, /* right low double-quote */ |
al@18840 | 2166 + { V('C','R'), 1, "↵", NULL }, /* carriage return */ |
al@18840 | 2167 + { V('C','s'), 1, "¤", NULL }, /* Scandinavian */ |
al@18840 | 2168 + { V('D','o'), 1, "$", NULL }, /* dollar */ |
al@18840 | 2169 + { V('E','u'), 1, "€", NULL }, /* Euro symbol */ |
al@18840 | 2170 + { V('F','c'), 1, "»", NULL }, /* right guillemet */ |
al@18840 | 2171 + { V('F','i'), 1, "ffi", NULL }, /* ffi ligature */ |
al@18840 | 2172 + { V('F','l'), 1, "ffl", NULL }, /* ffl ligature */ |
al@18840 | 2173 + { V('F','n'), 1, "ƒ", NULL }, /* florin */ |
al@18840 | 2174 + { V('F','o'), 1, "«", NULL }, /* left guillemet */ |
al@18840 | 2175 + { V('I','J'), 1, "IJ", NULL }, /* IJ ligature */ |
al@18840 | 2176 + { V('I','m'), 1, "ℑ", NULL }, /* imaginary */ |
al@18840 | 2177 + { V('O','E'), 1, "Œ", NULL }, /* OE ligature */ |
al@18840 | 2178 + { V('O','K'), 1, "✓", NULL }, /* check mark */ |
al@18840 | 2179 + { V('O','R'), 1, "∨", NULL }, /* logical or */ |
al@18840 | 2180 + { V('P','o'), 1, "£", NULL }, /* pound */ |
al@18840 | 2181 + { V('R','e'), 1, "ℜ", NULL }, /* real */ |
al@18840 | 2182 + { V('S','1'), 1, "¹", NULL }, /* sup1 (*) */ |
al@18840 | 2183 + { V('S','2'), 1, "²", NULL }, /* sup2 (*) */ |
al@18840 | 2184 + { V('S','3'), 1, "³", NULL }, /* sup3 (*) */ |
al@18840 | 2185 + { V('S','d'), 1, "ð", NULL }, /* eth */ |
al@18840 | 2186 + { V('T','P'), 1, "Þ", NULL }, /* Thorn */ |
al@18840 | 2187 + { V('T','p'), 1, "þ", NULL }, /* thorn */ |
al@18840 | 2188 + { V('Y','e'), 1, "¥", NULL }, /* yen */ |
al@18840 | 2189 + { V('^','A'), 1, "Â", NULL }, /* circumflex A */ |
al@18840 | 2190 + { V('^','E'), 1, "Ê", NULL }, /* circumflex E */ |
al@18840 | 2191 + { V('^','I'), 1, "Î", NULL }, /* circumflex I */ |
al@18840 | 2192 + { V('^','O'), 1, "Ô", NULL }, /* circumflex O */ |
al@18840 | 2193 + { V('^','U'), 1, "Û", NULL }, /* circumflex U */ |
al@18840 | 2194 + { V('^','a'), 1, "â", NULL }, /* circumflex a */ |
al@18840 | 2195 + { V('^','e'), 1, "ê", NULL }, /* circumflex e */ |
al@18840 | 2196 + { V('^','i'), 1, "î", NULL }, /* circumflex i */ |
al@18840 | 2197 + { V('^','o'), 1, "ô", NULL }, /* circumflex o */ |
al@18840 | 2198 + { V('^','u'), 1, "û", NULL }, /* circumflex u */ |
al@18840 | 2199 + { V('`','A'), 1, "À", NULL }, /* grave A */ |
al@18840 | 2200 + { V('`','E'), 1, "È", NULL }, /* grave E */ |
al@18840 | 2201 + { V('`','I'), 1, "Ì", NULL }, /* grave I */ |
al@18840 | 2202 + { V('`','O'), 1, "Ò", NULL }, /* grave O */ |
al@18840 | 2203 + { V('`','U'), 1, "Ù", NULL }, /* grave U */ |
al@18840 | 2204 + { V('`','a'), 1, "à", NULL }, /* grave a */ |
al@18840 | 2205 + { V('`','e'), 1, "è", NULL }, /* grave e */ |
al@18840 | 2206 + { V('`','i'), 1, "ì", NULL }, /* grave i */ |
al@18840 | 2207 + { V('`','o'), 1, "ò", NULL }, /* grave o */ |
al@18840 | 2208 + { V('`','u'), 1, "ù", NULL }, /* grave u */ |
al@18840 | 2209 + { V('a','"'), 1, "˝", NULL }, /* Hungarian umlaut */ |
al@18840 | 2210 + { V('a','-'), 1, "¯", NULL }, /* macron */ |
al@18840 | 2211 + { V('a','.'), 1, "˙", NULL }, /* dotted */ |
al@18840 | 2212 + { V('a','^'), 1, "^", NULL }, /* circumflex */ |
al@18840 | 2213 + { V('a','a'), 1, "´", NULL }, /* acute */ |
al@18840 | 2214 + { V('a','b'), 1, "˘", NULL }, /* breve */ |
al@18840 | 2215 + { V('a','c'), 1, "¸", NULL }, /* cedilla */ |
al@18840 | 2216 + { V('a','d'), 1, "¨", NULL }, /* dieresis */ |
al@18840 | 2217 + { V('a','e'), 1, "æ", NULL }, /* ae ligature */ |
al@18840 | 2218 + { V('a','h'), 1, "ˇ", NULL }, /* caron */ |
al@18840 | 2219 + { V('a','o'), 1, "˚", NULL }, /* ring */ |
al@18840 | 2220 + { V('a','p'), 1, "∼", NULL }, /* tilde operator */ |
al@18840 | 2221 + { V('a','q'), 1, "'", NULL }, /* apostrophe quote (text) */ |
al@18840 | 2222 + { V('a','t'), 1, "@", NULL }, /* at */ |
al@18840 | 2223 + { V('a','~'), 1, "~", NULL }, /* tilde */ |
al@18840 | 2224 + { V('b','a'), 1, "|", NULL }, /* bar */ |
al@18840 | 2225 + { V('b','b'), 1, "¦", NULL }, /* broken bar */ |
al@18840 | 2226 + { V('b','r'), 1, "│", NULL }, /* box rule */ |
al@18840 | 2227 + { V('b','q'), 1, "‚", NULL }, /* right low single-quote */ |
al@18840 | 2228 + { V('b','u'), 1, "•", NULL }, /* bullet */ |
al@18840 | 2229 + { V('b','v'), 1, "⎪", NULL }, /* brace extension */ |
al@18840 | 2230 + { V('c','*'), 1, "⊗", NULL }, /* circle-multiply */ |
al@18840 | 2231 + { V('c','+'), 1, "⊕", NULL }, /* circle-plus */ |
al@18840 | 2232 + { V('c','a'), 1, "∩", NULL }, /* intersection */ |
al@18840 | 2233 + { V('c','i'), 1, "○", NULL }, /* circle */ |
al@18840 | 2234 + { V('c','o'), 1, "©", NULL }, /* copyright */ |
al@18840 | 2235 + { V('c','q'), 1, "’", NULL }, /* right single-quote */ |
al@18840 | 2236 + { V('c','t'), 1, "¢", NULL }, /* cent */ |
al@18840 | 2237 + { V('c','u'), 1, "∪", NULL }, /* union */ |
al@18840 | 2238 + { V('d','A'), 1, "⇓", NULL }, /* down double-arrow */ |
al@18840 | 2239 + { V('d','a'), 1, "↓", NULL }, /* down arrow */ |
al@18840 | 2240 + { V('d','d'), 1, "‡", NULL }, /* double dagger */ |
al@18840 | 2241 + { V('d','e'), 1, "°", NULL }, /* degree */ |
al@18840 | 2242 + { V('d','g'), 1, "†", NULL }, /* dagger */ |
al@18840 | 2243 + { V('d','i'), 1, "÷", NULL }, /* divide */ |
al@18840 | 2244 + { V('d','q'), 1, "\"", NULL }, /* double quote (text) */ |
al@18840 | 2245 + { V('e','m'), 1, "—", NULL }, /* em-dash */ |
al@18840 | 2246 + { V('e','n'), 1, "–", NULL }, /* en-dash */ |
al@18840 | 2247 + { V('e','q'), 1, "=", NULL }, /* equal */ |
al@18840 | 2248 + { V('e','s'), 1, "∅", NULL }, /* empty set */ |
al@18840 | 2249 + { V('e','u'), 1, "€", NULL }, /* Euro symbol */ |
al@18840 | 2250 + { V('f','/'), 1, "⁄", NULL }, /* fraction */ |
al@18840 | 2251 + { V('f','a'), 1, "∀", NULL }, /* universal quantifier */ |
al@18840 | 2252 + { V('f','c'), 1, "›", NULL }, /* right single guillemet */ |
al@18840 | 2253 + { V('f','f'), 1, "ff", NULL }, /* ff ligature */ |
al@18840 | 2254 + { V('f','i'), 1, "fi", NULL }, /* fi ligature */ |
al@18840 | 2255 + { V('f','l'), 1, "fl", NULL }, /* fl ligature */ |
al@18840 | 2256 + { V('f','m'), 1, "′", NULL }, /* minute */ |
al@18840 | 2257 + { V('f','o'), 1, "‹", NULL }, /* left single guillemet */ |
al@18840 | 2258 + { V('g','a'), 1, "`", NULL }, /* grave */ |
al@18840 | 2259 + { V('g','r'), 1, "∇", NULL }, /* gradient */ |
al@18840 | 2260 + { V('h','A'), 1, "⇔", NULL }, /* left-right double-arrow */ |
al@18840 | 2261 + { V('h','a'), 1, "^", NULL }, /* hat (text) */ |
al@18840 | 2262 + { V('h','o'), 1, "˛", NULL }, /* ogonek */ |
al@18840 | 2263 + { V('h','y'), 1, "‐", NULL }, /* hyphen */ |
al@18840 | 2264 + { V('i','b'), 1, "⊆", NULL }, /* reflexive subset */ |
al@18840 | 2265 + { V('i','f'), 1, "∞", NULL }, /* infinity */ |
al@18840 | 2266 + { V('i','j'), 1, "ij", NULL }, /* ij ligature */ |
al@18840 | 2267 + { V('i','p'), 1, "⊇", NULL }, /* reflexive superset */ |
al@18840 | 2268 + { V('i','s'), 1, "∫", NULL }, /* integral */ |
al@18840 | 2269 + { V('l','A'), 1, "⇐", NULL }, /* left double-arrow */ |
al@18840 | 2270 + { V('l','B'), 1, "[", NULL }, /* left bracket */ |
al@18840 | 2271 + { V('l','C'), 1, "{", NULL }, /* left brace */ |
al@18840 | 2272 + { V('l','a'), 1, "⟨", NULL }, /* left angle */ |
al@18840 | 2273 + { V('l','b'), 1, "⎩", NULL }, /* bottom-left hooked brace */ |
al@18840 | 2274 + { V('l','c'), 1, "⌈", NULL }, /* left-ceiling */ |
al@18840 | 2275 + { V('l','f'), 1, "⌊", NULL }, /* left-floor */ |
al@18840 | 2276 + { V('l','h'), 1, "☜", NULL }, /* left hand */ |
al@18840 | 2277 + { V('l','k'), 1, "⎨", NULL }, /* mid-left hooked brace */ |
al@18840 | 2278 + { V('l','q'), 1, "“", NULL }, /* left double-quote */ |
al@18840 | 2279 + { V('l','t'), 1, "⎧", NULL }, /* top-left hooked brace */ |
al@18840 | 2280 + { V('l','z'), 1, "◊", NULL }, /* lozenge */ |
al@18840 | 2281 + { V('m','c'), 1, "µ", NULL }, /* micro */ |
al@18840 | 2282 + { V('m','i'), 1, "−", NULL }, /* minus */ |
al@18840 | 2283 + { V('m','o'), 1, "∈", NULL }, /* element */ |
al@18840 | 2284 + { V('m','u'), 1, "×", NULL }, /* multiply */ |
al@18840 | 2285 + { V('n','b'), 1, "⊄", NULL }, /* not subset */ |
al@18840 | 2286 + { V('n','c'), 1, "⊅", NULL }, /* not superset */ |
al@18840 | 2287 + { V('n','e'), 1, "≢", NULL }, /* not equivalent */ |
al@18840 | 2288 + { V('n','m'), 1, "∉", NULL }, /* not element */ |
al@18840 | 2289 + { V('n','o'), 1, "¬", NULL }, /* logical not */ |
al@18840 | 2290 + { V('o','A'), 1, "Å", NULL }, /* ring A */ |
al@18840 | 2291 + { V('o','a'), 1, "å", NULL }, /* ring a */ |
al@18840 | 2292 + { V('o','e'), 1, "œ", NULL }, /* oe ligature */ |
al@18840 | 2293 + { V('o','q'), 1, "‘", NULL }, /* left single-quote */ |
al@18840 | 2294 + { V('o','r'), 1, "|", NULL }, /* bitwise or */ |
al@18840 | 2295 + { V('p','c'), 1, "·", NULL }, /* center-dot */ |
al@18840 | 2296 + { V('p','d'), 1, "∂", NULL }, /* partial differential */ |
al@18840 | 2297 + { V('p','l'), 1, "+", NULL }, /* plus */ |
al@18840 | 2298 + { V('p','p'), 1, "⊥", NULL }, /* perpendicular */ |
al@18840 | 2299 + { V('p','s'), 1, "¶", NULL }, /* paragraph */ |
al@18840 | 2300 + { V('p','t'), 1, "∝", NULL }, /* proportionate */ |
al@18840 | 2301 + { V('r','!'), 1, "¡", NULL }, /* upside-down exclamation */ |
al@18840 | 2302 + { V('r','?'), 1, "¿", NULL }, /* upside-down question */ |
al@18840 | 2303 + { V('r','A'), 1, "⇒", NULL }, /* right double-arrow */ |
al@18840 | 2304 + { V('r','B'), 1, "]", NULL }, /* right bracket */ |
al@18840 | 2305 + { V('r','C'), 1, "}", NULL }, /* right brace */ |
al@18840 | 2306 + { V('r','a'), 1, "⟩", NULL }, /* right angle */ |
al@18840 | 2307 + { V('r','b'), 1, "⎭", NULL }, /* bottom-right hooked brace */ |
al@18840 | 2308 + { V('r','c'), 1, "⌉", NULL }, /* right-ceiling */ |
al@18840 | 2309 + { V('r','f'), 1, "⌋", NULL }, /* right-floor */ |
al@18840 | 2310 + { V('r','g'), 1, "®", NULL }, /* registered */ |
al@18840 | 2311 + { V('r','h'), 1, "☞", NULL }, /* right hand */ |
al@18840 | 2312 + { V('r','k'), 1, "⎬", NULL }, /* mid-right hooked brace */ |
al@18840 | 2313 + { V('r','l'), 1, "‾", NULL }, /* overline */ |
al@18840 | 2314 + { V('r','n'), 1, "‾", NULL }, /* overline */ |
al@18840 | 2315 + { V('r','q'), 1, "”", NULL }, /* right double-quote */ |
al@18840 | 2316 + { V('r','s'), 1, "\\", NULL }, /* backward slash */ |
al@18840 | 2317 + { V('r','t'), 1, "⎫", NULL }, /* top-left hooked brace */ |
al@18840 | 2318 + { V('r','u'), 1, "_", NULL }, /* (*) */ |
al@18840 | 2319 + { V('s','b'), 1, "⊂", NULL }, /* proper subset */ |
al@18840 | 2320 + { V('s','c'), 1, "§", NULL }, /* section */ |
al@18840 | 2321 + { V('s','d'), 1, "″", NULL }, /* second */ |
al@18840 | 2322 + { V('s','h'), 1, "#", NULL }, /* hash (pound) */ |
al@18840 | 2323 + { V('s','l'), 1, "/", NULL }, /* forward slash */ |
al@18840 | 2324 + { V('s','p'), 1, "⊃", NULL }, /* proper superset */ |
al@18840 | 2325 + { V('s','q'), 1, "□", NULL }, /* white square */ |
al@18840 | 2326 + { V('s','r'), 1, "√", NULL }, /* square root */ |
al@18840 | 2327 + { V('s','s'), 1, "ß", NULL }, /* German eszett */ |
al@18840 | 2328 + { V('s','t'), 1, "∋", NULL }, /* such that */ |
al@18840 | 2329 + { V('t','e'), 1, "∃", NULL }, /* existential quantifier */ |
al@18840 | 2330 + { V('t','f'), 1, "∴", NULL }, /* therefore */ |
al@18840 | 2331 + { V('t','i'), 1, "~", NULL }, /* tilde (text) */ |
al@18840 | 2332 + { V('t','m'), 1, "™", NULL }, /* trademarked */ |
al@18840 | 2333 + { V('t','s'), 1, "ς", NULL }, /* sigma terminal */ |
al@18840 | 2334 + { V('u','A'), 1, "⇑", NULL }, /* up double-arrow */ |
al@18840 | 2335 + { V('u','a'), 1, "↑", NULL }, /* up arrow */ |
al@18840 | 2336 + { V('u','l'), 1, "_", NULL }, /* underscore */ |
al@18840 | 2337 + { V('v','A'), 1, "⇕", NULL }, /* up-down double-arrow */ |
al@18840 | 2338 + { V('v','a'), 1, "↕", NULL }, /* up-down arrow */ |
al@18840 | 2339 + { V('|','='), 1, "≃", NULL }, /* asymptotically equal */ |
al@18840 | 2340 + { V('~','='), 1, "≈", NULL }, /* almost equal */ |
al@18840 | 2341 + { V('~','A'), 1, "Ã", NULL }, /* tilde A */ |
al@18840 | 2342 + { V('~','N'), 1, "Ñ", NULL }, /* tilde N */ |
al@18840 | 2343 + { V('~','O'), 1, "Õ", NULL }, /* tilde O */ |
al@18840 | 2344 + { V('~','a'), 1, "ã", NULL }, /* tilde a */ |
al@18840 | 2345 + { V('~','n'), 1, "ñ", NULL }, /* tilde n */ |
al@18840 | 2346 + { V('~','o'), 1, "õ", NULL }, /* tilde o */ |
al@18840 | 2347 + { V('~','~'), 1, "≈", NULL }, /* almost equal */ |
al@18840 | 2348 { 0, 0, NULL, NULL } |
al@18840 | 2349 - |
al@18840 | 2350 - |
al@18840 | 2351 }; |
al@18840 | 2352 |
al@18840 | 2353 void stdinit(void) { |
al@18840 | 2354 --- /dev/null |
al@18840 | 2355 +++ b/version.h |
al@18840 | 2356 @@ -0,0 +1 @@ |
al@18840 | 2357 +#define version "1.6g-7-slitaz" |