diff options
149 files changed, 30775 insertions, 773 deletions
diff --git a/.Lynx.prcs_aux b/.Lynx.prcs_aux new file mode 100644 index 00000000..72567de3 --- /dev/null +++ b/.Lynx.prcs_aux @@ -0,0 +1,380 @@ +;; This file is automatically generated, editing may cause PRCS to do +;; REALLY bad things. +(Created-By-Prcs-Version 1 2 0) +(WWW/Library/Implementation/HTList.c 6153 856833014 h/4_HTList.c 1.1) +(src/tcpwareolb.opt 24 856833014 d/8_tcpwareolb 1.1) +(WWW/Library/djgpp/makefile 857 861154413 0_makefile 1.4) +(WWW/Library/Implementation/HTGroup.h 5641 856833014 f/49_HTGroup.h 1.1) +(src/LYGlobalDefs.h 10510 861154416 d/25_LYGlobalDe 1.1.2.3) +(CHANGES2-3 18114 856833014 h/46_CHANGES2-3 1.1) +(WWW/Library/freebsd/Makefile 600 856833014 f/10_Makefile 1.1) +(lynx_help/Lynx_users_guide.html 105776 860475643 e/14_Lynx_users 1.2.1.1) +(CHANGES2-4 48390 856833014 h/45_CHANGES2-4 1.1) +(src/LYMail.h 475 860064663 c/43_LYMail.h 1.2) +(lynx_help/keystroke_commands/cookie_help.html 2652 856833014 e/15_cookie_hel 1.1) +(lynx_help/keystroke_commands/xterm_help.html 1162 856833014 e/19_xterm_help 1.1) +(CHANGES2-5 93256 856833014 h/44_CHANGES2-5 1.1) +(CHANGES2-6 41847 856833014 b/0_CHANGES2-6 1.1) +(WWW/Library/Implementation/HTList.h 3636 856833014 g/17_HTList.h 1.1) +(docs/README.txt 580 856833014 e/35_README.txt 1.1) +(WWW/Library/Implementation/HTUtils.h 10114 861154413 g/7_HTUtils.h 1.5) +(src/LYSystem.h 211 856833014 c/38_LYSystem.h 1.1) +(WWW/Library/sco/Makefile 793 856833014 f/4_Makefile 1.1) +(utils/inews/version.c 100 856833014 c/0_version.c 1.1) +(WWW/Library/Implementation/LYexit.h 961 860064663 f/25_LYexit.h 1.1.1.2) +(about_lynx/COPYHEADER 825 856833014 e/40_COPYHEADER 1.1) +(src/chrtrans/rfc_suni.tbl 20516 860516309 i/0_rfc_suni.tbl 1.2) +(utils/inews/conf.h 3852 857398594 c/3_conf.h 1.1.1.1) +(WWW/README.txt 9430 856833014 e/47_README.txt 1.1) +(WWW/Library/Implementation/HTCJK.h 2933 860064663 f/30_HTCJK.h 1.2) +(src/LYDownload.c 14873 860588360 c/47_LYDownload 1.3) +(WWW/Library/apollo_m68k/Makefile 723 856833014 f/19_Makefile 1.1) +(test/ISO_LATIN1_test.html 3608 856833014 c/14_ISO_LATIN1 1.1) +(build.com 7376 856833014 e/38_build.com 1.1) +(src/chrtrans/cp852_uni.tbl 11362 860516309 i/6_cp852_uni. 1.2) +(lynx_help/lynx_url_support.html 27493 856833014 e/13_lynx_url_s 1.1) +(configure.in 5943 861154415 10_configure. 1.5) +(src/LYDownload.h 315 856833014 c/46_LYDownload 1.1) +(makefile.in 26415 861154415 8_makefile.i 1.1.1.4) +(src/chrtrans/cp1252_uni.tbl 10789 856856948 h/51_cp1252_uni 1.1) +(utils/inews/config.h-dist 13461 856833014 b/51_config.h-d 1.1) +(src/GridText.c 129950 860064663 e/5_GridText.c 1.1.1.3) +(WWW/Library/Implementation/HTFTP.c 90317 858077955 h/14_HTFTP.c 1.4) +(src/LYMain.c 73136 861154416 d/44_LYMain.c 1.1.2.1.1.5) +(src/tcpwareshr.opt 30 856833014 d/6_tcpwareshr 1.1) +(src/LYGetFile.c 30319 860589397 d/48_LYGetFile. 1.6) +(src/chrtrans/mnem_suni.tbl 24067 856856948 h/50_mnem_suni. 1.1) +(src/chrtrans/iso05_uni.tbl 1865 856925688 i/8_iso05_uni. 1.2) +(src/LYTraversal.c 4377 860064663 c/25_LYTraversa 1.1.1.2) +(src/UCAuto.c 6135 856856948 h/0_UCAuto.c 1.1) +(WWW/Makefile 203 856833014 e/44_Makefile 1.1) +(README.configure 1047 861154413 14_README.con 1.3) +(WWW/Library/Implementation/HTAAProt.c 16206 857148169 g/40_HTAAProt.c 1.2) +(WWW/Library/Implementation/crypt.c 3468 856833014 f/38_crypt.c 1.1) +(src/GridText.h 5770 856833014 d/33_GridText.h 1.1) +(README 4344 856833014 h/34_README 1.1) +(WWW/Library/Implementation/HTFTP.h 1458 856833014 g/31_HTFTP.h 1.1) +(WWW/Library/Implementation/HTVMSUtils.c 32547 856833014 h/23_HTVMSUtils 1.1) +(src/LYGetFile.h 597 860064663 d/18_LYGetFile. 1.2) +(utils/inews/config.h 13461 856833014 b/50_config.h 1.1) +(docs/RFC-MAILCAP.txt 31538 856833014 e/34_RFC-MAILCA 1.1) +(src/UCAuto.h 75 856856948 g/0_UCAuto.h 1.1) +(WWW/Library/unix/Makefile 713 861154414 f/9_Makefile 1.2) +(test/README.txt 377 856833014 c/15_README.txt 1.1) +(fixed512.com 1726 856833014 e/33_fixed512.c 1.1) +(src/LYTraversal.h 497 856833014 c/24_LYTraversa 1.1) +(lynx_help/keystroke_commands/gopher_types_help.html 1091 856833014 e/26_gopher_typ 1.1) +(WWW/Library/Implementation/HTVMSUtils.h 2354 856833014 f/39_HTVMSUtils 1.1) +(WWW/Library/Implementation/HTAAProt.h 7708 856833014 f/46_HTAAProt.h 1.1) +(LYMessages_en.h 29525 858840837 h/37_LYMessages 1.3) +(lynx_help/keystroke_commands/keystroke_help.html 4640 856833014 e/28_keystroke_ 1.1) +(WWW/Library/umaxv-m88k/Makefile 678 856833014 e/48_Makefile 1.1) +(WWW/Library/Implementation/HTBTree.c 26907 856833014 h/15_HTBTree.c 1.1) +(src/LYCookie.c 37402 860064663 c/18_LYCookie.c 1.3) +(src/DefaultStyle.c 9514 856833014 c/51_DefaultSty 1.1) +(VMSWAIS.announce 1549 856833014 h/29_VMSWAIS.an 1.1) +(WWW/Copyright.txt 944 856833014 e/46_Copyright. 1.1) +(src/chrtrans/Makefile 1873 860516309 i/3_Makefile 1.6) +(WWW/Library/Implementation/HTBTree.h 2196 856833014 g/32_HTBTree.h 1.1) +(src/LYKeymap.c 26251 856833014 d/31_LYKeymap.c 1.1) +(src/LYCookie.h 508 856833014 c/17_LYCookie.h 1.1) +(utils/lpansi/vmsbuild.com 1582 856833014 b/45_vmsbuild.c 1.1) +(CMU.announce 1178 856833014 h/43_CMU.announ 1.1) +(WWW/Library/convex/Makefile 723 856833014 f/2_Makefile 1.1) +(config.sub 19236 861154414 30_config.sub 1.1) +(src/LYKeymap.h 3384 860064663 d/30_LYKeymap.h 1.2) +(src/gnuc.opt 84 856833014 d/12_gnuc.opt 1.1) +(WWW/Library/Implementation/HTML.h 5588 856856948 g/28_HTML.h 1.2) +(src/LYSearch.c 6841 860064663 d/38_LYSearch.c 1.3) +(WWW/Library/Implementation/ufc-crypt.h 2491 856833014 f/33_ufc-crypt. 1.1) +(src/socketshr_tcp.opt 16 856833014 d/9_socketshr_ 1.1) +(src/HTAlert.c 10814 860064663 e/4_HTAlert.c 1.2) +(src/LYSearch.h 326 856833014 d/28_LYSearch.h 1.1) +(src/LYUtils.c 91060 860590375 d/27_LYUtils.c 1.12) +(PROBLEMS 6522 856833014 h/35_PROBLEMS 1.1) +(src/LYCharUtils.c 59125 860590375 c/22_LYCharUtil 1.2.1.4) +(WWW/Library/next/Makefile 992 856833014 f/16_Makefile 1.1) +(src/LYCgi.c 11218 860064663 c/28_LYCgi.c 1.2) +(utils/lpansi/lpansi.c 4570 856833014 b/49_lpansi.c 1.1) +(src/HTAlert.h 3198 856833014 d/1_HTAlert.h 1.1) +(src/chrtrans/iso09_uni.tbl 857 856925688 i/11_iso09_uni. 1.2) +(lynx_help/lynx_help_main.html 2668 857014209 e/29_lynx_help_ 1.2) +(src/LYUtils.h 3987 860064663 d/34_LYUtils.h 1.1.1.3) +(src/LYCharUtils.h 2043 856856948 c/19_LYCharUtil 1.2) +(WWW/Library/decstation/Makefile 409 856833014 f/18_Makefile 1.1) +(src/LYCgi.h 133 856833014 c/27_LYCgi.h 1.1) +(WWW/Library/Implementation/HTChunk.c 2033 856833014 h/8_HTChunk.c 1.1) +(WWW/Library/clix/Makefile 683 856833014 e/49_Makefile 1.1) +(RELEASE_STATEMENT 1212 860264978 h/33_RELEASE_ST 1.2) +(utils/inews/README 2391 856833014 c/7_README 1.1) +(src/LYHistory.c 13985 860064663 d/21_LYHistory. 1.1.1.2) +(utils/inews/Makefile 1484 857398594 c/9_Makefile 1.1.1.1) +(src/chrtrans/makeuctb.c 13310 860516309 i/1_makeuctb.c 1.7) +(WWW/Library/Implementation/HTChunk.h 3543 856833014 g/26_HTChunk.h 1.1) +(src/ucxolb.opt 28 856833014 c/36_ucxolb.opt 1.1) +(lynx_help/keystroke_commands/option_help.html 11623 860264978 e/23_option_hel 1.2) +(lynx_help/keystroke_commands/bookmark_help.html 891 856833014 e/27_bookmark_h 1.1) +(src/LYList.c 4220 857148169 d/3_LYList.c 1.2) +(src/LYHistory.h 623 856833014 d/11_LYHistory. 1.1) +(src/chrtrans/README.tables 2315 856856948 i/4_README.tab 1.1) +(samples/jumpsUnix.html 3328 856833014 e/8_jumpsUnix. 1.1) +(WWW/Library/Implementation/HTStyle.c 8994 860475643 h/5_HTStyle.c 1.3) +(src/chrtrans/cp850_uni.tbl 10229 860516309 i/19_cp850_uni. 1.2) +(WWW/Library/Implementation/HTMLGen.c 9582 856856948 h/9_HTMLGen.c 1.2) +(WWW/Library/Implementation/HTStream.h 1802 856833014 g/21_HTStream.h 1.1) +(WWW/Library/Implementation/HTFormat.c 21592 856833014 h/0_HTFormat.c 1.1) +(WWW/Library/vms/libmake.com 6288 856833014 f/21_libmake.co 1.1) +(src/chrtrans/iso04_uni.tbl 1858 856925688 i/15_iso04_uni. 1.2) +(WWW/Library/Implementation/HTUU.c 7512 860064663 g/37_HTUU.c 1.2) +(src/chrtrans/koi8r_uni.tbl 4570 860516880 24_koi8r_uni. 1.1) +(WWW/Library/Implementation/CommonMakefile 12712 861154413 f/41_CommonMake 1.3) +(DESC 664 856833014 h/41_DESC 1.1) +(src/LYVMSdef.h 562 856833014 c/16_LYVMSdef.h 1.1) +(src/LYList.h 222 856833014 c/26_LYList.h 1.1) +(src/decc.opt 58 856833014 d/13_decc.opt 1.1) +(src/chrtrans/cp1250_uni.tbl 10813 856856948 h/48_cp1250_uni 1.1) +(WWW/Library/Implementation/HTStyle.h 6741 856833014 g/18_HTStyle.h 1.1) +(WWW/Library/Implementation/HTMLGen.h 753 856833014 g/22_HTMLGen.h 1.1) +(CHANGES.new 19874 861154493 6_CHANGES.ne 1.22) +(WWW/Library/Implementation/HTFormat.h 10966 856833014 g/13_HTFormat.h 1.1) +(WWW/Library/Implementation/HTUU.h 964 856833014 f/43_HTUU.h 1.1) +(WWW/Library/Implementation/HTWSRC.c 10851 856833014 h/20_HTWSRC.c 1.1) +(src/chrtrans/UCkd.h 1317 856856948 i/2_UCkd.h 1.1) +(WWW/Library/Implementation/HTFile.c 56600 860590375 h/27_HTFile.c 1.1.2.3) +(src/chrtrans/mnemonic_suni.tbl 22264 856856948 h/49_mnemonic_s 1.1) +(WWW/Library/vms/COPYING.LIB 25265 856833014 f/20_COPYING.LI 1.1) +(WWW/Library/Implementation/HTWSRC.h 1320 856833014 g/3_HTWSRC.h 1.1) +(src/chrtrans/MAKEW32.BAT 831 860899928 3_MAKEW32.BA 1.2) +(WWW/Library/sgi/Makefile 683 856833014 f/14_Makefile 1.1) +(WWW/Library/Implementation/HTFile.h 4772 856856948 g/33_HTFile.h 1.2) +(WWW/Library/isc/Makefile 679 856833014 e/50_Makefile 1.1) +(src/LYMap.c 9053 860064663 c/21_LYMap.c 1.2) +(src/LYPrint.c 27053 861154416 d/40_LYPrint.c 1.5) +(WWW/Library/Implementation/HTTelnet.c 15473 860899928 h/24_HTTelnet.c 1.3) +(about_lynx/about_lynx.html 4135 856833014 e/43_about_lynx 1.1) +(samples/mime.types 1057 856833014 e/9_mime.types 1.1) +(src/HTNestedList.h 1188 856833014 c/30_HTNestedLi 1.1) +(src/LYMap.h 222 856833014 c/20_LYMap.h 1.1) +(samples/jumpsVMS.html 1417 856833014 e/7_jumpsVMS.h 1.1) +(src/LYReadCFG.c 31182 861154416 d/39_LYReadCFG. 1.1.1.1.1.5) +(WWW/Library/vms/descrip.mms 9051 856833014 f/22_descrip.mm 1.1) +(src/LYPrint.h 304 856833014 d/7_LYPrint.h 1.1) +(src/chrtrans/iso10_uni.tbl 1565 856925688 i/10_iso10_uni. 1.2) +(WWW/Library/Implementation/HTAccess.c 35510 856836688 h/17_HTAccess.c 1.2) +(WWW/Library/Implementation/HTTelnet.h 582 856833014 g/5_HTTelnet.h 1.1) +(WWW/Library/Implementation/HTAnchor.c 32223 860064663 h/6_HTAnchor.c 1.1.1.2) +(utils/inews/inews.c 7996 856833014 c/2_inews.c 1.1) +(src/LYReadCFG.h 219 856833014 c/41_LYReadCFG. 1.1) +(docs/README.html 686 856833014 e/36_README.htm 1.1) +(src/LYrcFile.c 25393 860590375 d/15_LYrcFile.c 1.3) +(WWW/Library/Implementation/HTAccess.h 7620 860064663 g/35_HTAccess.h 1.3) +(src/UCAux.c 6244 860064663 f/0_UCAux.c 1.3) +(WWW/Library/Implementation/HTPasswd.c 7766 856833014 g/43_HTPasswd.c 1.1) +(WWW/Library/Implementation/HTAAFile.c 5620 856833014 g/44_HTAAFile.c 1.1) +(samples/mailcap 4771 856833014 e/11_mailcap 1.1) +(WWW/Library/Implementation/HTAtom.c 3868 856833014 h/7_HTAtom.c 1.1) +(WWW/Library/Implementation/HTAnchor.h 13255 856856948 g/19_HTAnchor.h 1.2) +(src/chrtrans/iso06_uni.tbl 1204 856856948 i/14_iso06_uni. 1.1) +(Makefile 42942 860475643 h/36_Makefile 1.1.1.1.1.4) +(src/LYrcFile.h 194 856833014 d/5_LYrcFile.h 1.1) +(src/LYUpload.c 7538 857148169 d/35_LYUpload.c 1.2) +(src/HTForms.h 3106 856833014 d/32_HTForms.h 1.1) +(WWW/Library/Implementation/HTAAFile.h 4408 856833014 f/51_HTAAFile.h 1.1) +(src/descrip.mms 4835 856833014 e/6_descrip.mm 1.1) +(src/LYSignal.h 300 856833014 d/23_LYSignal.h 1.1) +(WWW/Library/Implementation/HTAtom.h 1210 856833014 g/20_HTAtom.h 1.1) +(lynx_help/keystroke_commands/other_help.html 6088 856833014 e/22_other_help 1.1) +(WWW/Library/Implementation/HTPasswd.h 4717 856833014 f/50_HTPasswd.h 1.1) +(WWW/Library/Implementation/patchlevel.h 959 856833014 f/34_patchlevel 1.1) +(aclocal.m4 22941 861154414 12_aclocal.m4 1.5) +(userdefs.h 52108 861154417 c/10_userdefs.h 1.1.2.1.1.1.1.5) +(WWW/Library/Implementation/HTAssoc.c 1736 856833014 g/39_HTAssoc.c 1.1) +(TCPWARE.announce 1352 856833014 h/31_TCPWARE.an 1.1) +(WWW/Library/sun4/Makefile 578 856833014 f/11_Makefile 1.1) +(WWW/Library/Implementation/HTMLDTD.c 33276 860516309 h/26_HTMLDTD.c 1.4) +(WWW/Library/vax_ultrix/Makefile 678 856833014 f/8_Makefile 1.1) +(src/LYUpload.h 300 856833014 c/49_LYUpload.h 1.1) +(lynx_help/keystroke_commands/edit_help.html 1409 856833014 e/17_edit_help. 1.1) +(src/LYLeaks.c 14684 856833014 c/31_LYLeaks.c 1.1) +(src/LYMainLoop.c 120193 860590375 d/43_LYMainLoop 1.2.3.6) +(about_lynx/about_lynx-dev.html 2500 856833014 e/42_about_lynx 1.1) +(VMSPrint.com 616 856833014 h/30_VMSPrint.c 1.1) +(WWW/Library/netbsd/Makefile 613 856833014 f/0_Makefile 1.1) +(WWW/Library/Implementation/UCAux.h 947 856856948 i/23_UCAux.h 1.1) +(WWW/Library/Implementation/HTMLDTD.h 25833 856856948 g/27_HTMLDTD.h 1.2) +(src/Makefile 2321 860520828 d/29_Makefile 1.2.2.2) +(WWW/Library/Implementation/HTAssoc.h 1096 856833014 f/45_HTAssoc.h 1.1) +(build-slang.com 8432 856833014 e/39_build-slan 1.1) +(src/LYMainLoop.h 101 860064663 d/19_LYMainLoop 1.2) +(WWW/Library/osf/Makefile 388 856833014 f/7_Makefile 1.1) +(lynx.man 12866 860264978 e/30_lynx.man 1.3) +(WWW/Library/Implementation/HTAAUtil.c 15696 856833014 g/47_HTAAUtil.c 1.1) +(samples/lynx.com 2192 856833014 e/10_lynx.com 1.1) +(WWW/Library/unix/makefile.in 1188 861154414 16_makefile.i 1.3) +(src/LYCharSets.c 109559 860516309 c/45_LYCharSets 1.3) +(src/LYStrings.c 28885 861154417 d/36_LYStrings. 1.8) +(src/HTFont.h 438 856833014 d/0_HTFont.h 1.1) +(WWW/Library/Implementation/Makefile 15116 856833014 f/40_Makefile 1.1) +(src/chrtrans/README.format 3551 860516309 i/5_README.for 1.2) +(WWW/Library/Implementation/HTDOS.c 1855 860588360 28_HTDOS.C 1.1) +(src/LYShowInfo.c 10635 857398594 d/37_LYShowInfo 1.4) +(utils/inews/README.NN 3051 856833014 c/6_README.NN 1.1) +(lynx_help/keystroke_commands/movement_help.html 1795 856833014 e/24_movement_h 1.1) +(src/HTML.c 168962 860520828 e/2_HTML.c 1.1.2.4) +(utils/inews/clientlib.c 11163 856833014 c/5_clientlib. 1.1) +(src/LYEdit.c 3448 860588360 d/50_LYEdit.c 1.2) +(WWW/Library/Implementation/HTAAUtil.h 12046 856833014 g/2_HTAAUtil.h 1.1) +(src/chrtrans/iso01_uni.tbl 5204 860516309 i/18_iso01_uni. 1.2) +(src/LYCharSets.h 1071 856856948 c/44_LYCharSets 1.2) +(WWW/Library/sun3/Makefile 636 856833014 f/12_Makefile 1.1) +(src/LYStrings.h 4742 860064663 d/20_LYStrings. 1.1.1.2) +(WWW/Library/Implementation/HTWAIS.c 29606 856833014 h/22_HTWAIS.c 1.1) +(CHANGES 58482 860264978 h/47_CHANGES 1.2) +(WWW/Library/Implementation/HTDOS.h 771 860588360 27_HTDOS.H 1.1) +(src/LYShowInfo.h 316 856833014 c/39_LYShowInfo 1.1) +(WWW/Library/Implementation/HTRules.c 11040 856833014 h/1_HTRules.c 1.1) +(WWW/Library/Implementation/SGML.c 66677 860423030 h/12_SGML.c 1.1.1.1.1.1.1.1) +(install.sh 4771 858077955 9_install.sh 1.1) +(src/HTML.h 5588 856856948 c/48_HTML.h 1.2) +(utils/inews/clientlib.h 230 856833014 c/4_clientlib. 1.1) +(src/LYEdit.h 134 856833014 d/16_LYEdit.h 1.1) +(newfiles.chartrans 1286 860620937 b/0_newfiles.chartrans 1.4) +(src/HTFWriter.c 31210 860590375 d/2_HTFWriter. 1.1.2.4) +(WWW/Library/Implementation/HTParse.c 20852 860064663 h/18_HTParse.c 1.3) +(WWW/Library/unix_x/Makefile 15482 856833014 f/1_Makefile 1.1) +(WWW/Library/Implementation/HTWAIS.h 1554 856833014 g/4_HTWAIS.h 1.1) +(lynx.cfg 66857 861154415 e/32_lynx.cfg 1.2.1.5) +(WWW/Library/Implementation/HTRules.h 4105 856833014 g/14_HTRules.h 1.1) +(WWW/Library/Implementation/SGML.h 6221 856856948 g/29_SGML.h 1.2) +(WWW/Library/snake/Makefile 649 856833014 f/13_Makefile 1.1) +(src/HTInit.c 30657 857148169 e/3_HTInit.c 1.2) +(test/tabtest.html 1412 856833014 c/11_tabtest.ht 1.1) +(WWW/Library/Implementation/UCDefs.h 2623 856856948 i/21_UCDefs.h 1.1) +(WWW/Library/Implementation/HTParse.h 4930 856833014 g/36_HTParse.h 1.1) +(SOCKETSHR.announce 1704 856833014 h/32_SOCKETSHR. 1.1) +(lynx_help/keystroke_commands/print_help.html 1235 856833014 e/21_print_help 1.1) +(WWW/Library/Implementation/HTAAServ.c 18320 856833014 g/46_HTAAServ.c 1.1) +(WWW/Library/Implementation/HTInit.c 9452 856833014 g/51_HTInit.c 1.1) +(src/LYStructs.h 2650 856833014 d/26_LYStructs. 1.1) +(utils/lpansi/lpansi.1 3039 856833014 b/47_lpansi.1 1.1) +(WWW/Library/ptx/Makefile 626 856833014 e/51_Makefile 1.1) +(src/cmu_tcp.opt 34 856833014 d/14_cmu_tcp.op 1.1) +(WWW/Library/Implementation/HTVMS_WaisProt.c 70622 856833014 f/32_HTVMS_Wais 1.1) +(WWW/Library/Implementation/HTMIME.c 60906 856856948 g/50_HTMIME.c 1.2) +(src/HTSaveToFile.h 554 856833014 c/50_HTSaveToFi 1.1) +(lynx.hlp 13216 860264978 e/31_lynx.hlp 1.3) +(WWW/Library/Implementation/HTAuth.c 5776 856833014 h/28_HTAuth.c 1.1) +(src/chrtrans/makefile.in 2279 860520828 18_makefile.i 1.2) +(src/LYCurses.c 29281 861154644 d/51_LYCurses.c 1.1.2.6) +(test/iso8859-1.html 12169 856833014 c/12_iso8859-1. 1.1) +(WWW/Library/mips/Makefile 663 856833014 f/3_Makefile 1.1) +(WWW/Library/Implementation/HTAAServ.h 4950 856833014 g/1_HTAAServ.h 1.1) +(WWW/Library/Implementation/HTInit.h 613 856833014 g/12_HTInit.h 1.1) +(WWW/Library/Implementation/HTTP.c 43811 859500450 h/16_HTTP.c 1.2) +(about_lynx/COPYING 17982 856833014 e/41_COPYING 1.1) +(WWW/Library/Implementation/UCMap.h 838 858077955 i/22_UCMap.h 1.2) +(WWW/Library/Implementation/HTVMS_WaisProt.h 13173 856833014 f/28_HTVMS_Wais 1.1) +(WWW/Library/Implementation/LYLeaks.h 4165 856833014 f/29_LYLeaks.h 1.1) +(WWW/Library/Implementation/HTMIME.h 2004 856833014 g/11_HTMIME.h 1.1) +(WWW/Library/Implementation/HTString.c 3364 856833014 h/3_HTString.c 1.1) +(README.win-386 1477 857398594 2_386-WIN.TX 1.2) +(WWW/Library/Implementation/HTAuth.h 1791 856833014 f/47_HTAuth.h 1.1) +(descrip.mms 3640 856833014 e/37_descrip.mm 1.1) +(src/LYCurses.h 6747 860064663 d/22_LYCurses.h 1.4.1.2) +(WWW/Library/Implementation/HTTCP.c 28080 860590375 h/13_HTTCP.c 1.2.2.3) +(src/chrtrans/utf8_uni.tbl 936 856856948 i/7_utf8_uni.t 1.1) +(test/TestComment.html 2032 856833014 c/13_TestCommen 1.1) +(WWW/Library/Implementation/HTTP.h 598 856833014 g/34_HTTP.h 1.1) +(WWW/Library/Implementation/Version.make 10 856833014 f/42_Version.ma 1.1) +(WWW/Library/Implementation/HTString.h 1153 856833014 g/16_HTString.h 1.1) +(src/makefile.dos 2178 860588360 1_makefile.d 1.3) +(MAKEFILE.W32 17274 857398594 5_MAKEFILE.W 1.1) +(src/win_tcp.opt 36 856833014 c/33_win_tcp.op 1.1) +(WWW/Library/Implementation/HTTCP.h 3160 860899928 g/30_HTTCP.h 1.3) +(src/chrtrans/iso03_uni.tbl 1872 856925688 i/16_iso03_uni. 1.2) +(WWW/Library/djgpp/CommonMakefile 13489 860588360 26_CommonMake 1.1) +(config.guess 20370 861154414 31_config.gue 1.1) +(config.hin 3817 861154414 11_config.hin 1.5) +(FM.announce 3655 856833014 h/40_FM.announc 1.1) +(src/LYGCurses.h 6123 856833014 c/32_LYGCurses. 1.1) +(WWW/Library/svr4/Makefile 590 856833014 f/5_Makefile 1.1) +(WWW/Library/Implementation/HTPlain.c 15394 858077955 h/11_HTPlain.c 1.4) +(src/vaxc.opt 54 856833014 c/34_vaxc.opt 1.1) +(WWW/Library/Implementation/HTAlert.c 3039 856833014 h/2_HTAlert.c 1.1) +(src/chrtrans/MAKEFILE.W32 1857 857398594 4_MAKEFILE.W 1.1) +(WWW/Library/Implementation/HTPlain.h 460 856833014 g/25_HTPlain.h 1.1) +(configure 150613 861154415 13_configure 1.5) +(src/ucxshr.opt 28 856833014 c/35_ucxshr.opt 1.1) +(utils/inews/Manifest 649 856833014 c/8_Manifest 1.1) +(WWW/Library/Implementation/HTLex.c 3090 856833014 g/38_HTLex.c 1.1) +(WWW/Library/Implementation/HTAlert.h 3198 856833014 g/15_HTAlert.h 1.1) +(WWW/Library/Implementation/HText.h 6841 856833014 g/6_HText.h 1.1) +(WWW/Library/Implementation/getpass.c 1649 856833014 f/35_getpass.c 1.1) +(lynx_help/keystroke_commands/dired_help.html 1683 856833014 e/18_dired_help 1.1) +(src/LYJump.c 11334 860064663 d/47_LYJump.c 1.2) +(WWW/Library/Implementation/HTLex.h 1293 856833014 f/44_HTLex.h 1.1) +(WWW/Library/Implementation/HTWriter.c 3883 856833014 h/21_HTWriter.c 1.1) +(lynx_help/keystroke_commands/visited_help.html 1401 856833014 e/16_visited_he 1.1) +(WWW/Library/Implementation/crypt_util.c 25993 856833014 f/37_crypt_util 1.1) +(src/LYJump.h 553 860064663 c/29_LYJump.h 1.2) +(src/LYLocal.c 55563 859825979 d/46_LYLocal.c 1.5) +(WWW/Library/Implementation/HTWriter.h 632 856833014 g/24_HTWriter.h 1.1) +(CHANGES.configure 3061 861154413 15_CHANGES.co 1.1.1.3) +(INSTALLATION 18767 856833014 h/38_INSTALLATI 1.1) +(src/LYLocal.h 2561 856833014 c/37_LYLocal.h 1.1) +(utils/inews/nntp.h 2530 856833014 c/1_nntp.h 1.1) +(WWW/Library/Implementation/HTVMS_WaisUI.c 60814 856833014 f/27_HTVMS_Wais 1.1) +(src/chrtrans/iso07_uni.tbl 1791 856925688 i/13_iso07_uni. 1.2) +(src/LYOptions.c 36155 859167360 d/41_LYOptions. 1.1.1.2) +(utils/lpansi/README 3202 856833014 b/48_README 1.1) +(WWW/Library/rs6000/Makefile 610 856833014 f/15_Makefile 1.1) +(src/LYNews.c 9613 860064663 d/42_LYNews.c 1.3) +(WWW/Library/Implementation/HTVMS_WaisUI.h 21281 856833014 f/26_HTVMS_Wais 1.1) +(WWW/Library/Implementation/HTNews.c 61601 860064663 h/25_HTNews.c 1.2) +(WWW/BUILD 1376 856833014 e/45_BUILD 1.1) +(WWW/Library/Implementation/BSDI_Makefile 13904 859167360 f/31_BSDI_Makef 1.2) +(WWW/Library/Implementation/HTACL.c 6107 856833014 g/41_HTACL.c 1.1) +(CRAWL.announce 5978 856833014 h/42_CRAWL.anno 1.1) +(src/LYOptions.h 908 860064663 d/17_LYOptions. 1.2) +(src/LYNews.h 212 856833014 c/42_LYNews.h 1.1) +(WWW/Library/Implementation/HTNews.h 1150 856833014 g/9_HTNews.h 1.1) +(CHANGES.chartrans 4727 860520828 c/0_CHANGES.chartrans 1.9.1.5) +(WWW/Library/Implementation/HTACL.h 3535 856833014 f/48_HTACL.h 1.1) +(src/UCdomap.c 41762 860516309 i/20_UCdomap.c 1.4) +(IBMPC-charsets.announce 7674 856833014 h/39_IBMPC-char 1.1) +(WWW/Library/Implementation/HTFinger.c 11475 856833014 f/24_HTFinger.c 1.1) +(src/chrtrans/iso08_uni.tbl 1048 856856948 i/12_iso08_uni. 1.1) +(src/UCdomap.h 1414 858077955 e/0_UCdomap.h 1.2) +(src/makefile.in 2726 860520828 17_makefile.i 1.3) +(WWW/Library/Implementation/HTAABrow.c 30644 856833014 g/45_HTAABrow.c 1.1) +(src/chrtrans/cp437_uni.tbl 10794 860516309 i/9_cp437_uni. 1.2) +(src/chrtrans/iso02_uni.tbl 2035 860516309 i/17_iso02_uni. 1.3) +(src/LYBookmark.c 23031 860590375 e/1_LYBookmark 1.1.1.3) +(WWW/Library/Implementation/HTFinger.h 476 856833014 f/23_HTFinger.h 1.1) +(src/LYClean.c 3537 857148169 e/0_LYClean.c 1.2) +(lynx_help/keystroke_commands/scrolling_help.html 2366 856833014 e/20_scrolling_ 1.1) +(WWW/Library/Implementation/HTAABrow.h 5511 856833014 g/0_HTAABrow.h 1.1) +(WWW/Library/Implementation/HTHistory.c 3973 856833014 g/49_HTHistory. 1.1) +(WWW/Library/Implementation/getline.c 1882 856833014 f/36_getline.c 1.1) +(src/LYBookmark.h 534 857148169 c/40_LYBookmark 1.2) +(src/chrtrans/def7_uni.tbl 24891 860516880 25_def7_uni.t 1.1) +(src/LYForms.c 27593 861154416 d/49_LYForms.c 1.5) +(src/LYEditmap.c 5899 856833014 c/23_LYEditmap. 1.1) +(WWW/Library/Implementation/HTFWriter.c 7487 856833014 h/10_HTFWriter. 1.1) +(newfiles.configure 272 861154567 7_newfiles.c 1.4) +(src/LYClean.h 340 856833014 d/24_LYClean.h 1.1) +(WWW/Library/Implementation/HTGopher.c 53261 860064663 g/48_HTGopher.c 1.3) +(src/multinet.opt 39 856833014 d/10_multinet.o 1.1) +(lynx_help/keystroke_commands/history_help.html 1801 856833014 e/25_history_he 1.1) +(WWW/Library/Implementation/HTHistory.h 2830 856833014 g/10_HTHistory. 1.1) +(WWW/Library/Implementation/HTGroup.c 18502 856833014 g/42_HTGroup.c 1.1) +(utils/lpansi/Makefile 447 856833014 b/46_Makefile 1.1) +(WWW/Library/solaris2/Makefile 655 856833014 f/6_Makefile 1.1) +(src/LYMail.c 29276 861154416 d/45_LYMail.c 1.1.1.5) +(src/LYexit.c 3587 860064663 d/4_LYexit.c 1.1.1.2) +(WWW/Library/Implementation/HTFWriter.h 998 856833014 g/23_HTFWriter. 1.1) +(WWW/Library/Implementation/tcp.h 16331 858971640 h/19_tcp.h 1.5) +(README.chartrans 7938 858212819 d/0_README.chartrans 1.4) +(WWW/Library/duns/Makefile 15116 856833014 f/17_Makefile 1.1) +(samples/lynx.cfg 66857 861154415 e/12_lynx.cfg 1.2.1.4) +(WWW/Library/Implementation/HTGopher.h 562 856833014 g/8_HTGopher.h 1.1) diff --git a/CHANGES.chartrans b/CHANGES.chartrans new file mode 100644 index 00000000..c213ec77 --- /dev/null +++ b/CHANGES.chartrans @@ -0,0 +1,135 @@ +$Id: CHANGES.chartrans,v 1.1 1997/04/08 17:33:48 tom Exp $ +$ProjectHeader: Lynx 2.7.1ac-0.5 Sat, 12 Apr 1997 20:52:08 -0600 buttles $ + +1997-04-08 + Lynx 2.7.1wb+ct-0.3 + New translation tables def7_uni and koi8r_uni. Use them. + Table def7 is based on RFC1345 and mnemonic,ds from ftp://dkuug.dk/i18n/ + and previous Lynx replacements in LYCharSets.c and some IPA FAQ + convention and stuff for Ethiopic and KOI8-R. It maps many of + the accented Latin characters to their unaccented counterparts. + Make def7_uni default table and associate it with us-ascii and + "7 bit approximations". + Lots of new entities from Hynek Med finally integrated. + Those include ascii characters and characters common between + Latin1 and Latin2. Let's see what happens. + Added mappings for some "smart quote" characters to several + translation tables. + Make makeuctb slightly more flexible (accept Unicode range for + mapping to single code point). + Also changes for Đ, ETH;, and ð in LYCharSets.c. + These are basically just data changes; code still hasn't progressed + much, so for example translation of ALT strings (from anything but + iso-8859-1) still doesn't work. + +1997-03-20 + Lynx 2.7ac-0.20 + merged with FM's 27bugfixes up to 1997-03-20 + +1997-03-20 + Lynx 2.7ac-0.9 + merged with FM's 27bugfixes up to 1997-03-17; adapted part of + FM's change re trademark character to the present chartrans code, + as follows: +* Modified SGML.c to handle the numeric character reference ™ as + the named entity ™ also in the non-chartrans case. The + trademark character (given by ™ or ™) will be shown as + "(TM)" as the ASCII substitution unless the current display character + has a code point for the trademark character or unless overridden by a + chartrans translation table. The code of 1997-02-25 prevented showing + the trademark sign as "(R)" but did not work in all non-chartrans + cases. - KW + +1997-03-12 + Lynx 2.7ac-0.6 + some doc changes, make compilation in src/chrtrans less verbose, + no more *.h_old backup copies. + +1997-03-12 + Lynx 2.7ac-0.5 + patch from Tom Dickey for refinement of SVr4 (ncurses) color support + +1997-03-11 + Lynx 2.7ac-0.4 + New patches from Wayne for Win32/DOS applied. + +1997-03-11 + Lynx 2.7ac-0.3 + today's 27bugfixes also merged in. + +1997-03-11 + Lynx 2.7ac-0.2 +* Merged code from Thomas E. Dickey and Jim Spath for auto configuration + and simple (SLang-like) curses color, which was based on 2.7wb+ct-0.4, + with 27bugfixes up to 1997-03-10. + +1997-03-03 + Lynx 2.7wb+ct-0.4 +* (chartrans) Minor cleanups (makeuctb.c, chrtrans/Makefile, HTPlain.c) + to enable successful compilation on Win32. + Also changes and new files from Wayne to fix FTP and enable Mail for Win32, + and to compile chartrans code. + +1997-03-03 + Lynx 2.7ct-0.8 + Lynx 2.7 chartrans + 27bugfixes up to 1997-03-02 + +1997-02-28 + Lynx 2.7ct-0.7 + Lynx 2.7 chartrans + 27bugfixes up to 1997-02-28 + small correction in SGML.c (set_chartrans_handling) + +1997-02-27 + Lynx 2.7ct-0.6 + Lynx 2.7 chartrans + 27bugfixes up to 1997-02-26 + +1997-02-26 + Lynx 2.7ct-0.5 + minor tweaks for packaging + +1997-02-26 + Lynx 2.7ct-0.4 + Ok, now really remove local configuration changes (for distribution)... + +1997-02-25 + Lynx 2.7ct-0.3 + merged with Fote's 27bugfixes up to 1997-02-25 + +1997-02-25 + Lynx 2.7ct-0.2 + Removed some local changes from userdefs.h and Makefile. + Mapping of U+fffd (replacement) to 0x00 removed from the used + iso0x table files. + +1997-02-25 + Lynx 2.7ct-0.1 + Update to work with official Lynx 2.7 distribution. + Add showing of effective charset in LYShowInfo.c even if not explicitly + given. + No showing of (TM) as (R) any more - mostly changes in LYCharUtils.c + (but these are independent of the chartrans stuff, translation routines + in LYCharUtils.c still not chartrans-ified). + Prefer HTTP-EQUIV over NAME in META tags. + Start managing changes with PRCS - the Project Revision Control System. + +1996-12-01 + lynx-patch-2.6ct-0.2.pch + Update to work with 11-30-96 Composite Patch. + Two new translation tables: cp852, windows-1250. + Compiling without -DEXP_CHARTRANS now also works... but one still has to + manually remove (comment out) first line of src/Makefile for that. + Minor changes to README files, this file. + +1996-11-29 + add-to-cp-2.6ct-0.1a.zip - install over Lynx2.6 + 11-28-96 CP. + Full files no diffs. + add-to-offi-2.6ct-0.1a.zip - install over Lynx2.6 to get 11-28-96 CP + + chartrans. Full files, no diffs. + + lynx-patch-2.6ct-0.1a.pch + Update to work with 11-28-96 Composite Patch. + +1996-11-28 + lynx-newfiles-2.6ct-0.1.{zip,tar.gz}, lynx-patch-2.6ct-0.1.pch + First packaged and announced. Works with 11-24-96 Composite Patch + from Hiram Lester. diff --git a/CHANGES.configure b/CHANGES.configure new file mode 100644 index 00000000..7e501966 --- /dev/null +++ b/CHANGES.configure @@ -0,0 +1,62 @@ +1997-04-15 +---------- +* refined logic of SVr4 curses color support to test the no_color_video + attribute - TD +* ifdef'd NCURSES_MOUSE_VERSION logic to allow build with ncurses 1.9.4 - TD +* ifdef'd wgetbkgd misspelling to allow build with ncurses prior to 1.9.9g - TD +* document USE_MOUSE configuration-option - TD +* modify configure script and makefile.in templates to make BSDI_Makefile + obsolete - TD +* rename config.h to lynx_cfg.h to minimize conflict when configuring against + ncurses or slang in nonstandard locations - TD +* new autoconf macro CF_HEADER_PATH is used to make header-search for slang + the same as ncurses - TD +* modify CF_CURSES_LIBS, CF_NCURSES_LIBS and CF_SLANG_LIBS to accommodate + predefinition of $LIBS variable - TD +* corrected autoconf'd compiler flags for Ultrix - TD +* add config.guess & config.sub to allow specialized host-type checks - TD +* guard against redefinition of NO_FILIO_H - TD +* use new autoconf macro CF_SYSTEM_MAIL_FLAGS /jes + +1997-04-06 +---------- +* modified LYMain.c, LYMail.c, LYPrint.c, LYReadCFG.c, LYGlobalDefs.h + to add SYSTEM_MAIL_FLAGS define and system_mail_flags global + variable and remove MMDF from internal code. /jes + +1997-04-02 +---------- +* add Andrew Kuchling's patch to support mouse-clicks with ncurses. +* refine tests that address porting problems to SCO (detecting struct winsize, + workaround for misdefinition of 'remove') +* refine CF_COLOR_CURSES test to avoid ncurses 1.9.9e bugs. +* refine CF_PATH_PROG to allow for machines that haven't the given programs, + by using only the program name and added configure option + --disable-full-paths to enforce this behavior. +* fixes for some gcc compiler warnings (missing prototypes, unused variables, + unintialized variables, shadowed variables, 2-3 places where assignments were + not being performed due to syntax errors -- LYHistory.c, LYMail.c). +* correct cast in HTFWriter.c that may break if atoi() is not prototyped. +* add top-level makefile target 'maintainer-clean', use this to remove Lynx.prj + +1997-03-22 +---------- +* Further reduction of top-level makefile.in by moving definitions out of + WWW/Implementation/*/Makefile, so only one is needed for autoconfigured + build (i.e., WWW/Implementation/unix/Makefile). This highlights the + remaining differences between the top-level targets - TD +* Make configure script generate Unix makefiles in subdirectories, a step + toward being able to run make from any directory, for development - TD +* Add autoconf tests for paths of programs, including sendmail vs mmdf - TD +* Add configure script options for development (--disable-echo, --enable-debug, + --enable-find-leaks, --enable-warnings) - TD +* Allow user to override search path for ncurses header by setting $CFLAGS or + $CPPFLAGS - TD +* Correct array limit in LYCurses.c for SVr4 color support - TD +* Use addstr rather than printw in popup-forms to address concern about 8-bit + characters - TD + +1997-3-9 +-------- +* Integrated (simple) color, auto-configure patches with 2.7 following + chrtrans patch - T.Dickey, J.Spath. diff --git a/CHANGES.new b/CHANGES.new new file mode 100644 index 00000000..bed0e341 --- /dev/null +++ b/CHANGES.new @@ -0,0 +1,345 @@ + Changes in the development code based on Lynx v2.7. + =================================================== +[ This file might finally become the CHANGES file for a new Lynx release. +More detailed change information may be in separate files, which could +later disappear. Currently included are changes from Foteos Macrides' +bugfixes, changes in chartrans code (see also CHANGES.chartrans), changes +for compilation on Win32 and DOS platforms (see also README.win-386), +changes for auto-configure and simple curses color (see also +README.configure), and miscellaneous other changes. Note that the 2.7 -> +2.7.1 changes (which are listed at the beginning of the current CHANGES +file) are duplicated here. - KW] + +1997-04-15 +---------- +* refined logic of SVr4 curses color support to test the no_color_video + attribute - TD +* ifdef'd NCURSES_MOUSE_VERSION logic to allow build with ncurses 1.9.4 - TD +* ifdef'd wgetbkgd misspelling to allow build with ncurses prior to 1.9.9g - TD +* document USE_MOUSE configuration-option - TD +* modify configure script and makefile.in templates to make BSDI_Makefile + obsolete - TD +* rename config.h to lynx_cfg.h to minimize conflict when configuring against + ncurses or slang in nonstandard locations - TD +* new autoconf macro CF_HEADER_PATH is used to make header-search for slang + the same as ncurses - TD +* modify CF_CURSES_LIBS, CF_NCURSES_LIBS and CF_SLANG_LIBS to accommodate + predefinition of $LIBS variable - TD +* corrected autoconf'd compiler flags for Ultrix - TD +* add config.guess & config.sub to allow specialized host-type checks - TD +* guard against redefinition of NO_FILIO_H - TD +* use new autoconf macro CF_SYSTEM_MAIL_FLAGS /jes + +1997-04-09 +* Many changes to further the Win32 and 386 ports. An emulation of + the HTVMS_ calls was used to try and cover all the DOS'izms. + A specialized ifdef for pdcurses color mapping added. Some keypad + tweaks. More generalized process spawing. .lynrc is lynx.rc for 386. + - WB +* Moved handling for NEWS_POSTING in LYReadCFG.c to the right place, + so that it can actually have an effect. - LWV +1997-04-08 +* New translation table koi8r_uni for KOI8-R charset. Lynx can now + translate between iso-8859-5 and KOI8-R, at least for the cyrillic + characters present in both. - KW +* New translation table def7_uni with default 7-bit mappings + (replacement representation). Based on RFC1345 and mnemonic,ds + from ftp://dkuug.dk/i18n/ and previous Lynx replacements + in LYCharSets.c and IPA FAQ convention and stuff for Ethiopic and + KOI8-R. It maps many of the accented Latin characters present in + Unicode to their unaccented counterparts. This table is now + used for the "7 bit approximations" display "character set". - KW +* Entities for Latin2 characters added to HTMLDTD.c These also + include many entity names for ASCII characters, and characters + which are in both iso-8859-1 and iso-8859-2. - Hynek Med +* Changes to the non-chartrans translation tables in LYCharSets.c + for Đ, Ð, and ð. Treat Đ more like + an entity for the (Latin-2) Unicode character U+0110, since + that seems to be SGML standard usage. - KW +* Added mappings for some "smart quote" characters to several + translation tables. - KW +* Make makeuctb slightly more flexible (accept unicode range for + mapping to single code point). - KW +1997-04-07 +* Took out special-case handling in the curses-color code for underlining + when lynx is running under linux using the linux console with color. + The code was introduced on 1997-03-12 and would ignore "smul" capability + info from terminfo or termcap under those circumstances, always using + bold instead of underline. - KW +* Slightly modified the FORM handling patch of 1997-04-05, as follows: + Use a generic test for a non-SGML_EMPTY element for bypassing the + stack pop in HTML_end_element() of HTML.c instead of an explicit + test for HTML_FORM. - KW +1997-04-06 +* Patch for IMG elements which have both ISMAP and USEMAP in effect. + In HTML_start_element() don't generate the "[ISMAP]-" string for + output in this case, unless clickable_images is set TRUE. - KW +1997-04-05 +* Patch for Lynx v2.7.1 to handle invalidly interdigitated container + elements or spurious container end tags without substitutions of + "expected" FORM end tags by the SGML.c stack-based parser, and + without messing up the HTML.c stack-based parser. Reliably succeeds + in not closing FORMs before all of the FORM elements, including + submit buttons, have been processed. Should be reasonably crash + safe (hopefully as safe as the vanilla v2.7.1), but there are no + guarantees. - FM +======================================================================= +--- Release of Lynx2-7 + BUGFIXES as Lynx v2.7.1 (April 4, 1997) --- +----------------------------------------------------------------------- + Changes listed below were made to the development code in parallel + to the bugfixes which resulted in 2.7.1, and include those bugfixes + (or equivalent changes). +======================================================================= +1997-04-02 +* add Andrew Kuchling's patch to support mouse-clicks with ncurses. - TD +* refine tests that address porting problems to SCO (detecting struct winsize, + workaround for misdefinition of 'remove') +* refine CF_COLOR_CURSES test to avoid ncurses 1.9.9e bugs. - TD +* refine CF_PATH_PROG to allow for machines that haven't the given programs, + by using only the program name and added configure option + --disable-full-paths to enforce this behavior. - TD +* fixes for some gcc compiler warnings (missing prototypes, unused variables, + unintialized variables, shadowed variables). - TD +* Fixed typos in LYHistory.c, LYMail.c and LYMain.c which caused + failures of flag setting in the distributed code. - TD +* correct cast in HTFWriter.c that may break if atoi() is not prototyped. - TD +* add top-level makefile target 'maintainer-clean', use this to remove + Lynx.prj - TD +1997-03-31 +* Added a missing check for whether the fragment token is NULL in + LYConvertToURL() of LYUtils.c. Without the check, the for-Unix code + could crash if a local file spec was entered as a startfile or goto + with escaped characters. - KW +* Mod in HTML.c to retain "[INLINE]" as the default ALT string if an + IMG element has an ISMAP attribute but is not in Anchor content such + that it could not in fact function as a server-side image map. - FM +1997-03-27 +* In mainloop(), after the call to HText_pageDisplay() following a change + of the document view, ensure that curdoc.link does not remain set to -1 + if there are any links on the screen. This would otherwise happen if + a document is pushed to the history stack while there are no links, and + later popped (and refreshed) after one or more links have been created. + This change prevents segmentation faults which occurred after creation + of a new file in a previously empty directory via the DIRED menu. The + access to invalid memory only occurred if the screen showing the empty + directory did not have a parent dir reference link (which is always the + case if NO_PARENT_DIR_REFERENCE was specified at compilation time). - KW +* In LYLocal.c, modified the code handling DIRED_MENU to do more careful + checking of the selected file. In addition to "TAG", "FILE", and "DIR", + DIRED_MENU definitions in lynx.cfg now also recognize LINK as a type. + DIRED_MENU definitions with a type field of "LINK" are only used if the + current selection is a symbolic link ("FILE" and "DIR" definitions are + not used in that case). The default menu definitions have been updated + to reflect this change, and to avoid the showing of menu items whose + action would always fail - KW +* Some cleanup to eliminate compiler warnings, remove some unused + variables - KW +* Fixed a typo and added comments for the code in LYMainLoop.c which + decides whether to load the URLs for homepage and/or startfile into + the goto buffer at startup. The typo in the distributed code caused + the startfile URL always to be added to the goto buffer, even if + it had POST content such that it could be resent inappropriately + as a GET request via the goto buffer. - FM +* Added a bsdi-slang target to the Makefile. - LE +1997-03-26 +* Changed highlighting of strings found by a WHEREIS ('/') search. + Now uses Christmas tree attribute combination ("all bits are on"), + which with color support translates to COLOR:7. - KW +* Modified the HTStream structure and associated code in src/HTFWriter.c + so that we save and use the relevant content of the associated + HTPresentation structure as two HTFormat elements rather than via a + pointer to the HTPresentation structure itself, because the latter + structure might not be valid under some circumstances when + HTFWriter_free() is called. The distributed code might indirectly + result in segmentation faults during downloading on linux and some + other flavors of Unix (though they don't occur for most flavors, or + on VMS). - KW +1997-03-23 +* Further reduction of top-level makefile.in by moving definitions out of + WWW/Implementation/*/Makefile, so only one is needed for autoconfigured + build (i.e., WWW/Implementation/unix/Makefile). This highlights the + remaining differences between the top-level targets - TD +* Make configure script generate Unix makefiles in subdirectories, a step + toward being able to run make from any directory, for development - TD +* Add autoconf tests for paths of programs, including sendmail vs mmdf - TD +* Add configure script options for development (--disable-echo, --enable-debug, + --enable-find-leaks, --enable-warnings) - TD +* Allow user to override search path for ncurses header by setting $CFLAGS or + $CPPFLAGS - TD +* Correct array limit in LYCurses.c for SVr4 color support - TD +* Use addstr rather than printw in popup-forms to address concern about 8-bit + characters - TD +1997-03-21 +* Changes in auto config handling of ncurses header location, function + used for reading terminal input, some other system dependent tweaks + (including SCO broken remove, time.h) - TD +* Fix for popup handling with late ncurses versions (uses wprintw + instead of waddstr in LYForms.c) - TD +* Mods in LYPrint.c to use ".txt" as the output file extension for + all rendered text/html files regardless of their original extension. + The distributed code was doing this only for ones with an extension + of ".html". The original extension still is retained if the file + is being output as source. - FM +* Added protection against passing a NULL pointer for path_url to + render_item() from dired_options() in LYLocal.c. - GN +1997-03-20 +* Tweaked the protection against URLs directed to port 19 or port 25 so + that it can't be circumvented via lead zeros in the port numbers. - FM +* Changed the compilation default so as not to send From MIME headers to + http or https servers. The default can still be changed via lynx.cfg. + Replaced the -nofrom disabling switch to a -from switch for toggling + the compilation or configuration default. Sending the From header + has become widely regarded as an invasion of privacy risk, particularly + in conjunction with cookie support. - FM +* Corrected a typo in the lynx.cfg comments concerning TRUSTED_LYNXCGI + rules. - KW +1997-03-17 +* Mods of LYNews.c and LYMail.c to prepend a "-- " separator before + appending the LYNX_SIG_FILE signature file to news and email + messages. - FM +* Made the installation mode 755 in the top-level Makefile. The + distributed code used 555, and some install commands were unable + to do the strip. - LWV +1997-03-14 +* Corrected typos and expanded the comments concerning lynxcgi symbols + in userdefs.h and lynx.cfg. - FM +* Modified SGML.c to handle the numeric character reference ™ as + the named entity ™ also in the non-chartrans case. The + trademark character (given by ™ or ™) will be shown as + "(TM)" as the ASCII substitution unless the current display character + has a code point for the trademark character or unless overridden by a + chartrans translation table. The code of 1997-02-25 prevented showing + the trademark sign as "(R)" but did not work in all non-chartrans + cases. - KW +* Include time.h via tcp.h for SVR4 systems. The tcp.h header does include + sys/time.h for Unix systems, but this apparently doesn't get struct tm + and extern char * ctime() declared for SVR4. - FM +1997-03-13 +* Added protection in LYGetFile.c against connections to the port 25 + ESMTP service. - FM +1997-03-12 +* (chartrans) Make compilation in src/chrtrans less verbose, no more + generating automatic *.h_old backup copies. - KW +* Refinement to the SVr4 (ncurses) color support, allowing it + to more closely model the slang support. - TD +1997-03-11 +* Tweak for command line parsing of files with no URL in LYUtils.c. + Also added ability to pass partial domain names in the DJGPP version. - WB +* Added the closing function for Win32 TCP in LYExit.c (did anyone see a + difference?!). - WB +* Altered LYCurses.c so that the DJGPP version could spawn other programs + without certain death. - WB +* Ignoring the whole ~/lynx.cfg problem (expanding '~') entirely for the + Win32 version for now. - WB +* Some other tweaks for Win32 and DJGPP - WB +* Added protection in LYGetFile.c against denial of service attacks via + the port 19 CHARGEN service. The distributed code left Lynx or proxies + vulnerable to such attacks via direct or redirection URLs. - FM +1997-03-10 +* Fixed error in the handling of numeric character references with values + greater than 255 in SGML.c. The distributed code was breaking after + substitutions instead of falling through to reset the string chunk and + recycle the terminator if not a semi-colon. - FM +1997-03-09 +* Integrated (simple) color, auto-configure patches with 2.7 following + chrtrans patch - T.Dickey, J.Spath. +1997-03-08 +* Fixed error in the switch positioning of checks for XLOADIMAGE_COMMAND + and wais_proxy in LYReadCFG.c. The distributed code had them reversed + under case 'W' versus case 'X'. - PDS +* Expanded the copyright and licensing statements in the -version + output. - FM +1997-03-04 +* Corrected the offset computation in textsearch() of LYSearch.c so that + WHEREIS searches repeated on a page with no links seek the target + starting at the line immediately following the last displayed. The + distributed code was setting a greater offset. - JS +1997-03-02 +* Don't entify post content for the showinfo display, now that we are + making it an XMP block in that display to handle all of the supported + enctypes. - FM +* Patches to fix mail and FTP for Win32 (LYMail.c, HTFile.c). - WB +* Makefiles to compile chartrans code for Win32. - WB +* (chartrans) Minor cleanups (makeuctb.c, chrtrans/Makefile, HTPlain.c) + to enable successful compilation on Win32. - KW +1997-02-28 +* Changed all references to "image/*" to just "image" in the userdefs.h + and lynx.cfg comments about XLOADIMAGE_COMMAND. The "/*" within the + userdefs.h comments was generating warnings from some compilers. - FM +* Added a snake-slang target to the Makefile, and added -DUNIX to the + LYFLAGS for the snake3 and snake3-slang targets (HP-UX apparently does + not define "unix" itself with the -Ae switch, and thus needs to have + that definition forced via -DUNIX). - HL +* Merged with patches and makefiles from Wayne Buttles + (buttles@wsb.champlain.edu) to enable compilation in two new environments: + Win32 (95/NT) with Borland C++ 4.52 compiler, and 386 DOS with DJGPP + compiler. See README.win-386 for more info. Separate utility programs + needed for compiling and running Lynx on those platforms are available + from Wayne at <http://www.fdisk.com/doslynx/wlynx/>. - WB, KW +* Fixed Telnet for Win32 - WB +* (chartrans) Small correction in SGML.c (set_chartrans_handling) - KW +1997-02-26 +* Close both descriptors of the pipe() for the NSL_FORK enabled code + in HTTCP.c. The distributed code was closing only one of them on + completed gethostbyname() calls, and neither on 'z'aps. - FM +* Changed the HREF for the "Lynx FAQ" link in the online 'h'elp to + its new URL (http://www.slcc.edu/lynx/faq.html). - FM +1997-02-25 +* More reverse engineering to cope with Netscape's bogus cookie header + parsing. The parser must not require an '=' between the expires + attribute name and value, because Set-Cookie headers are being + transmitted without it (e.g., by http://law.agps.gov.au). So Lynx + now treats that as another special case. - FM +* Cope with invalid use of expires attributes in Version 1 cookies. + An -06 State Management draft recommends that for "backward + compatibility", and has been severely criticized in the HTTP-WG, + but it would be foolish not to assume Netscape will do that. See the + expanded comments in LYSetCookie() of LYCookie.c for more information. + Note that "expires" thus cannot be used as a Version 1 cookie name, but + a provider would be foolish to use that, anyway. Note also that the + possibility of using different header names for Version 1 versus + Version 0 (a.k.a., "Netscape") cookies is being discussed in the + HTTP-WG, which might have been better to do in the first place, but + the -05 draft has been approved as RFC 2109: + http://info.internet.isi.edu/in-notes/rfc/files/rfc2109.txt + so it would be a while before that were done, if ever. - FM +* chartrans code for translation of character sets, handling of Unicode, + and i18n updated for Lynx 2.7. Support for CHARSET attribute on A + tags. New directory src/chrtrans with table files. Compilation flags + -DEXP_CHARTRANS, -DEXP_CHARTRANS_AUTOSWITCH (for linux), + -DSLANG_MBCS_HACK (for raw unicode console). + New command line options when compiled with -DEXP_CHARTRANS: + -assume_charset, -assume_local_charset, -assume_unrec_charset. + See README.chartrans and README files in src/chrtrans for more info. - KW +* No showing of ™ or ™ as (R) any more, use (TM) instead. - KW +* Prefer HTTP-EQUIV over NAME in META tags. - KW +1997-02-22 +* Fixed a memory management glitch which could cause a crash if the + MIME type of a reply to a FORM submission with METHOD=POST caused a + download offer to be invoked. - FM +* Don't simplify ftp URLs by trimming trailing slashes if the URL is + being proxied. The Netscape proxy server for some unknown reason + can return redirection for ftp URLs with the slash appended, and + trimming it can result in a redirection loop. Based on a posted + patch from KW. - FM +* Fixed two typos in the checks for HTPassHighCtrlRaw in LYExpandString() + of LYCharUtils.c. - KW +* Fixed typo in the equality check on line 1553 in HTGopher.c. - AM +1997-02-19 +* Reset the host string after an '@', if present, when trimming default + ":port" fields in the new code aimed at compliance with the Masinter + and Fielding URL drafts, expected to replace RFCs 1738 and 1808. The + distributed code neglected to do that, and was ending up on a ":password" + field, if present, instead of on the ":port" field, causing the username + to be treated as the host name. - FM +* Expand the default port trimming so as to include all of the registered + URL schemes which support a port field in the v2.7 release. - FM +* Correctly uncache the current directory listing when invoking an 'u'pload, + so that it will be updated to include the uploaded file if placed in the + current directory. The released code attempted to do this in a manner + which prevented a pop, so that the directory listing couldn't be restored + on return from the uploader menu. - FM +* Recognize a bookmark file used as the startfile, whether it resides in the + home directory or in a subdirectory off home. The released code failed if + the file was in home, and not in a subdirectory, unless the -book switch + was used instead of a startfile entry or WWW_HOME variable. - FM diff --git a/Lynx.prj b/Lynx.prj new file mode 100644 index 00000000..34c70df0 --- /dev/null +++ b/Lynx.prj @@ -0,0 +1,428 @@ +;; -*- Lisp -*- +(Created-By-Prcs-Version 1 2 0) +(Project-Description "PRCS Project for The Lynx browser") +(Project-Version Lynx 2.7.1ac-0 6) +(Parent-Version Lynx 2.7.1ac-0 5) + +(Version-Log "fixes for ncurses+slang autoconfigure when $LIBS is defined, making library +search redundant. fixes for pre-1.9.9g ncurses, ultrix and bsdi. +") +(New-Version-Log "") +(Checkin-Time "Tue, 15 Apr 1997 19:40:10 -0600") +(Checkin-Login dickey) +(Populate-Ignore ("\\.o$" "\\.a$" "~$" "^a.out$" "^core$" + "\\.dvi$" "\\.aux$" "^\\..*_aux$" "\\.log" + "\\.zip$" "^obsolete" "/obsolete" + "/chrtrans/.*uni_h" "\\.h_old$" + "^lynx$" "/lynx$" "\\.bak$" "\\.old$" "\\.rej$" "\\.orig$" + "w3chttp\\.")) +(Project-Keywords) +(Files +;; This is a comment. Fill in files here. +;; For example: (prcs/checkout.cc ()) + +;; Files added by populate at Mon, 24 Feb 1997 18:11:17 -0600: + + (CHANGES2-6 (Lynx/b/0_CHANGES2-6 1.1 644)) + (utils/lpansi/vmsbuild.com (Lynx/b/45_vmsbuild.c 1.1 644)) + (utils/lpansi/Makefile (Lynx/b/46_Makefile 1.1 644)) + (utils/lpansi/lpansi.1 (Lynx/b/47_lpansi.1 1.1 644)) + (utils/lpansi/README (Lynx/b/48_README 1.1 644)) + (utils/lpansi/lpansi.c (Lynx/b/49_lpansi.c 1.1 644)) + (utils/inews/config.h (Lynx/b/50_config.h 1.1 644)) + (utils/inews/config.h-dist (Lynx/b/51_config.h-d 1.1 644)) + (utils/inews/version.c (Lynx/c/0_version.c 1.1 644)) + (utils/inews/nntp.h (Lynx/c/1_nntp.h 1.1 644)) + (utils/inews/inews.c (Lynx/c/2_inews.c 1.1 644)) + (utils/inews/conf.h (Lynx/c/3_conf.h 1.1.1.1 644) :no-keywords) + (utils/inews/clientlib.h (Lynx/c/4_clientlib. 1.1 644)) + (utils/inews/clientlib.c (Lynx/c/5_clientlib. 1.1 644)) + (utils/inews/README.NN (Lynx/c/6_README.NN 1.1 644)) + (utils/inews/README (Lynx/c/7_README 1.1 644)) + (utils/inews/Manifest (Lynx/c/8_Manifest 1.1 644)) + (utils/inews/Makefile (Lynx/c/9_Makefile 1.1.1.1 644) :no-keywords) + (userdefs.h (Lynx/c/10_userdefs.h 1.1.2.1.1.1.1.5 644)) + (test/tabtest.html (Lynx/c/11_tabtest.ht 1.1 644)) + (test/iso8859-1.html (Lynx/c/12_iso8859-1. 1.1 644)) + (test/TestComment.html (Lynx/c/13_TestCommen 1.1 644)) + (test/ISO_LATIN1_test.html (Lynx/c/14_ISO_LATIN1 1.1 644)) + (test/README.txt (Lynx/c/15_README.txt 1.1 644)) + (src/LYVMSdef.h (Lynx/c/16_LYVMSdef.h 1.1 644)) + (src/LYCookie.h (Lynx/c/17_LYCookie.h 1.1 644)) + (src/LYCookie.c (Lynx/c/18_LYCookie.c 1.3 644)) + (src/LYCharUtils.h (Lynx/c/19_LYCharUtil 1.2 644)) + (src/LYMap.h (Lynx/c/20_LYMap.h 1.1 644)) + (src/LYMap.c (Lynx/c/21_LYMap.c 1.2 644)) + (src/LYCharUtils.c (Lynx/c/22_LYCharUtil 1.2.1.4 644)) + (src/LYEditmap.c (Lynx/c/23_LYEditmap. 1.1 644)) + (src/LYTraversal.h (Lynx/c/24_LYTraversa 1.1 644)) + (src/LYTraversal.c (Lynx/c/25_LYTraversa 1.1.1.2 644)) + (src/LYList.h (Lynx/c/26_LYList.h 1.1 644)) + (src/LYCgi.h (Lynx/c/27_LYCgi.h 1.1 644)) + (src/LYCgi.c (Lynx/c/28_LYCgi.c 1.2 644)) + (src/LYJump.h (Lynx/c/29_LYJump.h 1.2 644)) + (src/HTNestedList.h (Lynx/c/30_HTNestedLi 1.1 644)) + (src/LYLeaks.c (Lynx/c/31_LYLeaks.c 1.1 644)) + (src/LYGCurses.h (Lynx/c/32_LYGCurses. 1.1 644)) + (src/win_tcp.opt (Lynx/c/33_win_tcp.op 1.1 644)) + (src/vaxc.opt (Lynx/c/34_vaxc.opt 1.1 644)) + (src/ucxshr.opt (Lynx/c/35_ucxshr.opt 1.1 644)) + (src/ucxolb.opt (Lynx/c/36_ucxolb.opt 1.1 644)) + (src/LYLocal.h (Lynx/c/37_LYLocal.h 1.1 644)) + (src/LYSystem.h (Lynx/c/38_LYSystem.h 1.1 644)) + (src/LYShowInfo.h (Lynx/c/39_LYShowInfo 1.1 644)) + (src/LYBookmark.h (Lynx/c/40_LYBookmark 1.2 644)) + (src/LYReadCFG.h (Lynx/c/41_LYReadCFG. 1.1 644)) + (src/LYNews.h (Lynx/c/42_LYNews.h 1.1 644)) + (src/LYMail.h (Lynx/c/43_LYMail.h 1.2 644)) + (src/LYCharSets.h (Lynx/c/44_LYCharSets 1.2 644)) + (src/LYCharSets.c (Lynx/c/45_LYCharSets 1.3 644)) + (src/LYDownload.h (Lynx/c/46_LYDownload 1.1 644)) + (src/LYDownload.c (Lynx/c/47_LYDownload 1.3 644)) + (src/HTML.h (Lynx/c/48_HTML.h 1.2 644)) + (src/LYUpload.h (Lynx/c/49_LYUpload.h 1.1 644)) + (src/HTSaveToFile.h (Lynx/c/50_HTSaveToFi 1.1 644)) + (src/DefaultStyle.c (Lynx/c/51_DefaultSty 1.1 644)) + (src/HTFont.h (Lynx/d/0_HTFont.h 1.1 644)) + (src/HTAlert.h (Lynx/d/1_HTAlert.h 1.1 644)) + (src/HTFWriter.c (Lynx/d/2_HTFWriter. 1.1.2.4 644)) + (src/LYList.c (Lynx/d/3_LYList.c 1.2 644)) + (src/LYexit.c (Lynx/d/4_LYexit.c 1.1.1.2 644)) + (src/LYrcFile.h (Lynx/d/5_LYrcFile.h 1.1 644)) + (src/tcpwareshr.opt (Lynx/d/6_tcpwareshr 1.1 644)) + (src/LYPrint.h (Lynx/d/7_LYPrint.h 1.1 644)) + (src/tcpwareolb.opt (Lynx/d/8_tcpwareolb 1.1 644)) + (src/socketshr_tcp.opt (Lynx/d/9_socketshr_ 1.1 644)) + (src/multinet.opt (Lynx/d/10_multinet.o 1.1 644)) + (src/LYHistory.h (Lynx/d/11_LYHistory. 1.1 644)) + (src/gnuc.opt (Lynx/d/12_gnuc.opt 1.1 644)) + (src/decc.opt (Lynx/d/13_decc.opt 1.1 644)) + (src/cmu_tcp.opt (Lynx/d/14_cmu_tcp.op 1.1 644)) + (src/LYrcFile.c (Lynx/d/15_LYrcFile.c 1.3 644)) + (src/LYEdit.h (Lynx/d/16_LYEdit.h 1.1 644)) + (src/LYOptions.h (Lynx/d/17_LYOptions. 1.2 644)) + (src/LYGetFile.h (Lynx/d/18_LYGetFile. 1.2 644)) + (src/LYMainLoop.h (Lynx/d/19_LYMainLoop 1.2 644)) + (src/LYStrings.h (Lynx/d/20_LYStrings. 1.1.1.2 644)) + (src/LYHistory.c (Lynx/d/21_LYHistory. 1.1.1.2 644)) + (src/LYCurses.h (Lynx/d/22_LYCurses.h 1.4.1.2 644)) + (src/LYSignal.h (Lynx/d/23_LYSignal.h 1.1 644)) + (src/LYClean.h (Lynx/d/24_LYClean.h 1.1 644)) + (src/LYGlobalDefs.h (Lynx/d/25_LYGlobalDe 1.1.2.3 644)) + (src/LYStructs.h (Lynx/d/26_LYStructs. 1.1 644)) + (src/LYUtils.c (Lynx/d/27_LYUtils.c 1.12 644)) + (src/LYSearch.h (Lynx/d/28_LYSearch.h 1.1 644)) + (src/Makefile (Lynx/d/29_Makefile 1.2.2.2 644)) + (src/LYKeymap.h (Lynx/d/30_LYKeymap.h 1.2 644)) + (src/LYKeymap.c (Lynx/d/31_LYKeymap.c 1.1 644)) + (src/HTForms.h (Lynx/d/32_HTForms.h 1.1 644)) + (src/GridText.h (Lynx/d/33_GridText.h 1.1 644)) + (src/LYUtils.h (Lynx/d/34_LYUtils.h 1.1.1.3 644)) + (src/LYUpload.c (Lynx/d/35_LYUpload.c 1.2 644)) + (src/LYStrings.c (Lynx/d/36_LYStrings. 1.8 644)) + (src/LYShowInfo.c (Lynx/d/37_LYShowInfo 1.4 644)) + (src/LYSearch.c (Lynx/d/38_LYSearch.c 1.3 644)) + (src/LYReadCFG.c (Lynx/d/39_LYReadCFG. 1.1.1.1.1.5 644)) + (src/LYPrint.c (Lynx/d/40_LYPrint.c 1.5 644)) + (src/LYOptions.c (Lynx/d/41_LYOptions. 1.1.1.2 644)) + (src/LYNews.c (Lynx/d/42_LYNews.c 1.3 644)) + (src/LYMainLoop.c (Lynx/d/43_LYMainLoop 1.2.3.6 644)) + (src/LYMain.c (Lynx/d/44_LYMain.c 1.1.2.1.1.5 644)) + (src/LYMail.c (Lynx/d/45_LYMail.c 1.1.1.5 644)) + (src/LYLocal.c (Lynx/d/46_LYLocal.c 1.5 644)) + (src/LYJump.c (Lynx/d/47_LYJump.c 1.2 644)) + (src/LYGetFile.c (Lynx/d/48_LYGetFile. 1.6 644)) + (src/LYForms.c (Lynx/d/49_LYForms.c 1.5 644)) + (src/LYEdit.c (Lynx/d/50_LYEdit.c 1.2 644)) + (src/LYCurses.c (Lynx/d/51_LYCurses.c 1.1.2.6 644)) + (src/LYClean.c (Lynx/e/0_LYClean.c 1.2 644)) + (src/LYBookmark.c (Lynx/e/1_LYBookmark 1.1.1.3 644)) + (src/HTML.c (Lynx/e/2_HTML.c 1.1.2.4 644)) + (src/HTInit.c (Lynx/e/3_HTInit.c 1.2 644)) + (src/HTAlert.c (Lynx/e/4_HTAlert.c 1.2 644)) + (src/GridText.c (Lynx/e/5_GridText.c 1.1.1.3 644)) + (src/descrip.mms (Lynx/e/6_descrip.mm 1.1 644)) + (samples/jumpsVMS.html (Lynx/e/7_jumpsVMS.h 1.1 644)) + (samples/jumpsUnix.html (Lynx/e/8_jumpsUnix. 1.1 644)) + (samples/mime.types (Lynx/e/9_mime.types 1.1 644)) + (samples/lynx.com (Lynx/e/10_lynx.com 1.1 644)) + (samples/mailcap (Lynx/e/11_mailcap 1.1 644)) + (samples/lynx.cfg (Lynx/e/12_lynx.cfg 1.2.1.4 644)) + (lynx_help/lynx_url_support.html (Lynx/e/13_lynx_url_s 1.1 644)) + (lynx_help/Lynx_users_guide.html (Lynx/e/14_Lynx_users 1.2.1.1 644)) + (lynx_help/keystroke_commands/cookie_help.html (Lynx/e/15_cookie_hel 1.1 644)) + (lynx_help/keystroke_commands/visited_help.html (Lynx/e/16_visited_he 1.1 644)) + (lynx_help/keystroke_commands/edit_help.html (Lynx/e/17_edit_help. 1.1 644)) + (lynx_help/keystroke_commands/dired_help.html (Lynx/e/18_dired_help 1.1 644)) + (lynx_help/keystroke_commands/xterm_help.html (Lynx/e/19_xterm_help 1.1 644)) + (lynx_help/keystroke_commands/scrolling_help.html (Lynx/e/20_scrolling_ 1.1 644)) + (lynx_help/keystroke_commands/print_help.html (Lynx/e/21_print_help 1.1 644)) + (lynx_help/keystroke_commands/other_help.html (Lynx/e/22_other_help 1.1 644)) + (lynx_help/keystroke_commands/option_help.html (Lynx/e/23_option_hel 1.2 644)) + (lynx_help/keystroke_commands/movement_help.html (Lynx/e/24_movement_h 1.1 644)) + (lynx_help/keystroke_commands/history_help.html (Lynx/e/25_history_he 1.1 644)) + (lynx_help/keystroke_commands/gopher_types_help.html (Lynx/e/26_gopher_typ 1.1 644)) + (lynx_help/keystroke_commands/bookmark_help.html (Lynx/e/27_bookmark_h 1.1 644)) + (lynx_help/keystroke_commands/keystroke_help.html (Lynx/e/28_keystroke_ 1.1 644)) + (lynx_help/lynx_help_main.html (Lynx/e/29_lynx_help_ 1.2 644)) + (lynx.man (Lynx/e/30_lynx.man 1.3 644)) + (lynx.hlp (Lynx/e/31_lynx.hlp 1.3 644)) + (lynx.cfg (Lynx/e/32_lynx.cfg 1.2.1.5 644)) + (fixed512.com (Lynx/e/33_fixed512.c 1.1 644)) + (docs/RFC-MAILCAP.txt (Lynx/e/34_RFC-MAILCA 1.1 644)) + (docs/README.txt (Lynx/e/35_README.txt 1.1 644)) + (docs/README.html (Lynx/e/36_README.htm 1.1 644)) + (descrip.mms (Lynx/e/37_descrip.mm 1.1 644)) + (build.com (Lynx/e/38_build.com 1.1 644)) + (build-slang.com (Lynx/e/39_build-slan 1.1 644)) + (about_lynx/COPYHEADER (Lynx/e/40_COPYHEADER 1.1 644)) + (about_lynx/COPYING (Lynx/e/41_COPYING 1.1 644)) + (about_lynx/about_lynx-dev.html (Lynx/e/42_about_lynx 1.1 644)) + (about_lynx/about_lynx.html (Lynx/e/43_about_lynx 1.1 644)) + (WWW/Makefile (Lynx/e/44_Makefile 1.1 644)) + (WWW/BUILD (Lynx/e/45_BUILD 1.1 644)) + (WWW/Copyright.txt (Lynx/e/46_Copyright. 1.1 644)) + (WWW/README.txt (Lynx/e/47_README.txt 1.1 644)) + (WWW/Library/umaxv-m88k/Makefile (Lynx/e/48_Makefile 1.1 644)) + (WWW/Library/clix/Makefile (Lynx/e/49_Makefile 1.1 644)) + (WWW/Library/isc/Makefile (Lynx/e/50_Makefile 1.1 644)) + (WWW/Library/ptx/Makefile (Lynx/e/51_Makefile 1.1 644)) + (WWW/Library/netbsd/Makefile (Lynx/f/0_Makefile 1.1 644)) + (WWW/Library/unix_x/Makefile (Lynx/f/1_Makefile 1.1 644)) + (WWW/Library/convex/Makefile (Lynx/f/2_Makefile 1.1 644)) + (WWW/Library/mips/Makefile (Lynx/f/3_Makefile 1.1 644)) + (WWW/Library/sco/Makefile (Lynx/f/4_Makefile 1.1 644)) + (WWW/Library/svr4/Makefile (Lynx/f/5_Makefile 1.1 644)) + (WWW/Library/solaris2/Makefile (Lynx/f/6_Makefile 1.1 644)) + (WWW/Library/osf/Makefile (Lynx/f/7_Makefile 1.1 644)) + (WWW/Library/vax_ultrix/Makefile (Lynx/f/8_Makefile 1.1 644)) + (WWW/Library/unix/Makefile (Lynx/f/9_Makefile 1.2 644)) + (WWW/Library/freebsd/Makefile (Lynx/f/10_Makefile 1.1 644)) + (WWW/Library/sun4/Makefile (Lynx/f/11_Makefile 1.1 644)) + (WWW/Library/sun3/Makefile (Lynx/f/12_Makefile 1.1 644)) + (WWW/Library/snake/Makefile (Lynx/f/13_Makefile 1.1 644)) + (WWW/Library/sgi/Makefile (Lynx/f/14_Makefile 1.1 644)) + (WWW/Library/rs6000/Makefile (Lynx/f/15_Makefile 1.1 644)) + (WWW/Library/next/Makefile (Lynx/f/16_Makefile 1.1 644)) + (WWW/Library/duns/Makefile (Lynx/f/17_Makefile 1.1 644)) + (WWW/Library/decstation/Makefile (Lynx/f/18_Makefile 1.1 644)) + (WWW/Library/apollo_m68k/Makefile (Lynx/f/19_Makefile 1.1 644)) + (WWW/Library/vms/COPYING.LIB (Lynx/f/20_COPYING.LI 1.1 644)) + (WWW/Library/vms/libmake.com (Lynx/f/21_libmake.co 1.1 644)) + (WWW/Library/vms/descrip.mms (Lynx/f/22_descrip.mm 1.1 644)) + (WWW/Library/Implementation/HTFinger.h (Lynx/f/23_HTFinger.h 1.1 644)) + (WWW/Library/Implementation/HTFinger.c (Lynx/f/24_HTFinger.c 1.1 644)) + (WWW/Library/Implementation/LYexit.h (Lynx/f/25_LYexit.h 1.1.1.2 644)) + (WWW/Library/Implementation/HTVMS_WaisUI.h (Lynx/f/26_HTVMS_Wais 1.1 644)) + (WWW/Library/Implementation/HTVMS_WaisUI.c (Lynx/f/27_HTVMS_Wais 1.1 644)) + (WWW/Library/Implementation/HTVMS_WaisProt.h (Lynx/f/28_HTVMS_Wais 1.1 644)) + (WWW/Library/Implementation/LYLeaks.h (Lynx/f/29_LYLeaks.h 1.1 644)) + (WWW/Library/Implementation/HTCJK.h (Lynx/f/30_HTCJK.h 1.2 644)) + (WWW/Library/Implementation/BSDI_Makefile (Lynx/f/31_BSDI_Makef 1.2 644)) + (WWW/Library/Implementation/HTVMS_WaisProt.c (Lynx/f/32_HTVMS_Wais 1.1 644)) + (WWW/Library/Implementation/ufc-crypt.h (Lynx/f/33_ufc-crypt. 1.1 644)) + (WWW/Library/Implementation/patchlevel.h (Lynx/f/34_patchlevel 1.1 644)) + (WWW/Library/Implementation/getpass.c (Lynx/f/35_getpass.c 1.1 644)) + (WWW/Library/Implementation/getline.c (Lynx/f/36_getline.c 1.1 644)) + (WWW/Library/Implementation/crypt_util.c (Lynx/f/37_crypt_util 1.1 644)) + (WWW/Library/Implementation/crypt.c (Lynx/f/38_crypt.c 1.1 644)) + (WWW/Library/Implementation/HTVMSUtils.h (Lynx/f/39_HTVMSUtils 1.1 644)) + (WWW/Library/Implementation/Makefile (Lynx/f/40_Makefile 1.1 644)) + (WWW/Library/Implementation/CommonMakefile (Lynx/f/41_CommonMake 1.3 644)) + (WWW/Library/Implementation/Version.make (Lynx/f/42_Version.ma 1.1 644)) + (WWW/Library/Implementation/HTUU.h (Lynx/f/43_HTUU.h 1.1 644)) + (WWW/Library/Implementation/HTLex.h (Lynx/f/44_HTLex.h 1.1 644)) + (WWW/Library/Implementation/HTAssoc.h (Lynx/f/45_HTAssoc.h 1.1 644)) + (WWW/Library/Implementation/HTAAProt.h (Lynx/f/46_HTAAProt.h 1.1 644)) + (WWW/Library/Implementation/HTAuth.h (Lynx/f/47_HTAuth.h 1.1 644)) + (WWW/Library/Implementation/HTACL.h (Lynx/f/48_HTACL.h 1.1 644)) + (WWW/Library/Implementation/HTGroup.h (Lynx/f/49_HTGroup.h 1.1 644)) + (WWW/Library/Implementation/HTPasswd.h (Lynx/f/50_HTPasswd.h 1.1 644)) + (WWW/Library/Implementation/HTAAFile.h (Lynx/f/51_HTAAFile.h 1.1 644)) + (WWW/Library/Implementation/HTAABrow.h (Lynx/g/0_HTAABrow.h 1.1 644)) + (WWW/Library/Implementation/HTAAServ.h (Lynx/g/1_HTAAServ.h 1.1 644)) + (WWW/Library/Implementation/HTAAUtil.h (Lynx/g/2_HTAAUtil.h 1.1 644)) + (WWW/Library/Implementation/HTWSRC.h (Lynx/g/3_HTWSRC.h 1.1 644)) + (WWW/Library/Implementation/HTWAIS.h (Lynx/g/4_HTWAIS.h 1.1 644)) + (WWW/Library/Implementation/HTTelnet.h (Lynx/g/5_HTTelnet.h 1.1 644)) + (WWW/Library/Implementation/HText.h (Lynx/g/6_HText.h 1.1 644)) + (WWW/Library/Implementation/HTUtils.h (Lynx/g/7_HTUtils.h 1.5 644)) + (WWW/Library/Implementation/HTGopher.h (Lynx/g/8_HTGopher.h 1.1 644)) + (WWW/Library/Implementation/HTNews.h (Lynx/g/9_HTNews.h 1.1 644)) + (WWW/Library/Implementation/HTHistory.h (Lynx/g/10_HTHistory. 1.1 644)) + (WWW/Library/Implementation/HTMIME.h (Lynx/g/11_HTMIME.h 1.1 644)) + (WWW/Library/Implementation/HTInit.h (Lynx/g/12_HTInit.h 1.1 644)) + (WWW/Library/Implementation/HTFormat.h (Lynx/g/13_HTFormat.h 1.1 644)) + (WWW/Library/Implementation/HTRules.h (Lynx/g/14_HTRules.h 1.1 644)) + (WWW/Library/Implementation/HTAlert.h (Lynx/g/15_HTAlert.h 1.1 644)) + (WWW/Library/Implementation/HTString.h (Lynx/g/16_HTString.h 1.1 644)) + (WWW/Library/Implementation/HTList.h (Lynx/g/17_HTList.h 1.1 644)) + (WWW/Library/Implementation/HTStyle.h (Lynx/g/18_HTStyle.h 1.1 644)) + (WWW/Library/Implementation/HTAnchor.h (Lynx/g/19_HTAnchor.h 1.2 644)) + (WWW/Library/Implementation/HTAtom.h (Lynx/g/20_HTAtom.h 1.1 644)) + (WWW/Library/Implementation/HTStream.h (Lynx/g/21_HTStream.h 1.1 644)) + (WWW/Library/Implementation/HTMLGen.h (Lynx/g/22_HTMLGen.h 1.1 644)) + (WWW/Library/Implementation/HTFWriter.h (Lynx/g/23_HTFWriter. 1.1 644)) + (WWW/Library/Implementation/HTWriter.h (Lynx/g/24_HTWriter.h 1.1 644)) + (WWW/Library/Implementation/HTPlain.h (Lynx/g/25_HTPlain.h 1.1 644)) + (WWW/Library/Implementation/HTChunk.h (Lynx/g/26_HTChunk.h 1.1 644)) + (WWW/Library/Implementation/HTMLDTD.h (Lynx/g/27_HTMLDTD.h 1.2 644)) + (WWW/Library/Implementation/HTML.h (Lynx/g/28_HTML.h 1.2 644)) + (WWW/Library/Implementation/SGML.h (Lynx/g/29_SGML.h 1.2 644)) + (WWW/Library/Implementation/HTTCP.h (Lynx/g/30_HTTCP.h 1.3 644)) + (WWW/Library/Implementation/HTFTP.h (Lynx/g/31_HTFTP.h 1.1 644)) + (WWW/Library/Implementation/HTBTree.h (Lynx/g/32_HTBTree.h 1.1 644)) + (WWW/Library/Implementation/HTFile.h (Lynx/g/33_HTFile.h 1.2 644)) + (WWW/Library/Implementation/HTTP.h (Lynx/g/34_HTTP.h 1.1 644)) + (WWW/Library/Implementation/HTAccess.h (Lynx/g/35_HTAccess.h 1.3 644)) + (WWW/Library/Implementation/HTParse.h (Lynx/g/36_HTParse.h 1.1 644)) + (WWW/Library/Implementation/HTUU.c (Lynx/g/37_HTUU.c 1.2 644)) + (WWW/Library/Implementation/HTLex.c (Lynx/g/38_HTLex.c 1.1 644)) + (WWW/Library/Implementation/HTAssoc.c (Lynx/g/39_HTAssoc.c 1.1 644)) + (WWW/Library/Implementation/HTAAProt.c (Lynx/g/40_HTAAProt.c 1.2 644)) + (WWW/Library/Implementation/HTACL.c (Lynx/g/41_HTACL.c 1.1 644)) + (WWW/Library/Implementation/HTGroup.c (Lynx/g/42_HTGroup.c 1.1 644)) + (WWW/Library/Implementation/HTPasswd.c (Lynx/g/43_HTPasswd.c 1.1 644)) + (WWW/Library/Implementation/HTAAFile.c (Lynx/g/44_HTAAFile.c 1.1 644)) + (WWW/Library/Implementation/HTAABrow.c (Lynx/g/45_HTAABrow.c 1.1 644)) + (WWW/Library/Implementation/HTAAServ.c (Lynx/g/46_HTAAServ.c 1.1 644)) + (WWW/Library/Implementation/HTAAUtil.c (Lynx/g/47_HTAAUtil.c 1.1 644)) + (WWW/Library/Implementation/HTGopher.c (Lynx/g/48_HTGopher.c 1.3 644)) + (WWW/Library/Implementation/HTHistory.c (Lynx/g/49_HTHistory. 1.1 644)) + (WWW/Library/Implementation/HTMIME.c (Lynx/g/50_HTMIME.c 1.2 644)) + (WWW/Library/Implementation/HTInit.c (Lynx/g/51_HTInit.c 1.1 644)) + (WWW/Library/Implementation/HTFormat.c (Lynx/h/0_HTFormat.c 1.1 644)) + (WWW/Library/Implementation/HTRules.c (Lynx/h/1_HTRules.c 1.1 644)) + (WWW/Library/Implementation/HTAlert.c (Lynx/h/2_HTAlert.c 1.1 644)) + (WWW/Library/Implementation/HTString.c (Lynx/h/3_HTString.c 1.1 644)) + (WWW/Library/Implementation/HTList.c (Lynx/h/4_HTList.c 1.1 644)) + (WWW/Library/Implementation/HTStyle.c (Lynx/h/5_HTStyle.c 1.3 644)) + (WWW/Library/Implementation/HTAnchor.c (Lynx/h/6_HTAnchor.c 1.1.1.2 644)) + (WWW/Library/Implementation/HTAtom.c (Lynx/h/7_HTAtom.c 1.1 644)) + (WWW/Library/Implementation/HTChunk.c (Lynx/h/8_HTChunk.c 1.1 644)) + (WWW/Library/Implementation/HTMLGen.c (Lynx/h/9_HTMLGen.c 1.2 644)) + (WWW/Library/Implementation/HTFWriter.c (Lynx/h/10_HTFWriter. 1.1 644)) + (WWW/Library/Implementation/HTPlain.c (Lynx/h/11_HTPlain.c 1.4 644)) + (WWW/Library/Implementation/SGML.c (Lynx/h/12_SGML.c 1.1.1.1.1.1.1.1 644)) + (WWW/Library/Implementation/HTTCP.c (Lynx/h/13_HTTCP.c 1.2.2.3 644)) + (WWW/Library/Implementation/HTFTP.c (Lynx/h/14_HTFTP.c 1.4 644)) + (WWW/Library/Implementation/HTBTree.c (Lynx/h/15_HTBTree.c 1.1 644)) + (WWW/Library/Implementation/HTTP.c (Lynx/h/16_HTTP.c 1.2 644)) + (WWW/Library/Implementation/HTAccess.c (Lynx/h/17_HTAccess.c 1.2 644)) + (WWW/Library/Implementation/HTParse.c (Lynx/h/18_HTParse.c 1.3 644)) + (WWW/Library/Implementation/tcp.h (Lynx/h/19_tcp.h 1.5 644)) + (WWW/Library/Implementation/HTWSRC.c (Lynx/h/20_HTWSRC.c 1.1 644)) + (WWW/Library/Implementation/HTWriter.c (Lynx/h/21_HTWriter.c 1.1 644)) + (WWW/Library/Implementation/HTWAIS.c (Lynx/h/22_HTWAIS.c 1.1 644)) + (WWW/Library/Implementation/HTVMSUtils.c (Lynx/h/23_HTVMSUtils 1.1 644)) + (WWW/Library/Implementation/HTTelnet.c (Lynx/h/24_HTTelnet.c 1.3 644)) + (WWW/Library/Implementation/HTNews.c (Lynx/h/25_HTNews.c 1.2 644)) + (WWW/Library/Implementation/HTMLDTD.c (Lynx/h/26_HTMLDTD.c 1.4 644)) + (WWW/Library/Implementation/HTFile.c (Lynx/h/27_HTFile.c 1.1.2.3 644)) + (WWW/Library/Implementation/HTAuth.c (Lynx/h/28_HTAuth.c 1.1 644)) + (VMSWAIS.announce (Lynx/h/29_VMSWAIS.an 1.1 644)) + (VMSPrint.com (Lynx/h/30_VMSPrint.c 1.1 644)) + (TCPWARE.announce (Lynx/h/31_TCPWARE.an 1.1 644)) + (SOCKETSHR.announce (Lynx/h/32_SOCKETSHR. 1.1 644)) + (RELEASE_STATEMENT (Lynx/h/33_RELEASE_ST 1.2 644)) + (README (Lynx/h/34_README 1.1 644)) + (PROBLEMS (Lynx/h/35_PROBLEMS 1.1 644)) + (Makefile (Lynx/h/36_Makefile 1.1.1.1.1.4 644)) + (LYMessages_en.h (Lynx/h/37_LYMessages 1.3 644)) + (INSTALLATION (Lynx/h/38_INSTALLATI 1.1 644)) + (IBMPC-charsets.announce (Lynx/h/39_IBMPC-char 1.1 644)) + (FM.announce (Lynx/h/40_FM.announc 1.1 644)) + (DESC (Lynx/h/41_DESC 1.1 644)) + (CRAWL.announce (Lynx/h/42_CRAWL.anno 1.1 644)) + (CMU.announce (Lynx/h/43_CMU.announ 1.1 644)) + (CHANGES2-5 (Lynx/h/44_CHANGES2-5 1.1 644)) + (CHANGES2-4 (Lynx/h/45_CHANGES2-4 1.1 644)) + (CHANGES2-3 (Lynx/h/46_CHANGES2-3 1.1 644)) + (CHANGES (Lynx/h/47_CHANGES 1.2 644)) + +;; Files added by populate at Mon, 24 Feb 1997 20:09:28 -0600: + + + + + (newfiles.chartrans (Lynx/b/0_newfiles.chartrans 1.4 644)) + (CHANGES.chartrans (Lynx/c/0_CHANGES.chartrans 1.9.1.5 644)) + (README.chartrans (Lynx/d/0_README.chartrans 1.4 644)) + (src/UCdomap.h (Lynx/e/0_UCdomap.h 1.2 644)) + (src/UCAux.c (Lynx/f/0_UCAux.c 1.3 644)) + (src/UCAuto.h (Lynx/g/0_UCAuto.h 1.1 644)) + (src/UCAuto.c (Lynx/h/0_UCAuto.c 1.1 644)) + (src/chrtrans/cp1250_uni.tbl (Lynx/h/48_cp1250_uni 1.1 644)) + (src/chrtrans/mnemonic_suni.tbl (Lynx/h/49_mnemonic_s 1.1 644)) + (src/chrtrans/mnem_suni.tbl (Lynx/h/50_mnem_suni. 1.1 644)) + (src/chrtrans/cp1252_uni.tbl (Lynx/h/51_cp1252_uni 1.1 644)) + (src/chrtrans/rfc_suni.tbl (Lynx/i/0_rfc_suni.tbl 1.2 644)) + (src/chrtrans/makeuctb.c (Lynx/i/1_makeuctb.c 1.7 644)) + (src/chrtrans/UCkd.h (Lynx/i/2_UCkd.h 1.1 644)) + (src/chrtrans/Makefile (Lynx/i/3_Makefile 1.6 644)) + (src/chrtrans/README.tables (Lynx/i/4_README.tab 1.1 644)) + (src/chrtrans/README.format (Lynx/i/5_README.for 1.2 644)) + (src/chrtrans/cp852_uni.tbl (Lynx/i/6_cp852_uni. 1.2 644)) + (src/chrtrans/utf8_uni.tbl (Lynx/i/7_utf8_uni.t 1.1 644)) + (src/chrtrans/iso05_uni.tbl (Lynx/i/8_iso05_uni. 1.2 644)) + (src/chrtrans/cp437_uni.tbl (Lynx/i/9_cp437_uni. 1.2 644)) + (src/chrtrans/iso10_uni.tbl (Lynx/i/10_iso10_uni. 1.2 644)) + (src/chrtrans/iso09_uni.tbl (Lynx/i/11_iso09_uni. 1.2 644)) + (src/chrtrans/iso08_uni.tbl (Lynx/i/12_iso08_uni. 1.1 644)) + (src/chrtrans/iso07_uni.tbl (Lynx/i/13_iso07_uni. 1.2 644)) + (src/chrtrans/iso06_uni.tbl (Lynx/i/14_iso06_uni. 1.1 644)) + (src/chrtrans/iso04_uni.tbl (Lynx/i/15_iso04_uni. 1.2 644)) + (src/chrtrans/iso03_uni.tbl (Lynx/i/16_iso03_uni. 1.2 644)) + (src/chrtrans/iso02_uni.tbl (Lynx/i/17_iso02_uni. 1.3 644)) + (src/chrtrans/iso01_uni.tbl (Lynx/i/18_iso01_uni. 1.2 644)) + (src/chrtrans/cp850_uni.tbl (Lynx/i/19_cp850_uni. 1.2 644)) + (src/UCdomap.c (Lynx/i/20_UCdomap.c 1.4 644)) + (WWW/Library/Implementation/UCDefs.h (Lynx/i/21_UCDefs.h 1.1 644)) + (WWW/Library/Implementation/UCMap.h (Lynx/i/22_UCMap.h 1.2 644)) + (WWW/Library/Implementation/UCAux.h (Lynx/i/23_UCAux.h 1.1 644)) + + (WWW/Library/djgpp/makefile (Lynx/0_makefile 1.4 644)) + (src/makefile.dos (Lynx/1_makefile.d 1.3 644)) + (README.win-386 (Lynx/2_386-WIN.TX 1.2 644)) +;; Files added by populate at Mon, 03 Mar 1997 04:38:33 -0600: + + (src/chrtrans/MAKEW32.BAT (Lynx/3_MAKEW32.BA 1.2 644)) + (src/chrtrans/MAKEFILE.W32 (Lynx/4_MAKEFILE.W 1.1 644)) + (MAKEFILE.W32 (Lynx/5_MAKEFILE.W 1.1 644)) + +;; Files added by populate at Mon, 03 Mar 1997 06:05:56 -0600: + + (CHANGES.new (Lynx/6_CHANGES.ne 1.22 644)) + +;; Files added by populate at Tue, 11 Mar 1997 04:22:39 -0600: + + (newfiles.configure (Lynx/7_newfiles.c 1.4 644)) + (makefile.in (Lynx/8_makefile.i 1.1.1.4 644)) + (install.sh (Lynx/9_install.sh 1.1 755)) + (configure.in (Lynx/10_configure. 1.5 644)) + (config.hin (Lynx/11_config.hin 1.5 644)) + (aclocal.m4 (Lynx/12_aclocal.m4 1.5 644)) + (configure (Lynx/13_configure 1.5 755)) + (README.configure (Lynx/14_README.con 1.3 644)) + (CHANGES.configure (Lynx/15_CHANGES.co 1.1.1.3 644)) + +;; Files added by populate at Wed, 09 Apr 1997 06:18:01 -0600: + + (WWW/Library/djgpp/CommonMakefile (Lynx/26_CommonMake 1.1 644)) + (WWW/Library/Implementation/HTDOS.h (Lynx/27_HTDOS.H 1.1 644)) + (WWW/Library/Implementation/HTDOS.c (Lynx/28_HTDOS.C 1.1 644)) + + + (WWW/Library/unix/makefile.in (Lynx/16_makefile.i 1.3 644)) + (src/makefile.in (Lynx/17_makefile.i 1.3 644)) + (src/chrtrans/makefile.in (Lynx/18_makefile.i 1.2 644)) + + (src/chrtrans/koi8r_uni.tbl (Lynx/24_koi8r_uni. 1.1 644)) + (src/chrtrans/def7_uni.tbl (Lynx/25_def7_uni.t 1.1 644)) +;; Files added by populate at Tue, 15 Apr 1997 19:38:35 -0600: + + (config.sub (Lynx/30_config.sub 1.1 755)) + (config.guess (Lynx/31_config.gue 1.1 755)) +) +(Merge-Parents) +(New-Merge-Parents) diff --git a/MAKEFILE.W32 b/MAKEFILE.W32 new file mode 100644 index 00000000..f3883538 --- /dev/null +++ b/MAKEFILE.W32 @@ -0,0 +1,729 @@ +# +# Borland C++ IDE generated makefile +# +.AUTODEPEND + + +# +# Borland C++ tools +# +IMPLIB = Implib +BCC32 = Bcc32 +BccW32.cfg +TLINK32 = TLink32 +TLIB = TLib +BRC32 = Brc32 +TASM32 = Tasm32 +# +# IDE macros +# + + +# +# Options +# +IDE_LFLAGS32 = -LD:\BC45\LIB +LLATC32_lynxdexe = -LCURSES;D:\BC45\LIB -Tpe -ap -c -wdpl -wdup +RLATC32_lynxdexe = -w32 -k +BLATC32_lynxdexe = +CNIEAT_lynxdexe = -I.\;CURSES;SRC;WWW\LIBRARY\IMPLEMENTATION;D:\BC45\INCLUDE;SRC\CHRTRANS -DNO_UNISTD_H;_WINDOWS;NCURSES;FANCY_CURSES;XMOSAIC_HACK;ACCESS_AUTH;NO_UTMP;NO_CUSERID;NO_TTYTYPE;NOSIGHUP;DOSPATH;NOUSERS;EXP_CHARTRANS +LNIEAT_lynxdexe = -x +LEAT_lynxdexe = $(LLATC32_lynxdexe) +REAT_lynxdexe = $(RLATC32_lynxdexe) +BEAT_lynxdexe = $(BLATC32_lynxdexe) +CLATW16_cursesbpdcursesdlib = +LLATW16_cursesbpdcursesdlib = +RLATW16_cursesbpdcursesdlib = +BLATW16_cursesbpdcursesdlib = +CEAT_cursesbpdcursesdlib = $(CEAT_lynxdexe) $(CLATW16_cursesbpdcursesdlib) +CNIEAT_cursesbpdcursesdlib = -I.\;CURSES;SRC;WWW\LIBRARY\IMPLEMENTATION;D:\BC45\INCLUDE;SRC\CHRTRANS -DNO_UNISTD_H;_WINDOWS;NCURSES;FANCY_CURSES;XMOSAIC_HACK;ACCESS_AUTH;NO_UTMP;NO_CUSERID;NO_TTYTYPE;NOSIGHUP;DOSPATH;NOUSERS;EXP_CHARTRANS +LNIEAT_cursesbpdcursesdlib = -x +LEAT_cursesbpdcursesdlib = $(LEAT_lynxdexe) $(LLATW16_cursesbpdcursesdlib) +REAT_cursesbpdcursesdlib = $(REAT_lynxdexe) $(RLATW16_cursesbpdcursesdlib) +BEAT_cursesbpdcursesdlib = $(BEAT_lynxdexe) $(BLATW16_cursesbpdcursesdlib) + +# +# Dependency List +# +Dep_lynx = \ + lynx.exe + +lynx : BccW32.cfg $(Dep_lynx) + echo MakeNode + +Dep_lynxdexe = \ + OBJ\ucauto.obj\ + OBJ\ucaux.obj\ + OBJ\ucdomap.obj\ + OBJ\htalert.obj\ + OBJ\htfwrite.obj\ + OBJ\htinit.obj\ + OBJ\httcp.obj\ + OBJ\crypt.obj\ + OBJ\crypt_ut.obj\ + OBJ\getline.obj\ + OBJ\htaabrow.obj\ + OBJ\htaafile.obj\ + OBJ\htaaprot.obj\ + OBJ\htaaserv.obj\ + OBJ\htaautil.obj\ + OBJ\htaccess.obj\ + OBJ\htacl.obj\ + OBJ\htanchor.obj\ + OBJ\htassoc.obj\ + OBJ\htatom.obj\ + OBJ\htauth.obj\ + OBJ\htbtree.obj\ + OBJ\htchunk.obj\ + OBJ\htfile.obj\ + OBJ\htfinger.obj\ + OBJ\htformat.obj\ + OBJ\htftp.obj\ + OBJ\htgopher.obj\ + OBJ\htgroup.obj\ + OBJ\hthistor.obj\ + OBJ\htlex.obj\ + OBJ\htlist.obj\ + OBJ\htmime.obj\ + OBJ\htmldtd.obj\ + OBJ\htmlgen.obj\ + OBJ\htnews.obj\ + OBJ\htparse.obj\ + OBJ\htpasswd.obj\ + OBJ\htplain.obj\ + OBJ\htrules.obj\ + OBJ\htstring.obj\ + OBJ\htstyle.obj\ + OBJ\httelnet.obj\ + OBJ\http.obj\ + OBJ\htuu.obj\ + OBJ\htwriter.obj\ + OBJ\htwsrc.obj\ + OBJ\sgml.obj\ + OBJ\defaults.obj\ + OBJ\gridtext.obj\ + OBJ\html.obj\ + OBJ\lybookma.obj\ + OBJ\lycgi.obj\ + OBJ\lycharse.obj\ + OBJ\lycharut.obj\ + OBJ\lyclean.obj\ + OBJ\lycookie.obj\ + OBJ\lycurses.obj\ + OBJ\lydownlo.obj\ + OBJ\lyedit.obj\ + OBJ\lyeditma.obj\ + OBJ\lyexit.obj\ + OBJ\lyforms.obj\ + OBJ\lygetfil.obj\ + OBJ\lyhistor.obj\ + OBJ\lyjump.obj\ + OBJ\lykeymap.obj\ + OBJ\lyleaks.obj\ + OBJ\lylist.obj\ + OBJ\lylocal.obj\ + OBJ\lymail.obj\ + OBJ\lymain.obj\ + OBJ\lymainlo.obj\ + OBJ\lymap.obj\ + OBJ\lynews.obj\ + OBJ\lyoption.obj\ + OBJ\lyprint.obj\ + OBJ\lyrcfile.obj\ + OBJ\lyreadcf.obj\ + OBJ\lysearch.obj\ + OBJ\lyshowin.obj\ + OBJ\lystring.obj\ + OBJ\lytraver.obj\ + OBJ\lyupload.obj\ + OBJ\lyutils.obj\ + curses\pdcurses.lib + +lynx.exe : $(Dep_lynxdexe) + $(TLINK32) @&&| + /v $(IDE_LFLAGS32) $(LEAT_lynxdexe) $(LNIEAT_lynxdexe) + +D:\BC45\LIB\c0x32.obj+ +OBJ\ucauto.obj+ +OBJ\ucaux.obj+ +OBJ\ucdomap.obj+ +OBJ\htalert.obj+ +OBJ\htfwrite.obj+ +OBJ\htinit.obj+ +OBJ\httcp.obj+ +OBJ\crypt.obj+ +OBJ\crypt_ut.obj+ +OBJ\getline.obj+ +OBJ\htaabrow.obj+ +OBJ\htaafile.obj+ +OBJ\htaaprot.obj+ +OBJ\htaaserv.obj+ +OBJ\htaautil.obj+ +OBJ\htaccess.obj+ +OBJ\htacl.obj+ +OBJ\htanchor.obj+ +OBJ\htassoc.obj+ +OBJ\htatom.obj+ +OBJ\htauth.obj+ +OBJ\htbtree.obj+ +OBJ\htchunk.obj+ +OBJ\htfile.obj+ +OBJ\htfinger.obj+ +OBJ\htformat.obj+ +OBJ\htftp.obj+ +OBJ\htgopher.obj+ +OBJ\htgroup.obj+ +OBJ\hthistor.obj+ +OBJ\htlex.obj+ +OBJ\htlist.obj+ +OBJ\htmime.obj+ +OBJ\htmldtd.obj+ +OBJ\htmlgen.obj+ +OBJ\htnews.obj+ +OBJ\htparse.obj+ +OBJ\htpasswd.obj+ +OBJ\htplain.obj+ +OBJ\htrules.obj+ +OBJ\htstring.obj+ +OBJ\htstyle.obj+ +OBJ\httelnet.obj+ +OBJ\http.obj+ +OBJ\htuu.obj+ +OBJ\htwriter.obj+ +OBJ\htwsrc.obj+ +OBJ\sgml.obj+ +OBJ\defaults.obj+ +OBJ\gridtext.obj+ +OBJ\html.obj+ +OBJ\lybookma.obj+ +OBJ\lycgi.obj+ +OBJ\lycharse.obj+ +OBJ\lycharut.obj+ +OBJ\lyclean.obj+ +OBJ\lycookie.obj+ +OBJ\lycurses.obj+ +OBJ\lydownlo.obj+ +OBJ\lyedit.obj+ +OBJ\lyeditma.obj+ +OBJ\lyexit.obj+ +OBJ\lyforms.obj+ +OBJ\lygetfil.obj+ +OBJ\lyhistor.obj+ +OBJ\lyjump.obj+ +OBJ\lykeymap.obj+ +OBJ\lyleaks.obj+ +OBJ\lylist.obj+ +OBJ\lylocal.obj+ +OBJ\lymail.obj+ +OBJ\lymain.obj+ +OBJ\lymainlo.obj+ +OBJ\lymap.obj+ +OBJ\lynews.obj+ +OBJ\lyoption.obj+ +OBJ\lyprint.obj+ +OBJ\lyrcfile.obj+ +OBJ\lyreadcf.obj+ +OBJ\lysearch.obj+ +OBJ\lyshowin.obj+ +OBJ\lystring.obj+ +OBJ\lytraver.obj+ +OBJ\lyupload.obj+ +OBJ\lyutils.obj +$<,$* +curses\pdcurses.lib+ +D:\BC45\LIB\bidsf.lib+ +D:\BC45\LIB\import32.lib+ +D:\BC45\LIB\cw32.lib + +| + +OBJ\ucauto.obj : src\ucauto.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\ucauto.c +| + +OBJ\ucaux.obj : src\ucaux.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\ucaux.c +| + +OBJ\ucdomap.obj : src\ucdomap.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\ucdomap.c +| + +OBJ\htalert.obj : src\htalert.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\htalert.c +| + +OBJ\htfwrite.obj : src\htfwrite.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\htfwrite.c +| + +OBJ\htinit.obj : src\htinit.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\htinit.c +| + +OBJ\httcp.obj : www\library\implemen\httcp.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\httcp.c +| + +OBJ\crypt.obj : www\library\implemen\crypt.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\crypt.c +| + +OBJ\crypt_ut.obj : www\library\implemen\crypt_ut.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\crypt_ut.c +| + +OBJ\getline.obj : www\library\implemen\getline.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\getline.c +| + +OBJ\htaabrow.obj : www\library\implemen\htaabrow.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htaabrow.c +| + +OBJ\htaafile.obj : www\library\implemen\htaafile.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htaafile.c +| + +OBJ\htaaprot.obj : www\library\implemen\htaaprot.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htaaprot.c +| + +OBJ\htaaserv.obj : www\library\implemen\htaaserv.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htaaserv.c +| + +OBJ\htaautil.obj : www\library\implemen\htaautil.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htaautil.c +| + +OBJ\htaccess.obj : www\library\implemen\htaccess.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htaccess.c +| + +OBJ\htacl.obj : www\library\implemen\htacl.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htacl.c +| + +OBJ\htanchor.obj : www\library\implemen\htanchor.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htanchor.c +| + +OBJ\htassoc.obj : www\library\implemen\htassoc.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htassoc.c +| + +OBJ\htatom.obj : www\library\implemen\htatom.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htatom.c +| + +OBJ\htauth.obj : www\library\implemen\htauth.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htauth.c +| + +OBJ\htbtree.obj : www\library\implemen\htbtree.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htbtree.c +| + +OBJ\htchunk.obj : www\library\implemen\htchunk.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htchunk.c +| + +OBJ\htfile.obj : www\library\implemen\htfile.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htfile.c +| + +OBJ\htfinger.obj : www\library\implemen\htfinger.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htfinger.c +| + +OBJ\htformat.obj : www\library\implemen\htformat.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htformat.c +| + +OBJ\htftp.obj : www\library\implemen\htftp.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htftp.c +| + +OBJ\htgopher.obj : www\library\implemen\htgopher.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htgopher.c +| + +OBJ\htgroup.obj : www\library\implemen\htgroup.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htgroup.c +| + +OBJ\hthistor.obj : www\library\implemen\hthistor.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\hthistor.c +| + +OBJ\htlex.obj : www\library\implemen\htlex.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htlex.c +| + +OBJ\htlist.obj : www\library\implemen\htlist.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htlist.c +| + +OBJ\htmime.obj : www\library\implemen\htmime.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htmime.c +| + +OBJ\htmldtd.obj : www\library\implemen\htmldtd.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htmldtd.c +| + +OBJ\htmlgen.obj : www\library\implemen\htmlgen.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htmlgen.c +| + +OBJ\htnews.obj : www\library\implemen\htnews.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htnews.c +| + +OBJ\htparse.obj : www\library\implemen\htparse.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htparse.c +| + +OBJ\htpasswd.obj : www\library\implemen\htpasswd.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htpasswd.c +| + +OBJ\htplain.obj : www\library\implemen\htplain.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htplain.c +| + +OBJ\htrules.obj : www\library\implemen\htrules.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htrules.c +| + +OBJ\htstring.obj : www\library\implemen\htstring.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htstring.c +| + +OBJ\htstyle.obj : www\library\implemen\htstyle.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htstyle.c +| + +OBJ\httelnet.obj : www\library\implemen\httelnet.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\httelnet.c +| + +OBJ\http.obj : www\library\implemen\http.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\http.c +| + +OBJ\htuu.obj : www\library\implemen\htuu.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htuu.c +| + +OBJ\htwriter.obj : www\library\implemen\htwriter.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htwriter.c +| + +OBJ\htwsrc.obj : www\library\implemen\htwsrc.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\htwsrc.c +| + +OBJ\sgml.obj : www\library\implemen\sgml.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ www\library\implemen\sgml.c +| + +OBJ\defaults.obj : src\defaults.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\defaults.c +| + +OBJ\gridtext.obj : src\gridtext.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\gridtext.c +| + +OBJ\html.obj : src\html.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\html.c +| + +OBJ\lybookma.obj : src\lybookma.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lybookma.c +| + +OBJ\lycgi.obj : src\lycgi.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lycgi.c +| + +OBJ\lycharse.obj : src\lycharse.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lycharse.c +| + +OBJ\lycharut.obj : src\lycharut.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lycharut.c +| + +OBJ\lyclean.obj : src\lyclean.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lyclean.c +| + +OBJ\lycookie.obj : src\lycookie.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lycookie.c +| + +OBJ\lycurses.obj : src\lycurses.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lycurses.c +| + +OBJ\lydownlo.obj : src\lydownlo.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lydownlo.c +| + +OBJ\lyedit.obj : src\lyedit.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lyedit.c +| + +OBJ\lyeditma.obj : src\lyeditma.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lyeditma.c +| + +OBJ\lyexit.obj : src\lyexit.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lyexit.c +| + +OBJ\lyforms.obj : src\lyforms.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lyforms.c +| + +OBJ\lygetfil.obj : src\lygetfil.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lygetfil.c +| + +OBJ\lyhistor.obj : src\lyhistor.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lyhistor.c +| + +OBJ\lyjump.obj : src\lyjump.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lyjump.c +| + +OBJ\lykeymap.obj : src\lykeymap.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lykeymap.c +| + +OBJ\lyleaks.obj : src\lyleaks.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lyleaks.c +| + +OBJ\lylist.obj : src\lylist.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lylist.c +| + +OBJ\lylocal.obj : src\lylocal.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lylocal.c +| + +OBJ\lymail.obj : src\lymail.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lymail.c +| + +OBJ\lymain.obj : src\lymain.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lymain.c +| + +OBJ\lymainlo.obj : src\lymainlo.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lymainlo.c +| + +OBJ\lymap.obj : src\lymap.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lymap.c +| + +OBJ\lynews.obj : src\lynews.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lynews.c +| + +OBJ\lyoption.obj : src\lyoption.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lyoption.c +| + +OBJ\lyprint.obj : src\lyprint.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lyprint.c +| + +OBJ\lyrcfile.obj : src\lyrcfile.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lyrcfile.c +| + +OBJ\lyreadcf.obj : src\lyreadcf.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lyreadcf.c +| + +OBJ\lysearch.obj : src\lysearch.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lysearch.c +| + +OBJ\lyshowin.obj : src\lyshowin.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lyshowin.c +| + +OBJ\lystring.obj : src\lystring.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lystring.c +| + +OBJ\lytraver.obj : src\lytraver.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lytraver.c +| + +OBJ\lyupload.obj : src\lyupload.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lyupload.c +| + +OBJ\lyutils.obj : src\lyutils.c + $(BCC32) -P- -c @&&| + $(CEAT_lynxdexe) $(CNIEAT_lynxdexe) -o$@ src\lyutils.c +| + +# Compiler configuration file +BccW32.cfg : + Copy &&| +-R +-v +-vi +-H +-H=lynx.csm +-w- +-A- +-wcpt +-wrpt +-wrng +-w-voi +-w-ret +-w-sus +-w-dup +-w-big +-w-ext +-w-zdi +-w-bei +-w-obi +-w-ofp +-w-eas +-w-hid +-w-ncf +-w-ibc +-w-dsz +-w-nst +-w-mpc +-w-mpd +-w-ntd +-w-nvf +-w-hch +-w-inl +-w-lin +-w-lvc +-w-pia +-w-def +-w-nod +-w-pro +-w-rvl +-w-ccc +-w-aus +-w-par +-w-rch +-w-eff +-w-ill +-w-ias +-w-msg +-WC +-Ot +-d- +-K +-a- +-w-stu +-wbbf +-w-dpu +-wcln +-wsig +-wucp +-g200 +-H- +-v- +| $@ + + diff --git a/Makefile b/Makefile index 79229408..618eeea2 100644 --- a/Makefile +++ b/Makefile @@ -173,7 +173,8 @@ DIRED_PERMIT = -DOK_PERMIT # If you are not, then you should edit the generic: entry below. # # If you need ncurses, the latest version can always be found -# in ftp://ftp.netcom.com/pub/zm/zmbenhal/ncurses/ +# in ftp://ftp.clark.net/pub/dickey/ncurses/ +# or ftp://ftp.netcom.com/pub/zm/zmbenhal/ncurses/ # (you may need -DNCURSESHEADER in addition to -DNCURSES for old # versions of ncurses; see below). # @@ -268,10 +269,10 @@ DIR_DEFS = $(DIRED_SUPPORT) $(DIRED_ARCHIVE) $(DIRED_TAR) $(DIRED_ZIP) $(DIRED_G #SITE_LIBS= # Your libraries here (remove the "#") # Set SITE_LYDEFS to one or more of the defines for the WWW Library: -SITE_LYDEFS = $(DIR_LYDEFS) # Your defines here +SITE_LYDEFS = $(DIR_LYDEFS) -DEXP_CHARTRANS # Your defines here # Set SITE_DEFS to one or more of the defines for lynx below: -SITE_DEFS = $(DIR_DEFS) # Your defines here +SITE_DEFS = $(DIR_DEFS) -DEXP_CHARTRANS # Your defines here # if you are compiling on a previously unsupported system, modify # this generic entry!! @@ -282,6 +283,7 @@ SITE_DEFS = $(DIR_DEFS) # Your defines here # -Dvfork=fork if you don't have vfork() # -DMMDF if you use MMDF instead of sendmail # -DFANCY_CURSES enables fancy curses (bold, underline, reverse) +# -DCOLOR_CURSES enables color in SVr4 curses & clones such as ncurses # -DNCURSES for ncurses support (also indicate the LIBS path) # -DNCURSESHEADER seek ncurses.h instead of ncurses/curses.h in LYCurses.h # -DNO_KEYPAD if you don't have keypad() and related defines @@ -299,6 +301,10 @@ SITE_DEFS = $(DIR_DEFS) # Your defines here # -DNOPORT if you must use PASV instead of PORT for FTP # -DNO_TTYTYPE if your system lacks a ttytype variable # -DNSL_FORK For fork-based name server lookups that can be 'z'apped. +# -DEXP_CHARTRANS enable chartrans support w/ new charsets, UTF8 mode etc. +# (needed in SITE_DEFS *and* SITE_LYDEFS !) +# -DEXP_CHARTRANS_AUTOSWITCH also let lynx switch term mode(Linux console only) +# -DSLANG_MBCS_HACK prevent cutoff lines when using UTF8 console (slang only) # # if you are linking to freeWAIS-0.202 or older, you should define this # in MCFLAGS (SITE_DEFS) @@ -371,7 +377,7 @@ convex-ncurses: cd WWW/Library/convex; $(MAKE) LYFLAGS="$(SITE_LYDEFS)" cd src; $(MAKE) all CC="cc" MCFLAGS="-O \ -I/usr/local/include \ - -DNCURSES -DFANCY_CURSES \ + -DNCURSES -DCOLOR_CURSES -DFANCY_CURSES \ -D__STDC__ \ -DNO_PUTENV -DNO_CBREAK -DUSE_DIRENT -DUNIX \ -DSTDC_HEADERS -I../$(WWWINC) $(SITE_DEFS)" \ @@ -409,7 +415,7 @@ freebsd: # FreeBSD doesn't have or need ranlib. (ignore the error message about that :) freebsd-ncurses: cd WWW/Library/freebsd; $(MAKE) LYFLAGS="$(SITE_LYDEFS)" - cd src; $(MAKE) all MCFLAGS="$(CFLAGS) -DFANCY_CURSES -DNCURSES \ + cd src; $(MAKE) all MCFLAGS="$(CFLAGS) -DFANCY_CURSES -DCOLOR_CURSES -DNCURSES \ -DNCURSESHEADER -DUNIX -DNO_TTYTYPE -DNO_CUSERID -DLOCALE \ -I../$(WWWINC) $(SITE_DEFS)" \ LIBS="-lncurses -lmytinfo \ @@ -439,7 +445,7 @@ netbsd: # NetBSD doesn't have or need ranlib. (ignore the error message about that :) netbsd-ncurses: cd WWW/Library/netbsd; $(MAKE) LYFLAGS="$(SITE_LYDEFS)" - cd src; $(MAKE) all CC="cc" MCFLAGS="-O -DFANCY_CURSES -DNCURSES \ + cd src; $(MAKE) all CC="cc" MCFLAGS="-O -DFANCY_CURSES -DCOLOR_CURSES -DNCURSES \ -DUNIX -DNO_CUSERID -I../$(WWWINC) $(SITE_DEFS) \ -I/usr/include/ncurses" \ LIBS="-lncurses -lcompat \ @@ -657,7 +663,7 @@ bsdi: bsdi-ncurses: cd WWW/Library/Implementation; $(MAKE) -f BSDI_Makefile CC="gcc" \ LYFLAGS="-DBSDI $(SITE_LYDEFS)" - cd src; $(MAKE) all CC="gcc" MCFLAGS="-O -DNO_CUSERID -DUNIX -DNCURSES \ + cd src; $(MAKE) all CC="gcc" MCFLAGS="-O -DNO_CUSERID -DUNIX -DCOLOR_CURSES -DNCURSES \ -DFANCY_CURSES -DBSDI -DSVR4 \ -I/usr/include/ncurses -I../$(WWWINC) $(SITE_DEFS)" \ LIBS="-lncurses \ @@ -681,7 +687,7 @@ bsdi-slang: # nothing and is only there to make Makefiles like this one happy) solaris2: cd WWW/Library/solaris2; $(MAKE) CC="gcc" LYFLAGS="$(SITE_LYDEFS)" - cd src; $(MAKE) all CC="gcc" MCFLAGS="-O -DFANCY_CURSES -DUNIX -DSVR4 \ + cd src; $(MAKE) all CC="gcc" MCFLAGS="-O -DCOLOR_CURSES -DFANCY_CURSES -DUNIX -DSVR4 \ -DSOLARIS2 -DCURS_PERFORMANCE -DUTMPX_FOR_UTMP -DUSE_DIRENT \ -DLOCALE -DHAVE_TERMIOS_H \ -I../$(WWWINC) $(SITE_DEFS)" \ @@ -694,7 +700,7 @@ solaris2: # Solaris2 doesn't have or need ranlib. (ignore the error message about that :) solaris2cc: cd WWW/Library/solaris2; $(MAKE) CC="cc" LYFLAGS="$(SITE_LYDEFS)" - cd src; $(MAKE) all CC="cc" MCFLAGS="-O -DFANCY_CURSES -DUNIX -DSVR4 \ + cd src; $(MAKE) all CC="cc" MCFLAGS="-O -DCOLOR_CURSES -DFANCY_CURSES -DUNIX -DSVR4 \ -DSOLARIS2 -DCURS_PERFORMANCE -DUTMPX_FOR_UTMP -DUSE_DIRENT \ -DLOCALE -DHAVE_TERMIOS_H \ -I../$(WWWINC) $(SITE_DEFS)" \ @@ -787,9 +793,9 @@ linux: linux-ncurses: cd WWW/Library/unix; $(MAKE) CC="gcc" LYFLAGS="-DLINUX $(SITE_LYDEFS)" cd src; $(MAKE) all CC="gcc" MCFLAGS="-O -DUNIX -DLINUX -DNCURSES \ - -DFANCY_CURSES -DNO_TTYTYPE \ + -DFANCY_CURSES -DCOLOR_CURSES -DNO_TTYTYPE \ -I/usr/include/ncurses -I../$(WWWINC) $(SITE_DEFS)" \ - LIBS="-lncurses \ + LIBS="-lncurses -lgpm \ $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ WWWLIB="../WWW/Library/unix/libwww.a" @@ -880,7 +886,7 @@ sun4: sun4-ncurses: cd WWW/Library/sun4; $(MAKE) CC="gcc" LYFLAGS="$(SITE_LYDEFS)" cd src; $(MAKE) all CC="gcc" \ - MCFLAGS="-O -DUNIX -DFANCY_CURSES -DNCURSES \ + MCFLAGS="-O -DUNIX -DFANCY_CURSES -DCOLOR_CURSES -DNCURSES \ -I/usr/local/include -I../$(WWWINC) -DSUN -DSUN4 \ -DLOCALE $(SITE_DEFS)" \ LIBS="-L/usr/local/lib -lncurses \ @@ -927,7 +933,7 @@ news-ncurses: @echo "You must first compile the WWW library in WWW/Library" cd WWW/Library/unix; $(MAKE) LYFLAGS="$(SITE_LYDEFS)" cd src; $(MAKE) all CC="gcc -O" MCFLAGS="-O -DUNIX \ - -DNO_CUSERID -DNCURSES -DFANCY_CURSES \ + -DNO_CUSERID -DNCURSES -DCOLOR_CURSES -DFANCY_CURSES \ -I../$(WWWINC) $(SITE_DEFS)" \ LIBS="-lncurses $(WAISLIB) $(SOCKSLIB)" \ WWWLIB="../WWW/Library/unix/libwww.a" @@ -955,7 +961,7 @@ next: next-ncurses: cd WWW/Library/next; $(MAKE) LYFLAGS="$(SITE_LYDEFS)" cd src; $(MAKE) all CC="cc" MCFLAGS="-O -DUNIX -DNEXT -DNO_UNISTD_H \ - -DNCURSES -DFANCY_CURSES \ + -DNCURSES -DCOLOR_CURSES -DFANCY_CURSES \ -DNO_CUSERID -DNO_GETCWD -DNO_PUTENV \ -I/usr/local/include -I../$(WWWINC) $(SITE_DEFS)" \ LIBS="-L/usr/local/lib -lncurses \ @@ -983,6 +989,16 @@ clean: cd src; $(MAKE) clean rm -f *.b src/lynx core Lynx.leaks +distclean: clean + -rm -f WWW/Library/*/*~ + -rm -f WWW/Library/*/*.bak + -rm -rf WWW/Library/*/obsolete + -rm -rf src/obsolete + -cd src; $(MAKE) clean + -cd src/chrtrans; $(MAKE) distclean + -rm -f Lynx.prj *~ *.bak *.sav .*_aux + rm lynx + tar: clean rm -f lynx $(MAKE) save diff --git a/README.chartrans b/README.chartrans new file mode 100644 index 00000000..1c1e9187 --- /dev/null +++ b/README.chartrans @@ -0,0 +1,191 @@ +Lynx CHARTRANS + + Features (in addition to those which Lynx already has): + +- Can (attempt to) translate from any document charset to any display + character set, *IF* the document charset is known by a translation + table (compiled in at installation). + + - Old method for specifying translations of Latin1 characters and + SGML entities still supported. (IBMPC-charsets.announce is still + relevant.) + + - New method to define character sets: used for input charset as well + as display character set, translation tables compiled in from + separate files (one per charset). + + - Unicode (UTF8) support: can (attempt to) decode and translate UTF8 to + display character set, or pass through UTF to display (if terminal + or console understands UTF8). [raw display of UTF only tested with Slang + so far, does not always position everything correctly on screen] + + - Support for CHARSET attribute on A tag [but not yet on LINK], as in + HTML i18n RFC 2070. A link can suggest the target's charset in this way. + + - EXPERIMENTAL, currently enabled only for Linux console: + can (attempt to) automatically switch terminal mode and load new + code pages on change of display character set. + + - some minor changes: sometimes invalid characters are displayed in a hex + notation Uxxxx (helps debugging, but I also regard it as at least not + worse than showing the wrong char without warning). KOI8 -> other cs + will just strip high bit from cyrillic chars (gives somewhat readable + ASCII, KOI was constructed that way...) + +Additions/changes to user interface: + + - many new Display Character Sets are available on O)ptions screen. + (also can now use arrow keys, HOME, END etc. for cycling through the list). + + - new command line flags: + -assume_charset=... assume this as charset for documents that don't + specify a charset parameter in HTTP headers + -assume_unknown_charset=... in case a charset parameter is not recognized + -assume_local_charset=... assume this as charset of local file: docs + + - The "Raw" toggle (from -raw flag, '@' key, or Options screen) + o should work as before for CJK charsets, + o otherwise toggles the assumption "Default remote charset is same + as Display Character Set" on or off. + (Try the "Transparent" Display Character Set for more "rawness".) + +Requirements: same as for Lynx in general :) + +The chartrans code is now merged with Wayne Buttle's changes for +32-bit MS Windows and DOS/DJGPP, with Thomas Dickey's and Jim Spath's +emerging auto-configure mechanism, and with BUGFIXES from Foteos +Macrides. See the accompanying file CHANGES.few for the current +status. + + +A WARNING BEFORE YOU PROCEDE: + +This is experimental. It works already nicely for me, but I have only +tested it on Linux, compiled with Slang. In some cases undisplayable bytes +may get sent to the terminal which are then interpreted as control chars. +Other usual warnings about alpha software apply... + + +HOW TO GET SOURCES: + +The location of files mentioned below is currently at + <URL: http://www.tezcat.com/~kweide/lynx-chartrans/> or +(preferred location:) + <URL: http://sol.slcc.edu/lynx/klaus/merged/all/>. +Check both locations to find the newest version. + +There are three alternatives: +( Replace the * in the followin filenames with the appropriate subversion ) + +(1.) + Provided as a full Lynx distribution (for now..) - in zip format. + This contains the complete Lynx source package. + + Just get lynx-2.7ac-*.zip. + +(2.) + Provided as add-on over the Lynx 2.7 distribution, i.e. all files that + are new or have changed - in zip format. + (a) Get the official Lynx 2.7 distribution - see list of download sites at + <URL: http://www.crl.com/~subir/lynx/sources.html>. + (b) Get add-to-offi-2.7ac-*.zip. + (c) Unpack the official 2.7 package, then unzip add-to-offi-2.7ac-*.zip + over that directory tree. + +(3.) + Provided in two files (for minimal download time) to install over the + Lynx 2.7 distribution - needs gunzip, tar, and patch. + (a) Get the official Lynx 2.7 distribution - see list of download sites at + <URL: http://www.crl.com/~subir/lynx/sources.html>. + (b) Get lynx-newfiles-2.7ac-*.tar.gz. + (c) Get lynx-patch-2.7ac-*.pch.gz. + (d) Unpack the official 2.7 package, then unpack lynx-newfiles-2.7ac-*.tar.gz + over that directory tree. + (d) Apply patches from lynx-patch-2.7ac-*.pch. + + +HOW TO INSTALL: + +(4) before compiling: + + Check top level Makefile and userdefs.h as usual. + + NOTE that there is a new "#define" in userdefs.h for MAX_CHARSETS + near the end (in "Section 3."). + + NOTE that in the top-level Makefile, the -DEXP_CHARTRANS must be + in *both* SITE_DEFS *and* SITE_LYDEFS. + +(5) Building Lynx: + + If you are compiling for VMS you have to figure out for yourself + how to modify the procedure, sorry. + + What's supposed to happen (in addition to the usual things when + building Lynx): in the new subdirectory src/chrtrans, make should + first compile the auxiliary program `makeuctb', then invoke that + program to create xxxxx_yyy.h files from the provided xxxxx.yyy + translation table files. (See README.* files in src/chrtrans for + more info.) + + If all goes well, just invoking make from the top-level Lynx dir + as usual should do everything automatically. If not, the Makefiles + may need some tweaking... or: + +(6) Some things to look at if compilation fails: + + In src/chrtrans/UCkd.h there is a typedef for an unsigned 16bit + numeric type which may need to be changed for your system. + See comment near top there. + + For recompiling Lynx, `make clean' should not be necessary if only + files in src/chrtrans have been changed. On the other hand + `make clean' from the top directory doesn' currently propagate to + the src/chrtrans directory, so you have to cd to that directory + and `make clean' there to really clean up there. + +(7) To customize (add/change translation tables etc.): + + See README.* files in src/chrtrans. + Make the necessary changes there, then recompile. + (A general `make clean' should not be necessary, but make sure + the ...uni.h file in src/chrtrans gets regenerated.) + + Note that definition of new character entities (if e.g. you want + Lynx to recognize Ž) are not covered by these table files, + they have to be listed in HTMLDTD.c. + + _If you are on a Linux system_ and using Lynx on the console (i.e. + not xterm, not a dialup *into* the Linux box), you can compile + with -DEXP_CHARTRANS_AUTOSWITCH. This is very useful for testing + the various Display Character Sets, Lynx will try to automatically + chage the console state. You need to have the Linux kbd package + installed, with a working `setfont' command executable by the user, + and the right font files - check the source in src/UCAuto.c for + the files used and/or to change them! + NOTE that with this enabled, + - Lynx currently will not clean up the console state at exit, + it will probably left like the last Display Character Set you used. + - Loading a font is global across _all_ virtual text consoles, so + using Lynx (compiled with this flag) may change the appearance of + text on other consoles (if that text contains characters + beyond ASCII). + +(8) Some suggested Web pages for testing: + + <URL: http://www.tezcat.com/~kweide/lynx-chartrans/test/> + + <URL: http://www.isoc.org:8080/>, + especially + <URL: http://www.isoc.org:8080/liste_ml.htm>. + + <URL: http://www.accentsoft.com/un/un-all.htm> + +(9) Please report bugs, unexpected behavior, etc. + to <lynx-dev@sig.net> or <kweide@tezcat.com>. + + Suggestions for improvement would be welcome, as well as + contributed translation tables (for stuff that is not available + at ftp://dkuug.dk or ftp://unicode.org). + +KW 1996-03-12 diff --git a/README.configure b/README.configure new file mode 100644 index 00000000..79234d40 --- /dev/null +++ b/README.configure @@ -0,0 +1,35 @@ +-- 1997/3/20 - T.Dickey <dickey@clark.net> + +This is the first pass of an auto-configure script which I and Jim Spath +have been working on. It uses autoconf 2.12 to generate a Bourne shell +script (configure), which can be run on a UNIX platform to generate: + + lynx_cfg.h + makefile + +to replace the top-level Makefile of Lynx. Ultimately the generated +makefile will have a single target (rather than the multitude of specific +platforms). At this stage, we've gotten as far as combining several of the +more common configurations (noted in makefile according to when they were +tested). + +To use the configure script, simply type + + configure +or configure --with-screen=ncurses +or configure --with-screen=slang + +and + make <platform> + +e.g., one of + + make linux + make sgi + make solaris + make sun4 + +Since the linux target has only a minor special case #ifdef, I've also built +AIX (cc), CLIX (cc), SCO (cc) and HP-UX (K&R c, gcc) configurations using that +target. Jim has tested additionally the FreeBSD, NetBSD configurations, and +will investigate DGUX. diff --git a/README.win-386 b/README.win-386 new file mode 100644 index 00000000..2f36fb23 --- /dev/null +++ b/README.win-386 @@ -0,0 +1,28 @@ +Ports have been added for Win32 (95/NT) and 386 DOS computers with a +packet driver. I created four new defines to accomplish this. + +_WINDOWS Defined for Win32 specific code (Mostly TCP related) +DJGPP Defined for 386 specific code (Mostly TCP related) +DOSPATH Defined for any DOS'ish computer +NOSIGHUP Defined for computers not supporting sighup signal calls. + +To make the Win32 version you need Borland C++ 4.52 or complete +compatable and the win32.zip package unziped into the lynx directory. +This code expects you to have BC make in your path at the console +prompt and also to be able to compile from the console as well. +I can provide an IDE if needed but did not want to force on into the +standard Lynx package. Text mode compiling is much faster anyhow (IMHO). +The current default configuration is to have the Character Translation +code linked in. For this to be successful you need to go into +src\chrtrans and run makew32. After that you can come back to the +Lynx root and run make -f makefile.w32. + +The DJGPP version is a little screwy. You need DJGPP 2.0, the djgpp.zip +package unziped into the lynx directory and some paitence. I kludged it +to compile with long filenames under Win95 so some fooling around may be +required. To compile, run djgpp.bat that was extracted from the zip +file. There is currently a problem with compiling HTML.c and I have +contacted the author of DJGPP for help with getting this port further. + +Wayne Buttles +lynx-port@fdisk.com diff --git a/WWW/Library/Implementation/BSDI_Makefile b/WWW/Library/Implementation/BSDI_Makefile index 65653ca3..31f5dfef 100644 --- a/WWW/Library/Implementation/BSDI_Makefile +++ b/WWW/Library/Implementation/BSDI_Makefile @@ -1,11 +1,11 @@ -# Make WWW under svr4 +# Make WWW under unix # # For W3 distribution, machine type for subdirectories -WWW_MACH = svr4 +WWW_MACH = unix # The ASIS repository's name for the machine we are on -ASIS_MACH = generic/svr4 +ASIS_MACH = generic/unix CFLAGS = -O -DDEBUG -DUSE_DIRENT -DSVR4 -DNO_FILIO_H diff --git a/WWW/Library/Implementation/CommonMakefile b/WWW/Library/Implementation/CommonMakefile index bd32f131..dea974b0 100644 --- a/WWW/Library/Implementation/CommonMakefile +++ b/WWW/Library/Implementation/CommonMakefile @@ -30,6 +30,8 @@ # If this env var is set to something else Some makes will use that instead SHELL = /bin/sh +RANLIB = ranlib + # .h files are distributed but originally are made from the # self-documenting hypertext files. @@ -60,12 +62,6 @@ LOB = $(WTMP)/Library/$(WWW_MACH) #WAISCFLAGS = -DDIRECT_WAIS # -# This path, if relative, is taken relative to the directory -# in which this makefile is, not the pwd. This screws up the -# recursive invocation -# include $(CMN)Version.make -include $(ABS)$(WWW)/Library/Implementation/Version.make - # XMOsAIC hack is only for server to cope with xmosaic kludge for mmedia # # add -DNEW_GATEWAY here for the new gateway config stuff @@ -142,7 +138,7 @@ SPECIFIC = $(WWW)/All/*/Makefile.include $(WWW)/All/Implementation/Makefile* \ # for that step $(LOB)/libwww.a : $(COMMON) ar r $(LOB)/libwww.a $(COMMON) - -ranlib $(LOB)/libwww.a + -$(RANLIB) $(LOB)/libwww.a # Clean up everything generatable except final products clean : diff --git a/WWW/Library/Implementation/HTAAProt.c b/WWW/Library/Implementation/HTAAProt.c index 751b51fc..91fc81bd 100644 --- a/WWW/Library/Implementation/HTAAProt.c +++ b/WWW/Library/Implementation/HTAAProt.c @@ -21,8 +21,10 @@ #include <string.h> #ifndef VMS +#ifndef NOUSERS #include <pwd.h> /* Unix password file routine: getpwnam() */ #include <grp.h> /* Unix group file routine: getgrnam() */ +#endif /* NOUSERS */ #endif /* not VMS */ #include "HTAAUtil.h" @@ -70,7 +72,7 @@ PRIVATE BOOL isNumber ARGS1(CONST char *, s) } -#ifdef VMS +#if defined (VMS) || defined (NOUSERS) /* PUBLIC HTAA_getUidName() ** GET THE USER ID NAME (VMS ONLY) ** ON ENTRY: diff --git a/WWW/Library/Implementation/HTAccess.h b/WWW/Library/Implementation/HTAccess.h index 78685f8d..d883e10f 100644 --- a/WWW/Library/Implementation/HTAccess.h +++ b/WWW/Library/Implementation/HTAccess.h @@ -140,7 +140,7 @@ Load a document from absolute name addr The absolute address of the document to be accessed. - filter if YES, treat document as HTML + filter_it if YES, treat document as HTML */ @@ -168,7 +168,7 @@ Load a document from absolute name to a stream addr The absolute address of the document to be accessed. - filter if YES, treat document as HTML + filter_it if YES, treat document as HTML ON EXIT, @@ -179,7 +179,7 @@ Load a document from absolute name to a stream Note: This is equivalent to HTLoadDocument */ -extern BOOL HTLoadToStream PARAMS((CONST char * addr, BOOL filter, +extern BOOL HTLoadToStream PARAMS((CONST char * addr, BOOL filter_it, HTStream * sink)); diff --git a/WWW/Library/Implementation/HTAnchor.c b/WWW/Library/Implementation/HTAnchor.c index f9b44054..40032d8a 100644 --- a/WWW/Library/Implementation/HTAnchor.c +++ b/WWW/Library/Implementation/HTAnchor.c @@ -173,7 +173,7 @@ PUBLIC HTChildAnchor * HTAnchor_findChild ARGS2( fprintf(stderr, "HTAnchor_findChild called with NULL parent.\n"); return NULL; } - if (kids = parent->children) { /* parent has children : search them */ + if ((kids = parent->children) != 0) { /* parent has children : search them */ if (tag && *tag) { /* TBL */ while (NULL != (child=(HTChildAnchor *)HTList_nextObject(kids))) { #ifdef CASE_INSENSITIVE_ANCHORS @@ -465,7 +465,7 @@ PRIVATE void deleteLinks ARGS1( * their parents to know that they are no longer * the destination of me's anchor. */ - while (target = (HTLink *)HTList_removeLastObject(me->links)) { + while ((target = (HTLink *)HTList_removeLastObject(me->links)) != 0) { parent = target->dest->parent; if (!HTList_isEmpty(parent->sources)) { /* @@ -555,7 +555,7 @@ PUBLIC BOOL HTAnchor_delete ARGS1( */ if (!HTList_isEmpty(me->children)) { cur = me->children; - while (child = (HTChildAnchor *)HTList_nextObject(cur)) { + while ((child = (HTChildAnchor *)HTList_nextObject(cur)) != 0) { if (child != NULL) { deleteLinks((HTAnchor *)child); } @@ -573,8 +573,8 @@ PUBLIC BOOL HTAnchor_delete ARGS1( * First, recursively delete children and their links. */ if (!HTList_isEmpty(me->children)) { - while (child = (HTChildAnchor *)HTList_removeLastObject( - me->children)) { + while ((child = (HTChildAnchor *)HTList_removeLastObject( + me->children)) != 0) { if (child) { deleteLinks((HTAnchor *)child); if (child->tag) { @@ -628,7 +628,7 @@ PUBLIC BOOL HTAnchor_delete ARGS1( FREE(me->RevTitle); if (me->FileCache) { FILE *fd; - if (fd = fopen(me->FileCache, "r")) { + if ((fd = fopen(me->FileCache, "r")) != 0) { fclose(fd); remove(me->FileCache); } @@ -671,6 +671,10 @@ PUBLIC BOOL HTAnchor_delete ARGS1( */ FREE(me->address); +#ifdef EXP_CHARTRANS + FREE (me->UCStages); +#endif + /* * Finally, kill the parent anchor passed in. */ @@ -1088,3 +1092,155 @@ PUBLIC void HTAnchor_setPhysical ARGS2( StrAllocCopy(me->physical, physical); } } + +#ifdef EXP_CHARTRANS + +#include "UCMap.h" +extern LYUCcharset LYCharSet_UC[]; + +/* We store charset info in the HTParentAnchor object, for several +** "stages". (See UCDefs.h) +** A stream method is supposed to know what stage in the model it is. +** +** General model MIME -> parser -> structured -> HText +** e.g. text/html +** from HTTP: HTMIME.c -> SGML.c -> HTML.c -> GridText.c +** text/plain +** from file: HTFile.c -> HTPlain.c -> GridText.c +** +** The lock/set_by is used to lock e.g. a charset set by an explicit +** HTTP MIME header against overriding by a HTML META tag - the MIME +** header has higher priority. Defaults (from -assume_.. options etc.) +** will not override charset explicitly given by server. +** +** Some advantages of keeping this in the HTAnchor: +** - Global variables are bad. +** - Can remember a charset given by META tag when toggling to SOURCE view. +** - Can remember a charset given by <A CHARSET=...> href in another doc. +** +** We don't modify the HTParentAnchor's charset element +** here, that one will only be set when explicitly given. +*/ +PUBLIC LYUCcharset * HTAnchor_getUCInfoStage ARGS2( + HTParentAnchor *, me, + int, which_stage) +{ + if (me && !me->UCStages) { + int i; + int chndl = UCLYhndl_for_unspec; + UCAnchorInfo * stages = + (UCAnchorInfo*) calloc(1, sizeof(UCAnchorInfo)); + if (stages == NULL) + outofmem(__FILE__, "HTAnchor_getUCInfoStage"); + for(i = 0; i < UCT_STAGEMAX; i++) { + stages->s[i].C.MIMEname = ""; + stages->s[i].LYhndl = -1; + } + if (me->charset) { + chndl = UCGetLYhndl_byMIME(me->charset); + if (chndl < 0) { + chndl = UCLYhndl_for_unrec; + } + } + if (chndl >= 0) { + memcpy(&stages->s[UCT_STAGE_MIME].C, &LYCharSet_UC[chndl], + sizeof(LYUCcharset)); + stages->s[UCT_STAGE_MIME].lock = UCT_SETBY_DEFAULT; + } + else { /* should not happen... */ + stages->s[UCT_STAGE_MIME].C.UChndl = -1; + stages->s[UCT_STAGE_MIME].lock = UCT_SETBY_NONE; + } + stages->s[UCT_STAGE_MIME].LYhndl = chndl; + me->UCStages = stages; + } + if (me) { + return &me->UCStages->s[which_stage].C; + } + return NULL; +} + +PUBLIC int HTAnchor_getUCLYhndl ARGS2( + HTParentAnchor *, me, + int, which_stage) +{ + if (me) { + if (!me->UCStages) { + /* this will allocate and initialize, if not yet done */ + (void) HTAnchor_getUCInfoStage(me, which_stage); + } + if (me->UCStages->s[which_stage].lock > UCT_SETBY_NONE) + return me->UCStages->s[which_stage].LYhndl; + } + return -1; +} + +PUBLIC LYUCcharset * HTAnchor_setUCInfoStage ARGS4( + HTParentAnchor *, me, + int, LYhndl, + int, which_stage, + int, set_by) +{ + if (me) { + /* this will allocate and initialize, if not yet done */ + LYUCcharset * p = HTAnchor_getUCInfoStage(me, which_stage); + /* Can we override? */ + if (set_by >= me->UCStages->s[which_stage].lock) { + me->UCStages->s[which_stage].lock = set_by; + me->UCStages->s[which_stage].LYhndl = LYhndl; + if (LYhndl >= 0) { + memcpy(p, &LYCharSet_UC[LYhndl], + sizeof(LYUCcharset)); + } + else { + p->UChndl = -1; + } + return p; + } + } + return NULL; +} +PUBLIC LYUCcharset * HTAnchor_resetUCInfoStage ARGS4( + HTParentAnchor *, me, + int, LYhndl, + int, which_stage, + int, set_by) +{ + if (!me || !me->UCStages) + return NULL; + me->UCStages->s[which_stage].lock = set_by; + me->UCStages->s[which_stage].LYhndl = LYhndl; + return &me->UCStages->s[which_stage].C; +} + +/* A set_by of (-1) means use the lock value from the from_stage */ +PUBLIC LYUCcharset * HTAnchor_copyUCInfoStage ARGS4( + HTParentAnchor *, me, + int, to_stage, + int, from_stage, + int, set_by) +{ + if (me) { + /* this will allocate and initialize, if not yet done */ + LYUCcharset * p_from = HTAnchor_getUCInfoStage(me, from_stage); + LYUCcharset * p_to = HTAnchor_getUCInfoStage(me, to_stage); + /* Can we override? */ + if (set_by == -1) + set_by = me->UCStages->s[from_stage].lock; + if (set_by == UCT_SETBY_NONE) + set_by = UCT_SETBY_DEFAULT; + if (set_by >= me->UCStages->s[to_stage].lock) { + me->UCStages->s[to_stage].lock = set_by; + me->UCStages->s[to_stage].LYhndl = + me->UCStages->s[from_stage].LYhndl; + + memcpy(p_to, p_from, + sizeof(LYUCcharset)); + + return p_to; + } + } + return NULL; +} + +#endif /* EXP_CHARTRANS */ diff --git a/WWW/Library/Implementation/HTAnchor.h b/WWW/Library/Implementation/HTAnchor.h index 934fe2c7..efa2a307 100644 --- a/WWW/Library/Implementation/HTAnchor.h +++ b/WWW/Library/Implementation/HTAnchor.h @@ -16,6 +16,9 @@ #include "HTList.h" #include "HTAtom.h" +#ifdef EXP_CHARTRANS +#include "UCDefs.h" +#endif #ifdef SHORT_NAMES #define HTAnchor_findChild HTAnFiCh @@ -119,6 +122,9 @@ struct _HTParentAnchor { char * expires; /* Expires */ char * last_modified; /* Last-Modified */ char * server; /* Server */ +#ifdef EXP_CHARTRANS + UCAnchorInfo * UCStages; +#endif }; typedef struct { @@ -372,6 +378,29 @@ extern void HTAnchor_setPhysical PARAMS(( #endif /* HTANCHOR_H */ +#ifdef EXP_CHARTRANS + +extern LYUCcharset * HTAnchor_getUCInfoStage PARAMS((HTParentAnchor * me, + int which_stage)); +extern int HTAnchor_getUCLYhndl PARAMS((HTParentAnchor * me, + int which_stage)); +extern LYUCcharset * HTAnchor_setUCInfoStage PARAMS((HTParentAnchor * me, + int LYhndl, + int which_stage, + int set_by)); +extern LYUCcharset * HTAnchor_setUCInfoStage PARAMS((HTParentAnchor * me, + int LYhndl, + int which_stage, + int set_by)); +extern LYUCcharset * HTAnchor_resetUCInfoStage PARAMS((HTParentAnchor * me, + int LYhndl, + int which_stage, + int set_by)); +extern LYUCcharset * HTAnchor_copyUCInfoStage PARAMS((HTParentAnchor * me, + int to_stage, + int from_stage, + int set_by)); +#endif /* */ diff --git a/WWW/Library/Implementation/HTCJK.h b/WWW/Library/Implementation/HTCJK.h index 8944cd42..c5fa51af 100644 --- a/WWW/Library/Implementation/HTCJK.h +++ b/WWW/Library/Implementation/HTCJK.h @@ -79,7 +79,7 @@ extern void JISx0201TO0208_SJIS PARAMS(( extern unsigned char * SJIS_TO_EUC1 PARAMS(( unsigned char HI, unsigned char LO, - unsigned char * EUC)); + unsigned char * EUCp)); extern unsigned char * SJIS_TO_EUC PARAMS(( unsigned char * src, diff --git a/WWW/Library/Implementation/HTDOS.c b/WWW/Library/Implementation/HTDOS.c new file mode 100644 index 00000000..79a8b463 --- /dev/null +++ b/WWW/Library/Implementation/HTDOS.c @@ -0,0 +1,95 @@ +/* DOS specific routines + + */ + +#include <mem.h> +#include <dos.h> +#include "htstring.h" + +/* PUBLIC HTDOS_wwwName() +** CONVERTS DOS Name into WWW Name +** ON ENTRY: +** dosname DOS file specification (NO NODE) +** +** ON EXIT: +** returns www file specification +** +*/ +char * HTDOS_wwwName (char *dosname) +{ + static char wwwname[1024]; + char *cp_url = wwwname; + + strcpy(wwwname,dosname); + + for ( ; *cp_url != '\0' ; cp_url++) + if(*cp_url == '\\') *cp_url = '/'; + + if(strlen(wwwname) > 3 && *cp_url == '/') + *cp_url = '\0'; + + if(*cp_url == ':') + { + cp_url++; + *cp_url = '/'; + } + +/* + if((strlen(wwwname)>2)&&(wwwname[1]==':')) wwwname[1]='|'; + printf("\n\nwww: %s\n\ndos: %s\n\n",wwwname,dosname); + sleep(5); +*/ + return(wwwname); +} + + +/* PUBLIC HTDOS_name() +** CONVERTS WWW name into a DOS name +** ON ENTRY: +** fn WWW file name +** +** ON EXIT: +** returns dos file specification +** +** Bug: Returns pointer to static -- non-reentrant +*/ +char * HTDOS_name(char *dosname) { + + static char cp_url[1024]; + int joe; + + memset(cp_url, 0, 1023); +/* strset(cp_url,0); */ + sprintf(cp_url, "%s",dosname); + + for(joe = 0; cp_url[joe] != '\0'; joe++) { + if(cp_url[joe] == '/') { + cp_url[joe] = '\\'; + } + } + +// if(strlen(cp_url) < 4) cp_url[] = ':'; + if(strlen(cp_url) == 3) cp_url[3] = '\\'; + + if(strlen(cp_url) == 4) cp_url[4] = '.'; + + if((strlen(cp_url) > 2) && (cp_url[1] == '|')) + cp_url[1] = ':'; + + if((cp_url[1] == '\\') || (cp_url[0] != '\\')) + { +/* + printf("\n\n%s = i%\n\n",cp_url,strlen(cp_url)); + sleep(5); +/**/ + return(cp_url); + } else { +/* + printf("\n\n%s = %i\n\n",cp_url+1,strlen(cp_url)); + sleep(5); +/**/ + return(cp_url+1); + } +} + + diff --git a/WWW/Library/Implementation/HTDOS.h b/WWW/Library/Implementation/HTDOS.h new file mode 100644 index 00000000..2247c5ef --- /dev/null +++ b/WWW/Library/Implementation/HTDOS.h @@ -0,0 +1,34 @@ +/* DOS specific routines + + */ + +#ifndef HTDOS_H +#define HTDOS_H + +/* PUBLIC HTDOS_wwwName() +** CONVERTS DOS Name into WWW Name +** ON ENTRY: +** dosname DOS file specification (NO NODE) +** +** ON EXIT: +** returns www file specification +** +*/ +char * HTDOS_wwwName (char * dosname); + +/* PUBLIC HTDOS_name() +** CONVERTS WWW name into a DOS name +** ON ENTRY: +** fn WWW file name +** +** ON EXIT: +** returns dos file specification +** +** Bug: Returns pointer to static -- non-reentrant +*/ +char * HTDOS_name (char * fn); + +#endif /* not HTDOS_H */ +/* + + End of file HTDOS.h. */ diff --git a/WWW/Library/Implementation/HTFTP.c b/WWW/Library/Implementation/HTFTP.c index c90b3473..8be44d44 100644 --- a/WWW/Library/Implementation/HTFTP.c +++ b/WWW/Library/Implementation/HTFTP.c @@ -71,6 +71,10 @@ BUGS: @@@ Limit connection cache size! ** same time. */ +#ifdef DJGPP +#define u_long unsigned long +#endif + #include "HTUtils.h" #include "tcp.h" @@ -108,12 +112,6 @@ BUGS: @@@ Limit connection cache size! #include "LYLeaks.h" -#ifdef REMOVED_CODE -extern char *malloc(); -extern void free(); -extern char *strncpy(); -#endif /* REMOVED_CODE */ - typedef struct _connection { struct _connection * next; /* Link on list */ u_long addr; /* IP address */ @@ -2775,7 +2773,7 @@ PUBLIC int HTFTPLoad ARGS4( } else { format = HTFileFormat(filename, &encoding); } - format = HTCharsetFormat(format, anchor); + format = HTCharsetFormat(format, anchor, -1); binary = (encoding != HTAtom_for("8bit") && encoding != HTAtom_for("7bit")); if (!binary && @@ -3203,7 +3201,7 @@ listen: FileName[len - 2] = '\0'; format = HTFileFormat(FileName, &encoding); - format = HTCharsetFormat(format, anchor); + format = HTCharsetFormat(format, anchor, -1); StrAllocCopy(anchor->content_type, format->name); StrAllocCopy(anchor->content_encoding, "x-compress"); format = HTAtom_for("www/compressed"); @@ -3214,7 +3212,7 @@ listen: FileName[len - 3] == '_') { FileName[len - 3] = '\0'; format = HTFileFormat(FileName, &encoding); - format = HTCharsetFormat(format, anchor); + format = HTCharsetFormat(format, anchor, -1); StrAllocCopy(anchor->content_type, format->name); StrAllocCopy(anchor->content_encoding, "x-gzip"); format = HTAtom_for("www/compressed"); diff --git a/WWW/Library/Implementation/HTFile.c b/WWW/Library/Implementation/HTFile.c index af433de7..40097a96 100644 --- a/WWW/Library/Implementation/HTFile.c +++ b/WWW/Library/Implementation/HTFile.c @@ -25,6 +25,13 @@ /* #define NO_PARENT_DIR_REFERENCE */ /* Define this for no parent links */ #endif /* !VMS */ +#ifdef DOSPATH +#define GOT_READ_DIR +#include <dirent.h> +#define USE_DIRENT +#include "HTDOS.h" +#endif + #include "HTUtils.h" #include "tcp.h" #include "HTFile.h" /* Implemented here */ @@ -63,6 +70,11 @@ #include "HTBTree.h" #include "HTAlert.h" #include "HTCJK.h" +#ifdef EXP_CHARTRANS +#include "UCDefs.h" +#include "UCMap.h" +#include "UCAux.h" +#endif /* EXP_CHARTRANS */ #include "LYexit.h" #include "LYLeaks.h" @@ -82,13 +94,6 @@ typedef struct _HTSuffix { #endif /* NGROUPS_MAX */ #endif /* NGROUPS */ - -#ifdef USE_DIRENT /* Set this for Sys V systems */ -#define STRUCT_DIRENT struct dirent -#else -#define STRUCT_DIRENT struct direct -#endif /* USE_DIRENT */ - #include "HTML.h" /* For directory object building */ #define PUTC(c) (*target->isa->put_character)(target, c) @@ -120,6 +125,9 @@ extern int current_char_set; extern char *LYchar_set_names[]; extern BOOL HTPassEightBitRaw; extern HTCJKlang HTCJK; +#ifndef EXP_CHARTRANS +#define UCLYhndl_HTFile_for_unspec 0 /* a dummy define */ +#endif PRIVATE char *HTMountRoot = "/Net/"; /* Where to find mounts */ #ifdef VMS @@ -138,6 +146,14 @@ PRIVATE HTSuffix no_suffix = { "*", NULL, NULL, 1.0 }; PRIVATE HTSuffix unknown_suffix = { "*.*", NULL, NULL, 1.0}; +#ifdef _WINDOWS +int exists(char *filename) +{ + return (access(filename,0)==0); +} +#endif + + /* To free up the suffixes at program exit. ** ---------------------------------------- */ @@ -535,7 +551,11 @@ PUBLIC char * HTLocalName ARGS1( FREE(host); if (TRACE) fprintf(stderr, "Node `%s' means path `%s'\n", name, path); +#ifdef DOSPATH + return(HTDOS_name(path)); +#else return(path); +#endif /* DOSPATH */ } else { char * result = (char *)malloc( strlen("/Net/")+strlen(host)+strlen(path)+1); @@ -606,6 +626,7 @@ PUBLIC char * WWW_nameOfFile ARGS1( } if (TRACE) fprintf(stderr, "File `%s'\n\tmeans node `%s'\n", name, result); + return result; } @@ -744,12 +765,15 @@ PUBLIC HTFormat HTFileFormat ARGS2( ** indicated, sets Lynx up for proper handling in relation ** to the currently selected character set. - FM */ -PUBLIC HTFormat HTCharsetFormat ARGS2( +PUBLIC HTFormat HTCharsetFormat ARGS3( HTFormat, format, - HTParentAnchor *, anchor) + HTParentAnchor *, anchor, + int, default_LYhndl) { - char *cp = NULL, *cp1, *cp2; + char *cp = NULL, *cp1, *cp2, *cp3 = NULL, *cp4; + BOOL chartrans_ok = FALSE; + int chndl = -1; int i; FREE(anchor->charset); @@ -765,6 +789,84 @@ PUBLIC HTFormat HTCharsetFormat ARGS2( cp2 += 7; while (*cp2 == ' ' || *cp2 == '=') cp2++; +#ifdef EXP_CHARTRANS + StrAllocCopy(cp3, cp2); /* copy to mutilate more */ + for (cp4=cp3; (*cp4 != '\0' && *cp4 != '"' && + *cp4 != ';' && *cp4 != ':' && + !WHITE(*cp4)); cp4++) + /* nothing */ ; + *cp4 = '\0'; + cp4 = cp3; + chndl = UCGetLYhndl_byMIME(cp3); + if (chndl < 0) { + if (0==strcmp(cp4, "cn-big5")) { + cp4 += 3; + chndl = UCGetLYhndl_byMIME(cp4); + } + else if (0==strncmp(cp4, "cn-gb", 5)) { + StrAllocCopy(cp3, "gb2312"); + cp4 = cp3; + chndl = UCGetLYhndl_byMIME(cp4); + } + } + if (UCCanTranslateFromTo(chndl, current_char_set)) + { + chartrans_ok = YES; + *cp1 = '\0'; + format = HTAtom_for(cp); + StrAllocCopy(anchor->charset, cp4); + HTAnchor_setUCInfoStage(anchor, chndl, + UCT_STAGE_MIME, UCT_SETBY_MIME); + } + else if (chndl < 0) {/* got something but we don't + recognize it */ + chndl = UCLYhndl_for_unrec; + if (UCCanTranslateFromTo(chndl, + current_char_set)) + { + chartrans_ok = YES; + HTAnchor_setUCInfoStage(anchor, chndl, + UCT_STAGE_MIME, UCT_SETBY_DEFAULT); + } + } + FREE(cp3); + if (chartrans_ok) { + LYUCcharset * p_in = + HTAnchor_getUCInfoStage(anchor, + UCT_STAGE_MIME); + LYUCcharset * p_out = + HTAnchor_setUCInfoStage(anchor, + current_char_set, + UCT_STAGE_HTEXT, UCT_SETBY_DEFAULT); + if (!p_out) /* try again */ + p_out = + HTAnchor_getUCInfoStage(anchor, + UCT_STAGE_HTEXT); + + if (0==strcmp(p_in->MIMEname,"x-transparent")) + { + HTPassEightBitRaw = TRUE; + HTAnchor_setUCInfoStage(anchor, + HTAnchor_getUCLYhndl(anchor, + UCT_STAGE_HTEXT), + UCT_STAGE_MIME, UCT_SETBY_DEFAULT); + } + if (0==strcmp(p_out->MIMEname,"x-transparent")) + { + HTPassEightBitRaw = TRUE; + HTAnchor_setUCInfoStage(anchor, + HTAnchor_getUCLYhndl(anchor, + UCT_STAGE_MIME), + UCT_STAGE_HTEXT, UCT_SETBY_DEFAULT); + } + if (!(p_in->enc & UCT_ENC_CJK) && + (p_in->codepoints & UCT_CP_SUBSETOF_LAT1)){ + HTCJK = NOCJK; + } else if (chndl == current_char_set) { + HTPassEightBitRaw = TRUE; + } + } else /* Fall through to old behavior */ +#endif /* EXP_CHARTRANS */ if (!strncmp(cp2, "us-ascii", 8) || !strncmp(cp2, "iso-8859-1", 10)) { *cp1 = '\0'; @@ -853,6 +955,16 @@ PUBLIC HTFormat HTCharsetFormat ARGS2( } FREE(cp); +#ifdef EXP_CHARTRANS + if (!chartrans_ok && !anchor->charset && default_LYhndl >= 0) { + HTAnchor_setUCInfoStage(anchor, default_LYhndl, + UCT_STAGE_MIME, UCT_SETBY_DEFAULT); + } + HTAnchor_copyUCInfoStage(anchor, + UCT_STAGE_PARSER, UCT_STAGE_MIME, + -1); +#endif + return format; } @@ -906,6 +1018,9 @@ PUBLIC float HTFileValue ARGS1( #ifdef PCNFS #define NO_GROUPS #endif /* PCNFS */ +#ifdef NOUSERS +#define NO_GROUPS +#endif /* PCNFS */ PUBLIC BOOL HTEditable ARGS1( CONST char *, filename) @@ -1033,7 +1148,7 @@ PUBLIC void HTDirEntry ARGS3( ** ------------------------------ ** ** This gives the TITLE and H1 header, and also a link -/** to the parent directory if appropriate. +** to the parent directory if appropriate. ** ** On exit: ** Returns TRUE if an "Up to <parent>" link was not created @@ -1054,6 +1169,10 @@ PUBLIC BOOL HTDirTitles ARGS3( BOOL need_parent_link = FALSE; int i; +#ifdef DOSPATH + BOOL local_link = FALSE; + if (logical[18] == ':') local_link = TRUE; +#endif /* ** Check tildeIsTop for treating home directory as Welcome ** (assume the tilde is not followed by a username). - FM @@ -1160,8 +1279,19 @@ PUBLIC BOOL HTDirTitles ARGS3( relative = (char*) malloc(strlen(current) + 4); if (relative == NULL) outofmem(__FILE__, "HTDirTitles"); + sprintf(relative, "%s/..", current); -#ifndef VMS + +#ifdef DOSPATH + if(local_link) + if (strlen(parent) == 3 ) + StrAllocCat(relative, "/."); +#endif + +#if !defined (VMS) +#ifdef DOSPATH + if(!local_link) +#endif { /* ** On Unix, if it's not ftp and the directory cannot @@ -1324,7 +1454,7 @@ PUBLIC int HTLoadFile ARGS4( ** using that, Lynx users should make the current character ** set "ISO Latin 1" so that 8-bit characters are passed raw. */ - format = HTCharsetFormat(format, anchor); + format = HTCharsetFormat(format, anchor, UCLYhndl_HTFile_for_unspec); #ifdef VMS /* @@ -1424,7 +1554,8 @@ PUBLIC int HTLoadFile ARGS4( cp[len - 2] = '\0'; format = HTFileFormat(cp, &encoding); FREE(cp); - format = HTCharsetFormat(format, anchor); + format = HTCharsetFormat(format, anchor, + UCLYhndl_HTFile_for_unspec); StrAllocCopy(anchor->content_type, format->name); StrAllocCopy(anchor->content_encoding, "x-compress"); format = HTAtom_for("www/compressed"); @@ -1437,7 +1568,8 @@ PUBLIC int HTLoadFile ARGS4( cp[len - 3] = '\0'; format = HTFileFormat(cp, &encoding); FREE(cp); - format = HTCharsetFormat(format, anchor); + format = HTCharsetFormat(format, anchor, + UCLYhndl_HTFile_for_unspec); StrAllocCopy(anchor->content_type, format->name); StrAllocCopy(anchor->content_encoding, "x-gzip"); format = HTAtom_for("www/compressed"); @@ -1511,9 +1643,10 @@ forget_multi: /* ** While there are directory entries to be read... */ +#ifndef DOSPATH if (dirbuf->d_ino == 0) continue; /* if the entry is not being used, skip it */ - +#endif if ((int)strlen(dirbuf->d_name) > baselen && /* Match? */ !strncmp(dirbuf->d_name, base, baselen)) { HTFormat rep = HTFileFormat(dirbuf->d_name, &encoding); @@ -1561,13 +1694,21 @@ forget_multi: ** will hold the directory entry, and a type 'DIR' which is used ** to point to the current directory being read. */ +#ifdef _WINDOWS + if (!exists(localname)) { +#else if (stat(localname,&dir_info) == -1) { /* get file information */ +#endif /* if can't read file information */ if (TRACE) fprintf(stderr, "HTLoadFile: can't stat %s\n", localname); } else { /* Stat was OK */ +#ifdef _WINDOWS + if (stat(localname,&dir_info) == -1) dir_info.st_mode = S_IFDIR; +#endif + if (((dir_info.st_mode) & S_IFMT) == S_IFDIR) { /* ** If localname is a directory. @@ -1637,7 +1778,15 @@ forget_multi: StrAllocCopy(tail, p+1); /* take slash off the beginning */ } FREE(pathname); - + +#ifdef EXP_CHARTRANS + if (UCLYhndl_HTFile_for_unspec >= 0) { + HTAnchor_setUCInfoStage(anchor, + UCLYhndl_HTFile_for_unspec, + UCT_STAGE_PARSER, + UCT_SETBY_DEFAULT); + } +#endif target = HTML_new(anchor, format_out, sink); targetClass = *target->isa; /* Copy routine entry points */ @@ -1673,12 +1822,13 @@ forget_multi: char * dirname = NULL; extern BOOLEAN no_dotfiles, show_dotfiles; +#ifndef DOSPATH if (dirbuf->d_ino == 0) /* ** If the entry is not being used, skip it. */ continue; - +#endif /* ** Skip self, parent if handled in HTDirTitles() ** or if NO_PARENT_DIR_REFERENCE is not defined, @@ -1902,7 +2052,8 @@ open_file: cp[len - 2] = '\0'; format = HTFileFormat(cp, &encoding); FREE(cp); - format = HTCharsetFormat(format, anchor); + format = HTCharsetFormat(format, anchor, + UCLYhndl_HTFile_for_unspec); StrAllocCopy(anchor->content_type, format->name); StrAllocCopy(anchor->content_encoding, "x-compress"); format = HTAtom_for("www/compressed"); @@ -1914,7 +2065,8 @@ open_file: cp[len - 3] = '\0'; format = HTFileFormat(cp, &encoding); FREE(cp); - format = HTCharsetFormat(format, anchor); + format = HTCharsetFormat(format, anchor, + UCLYhndl_HTFile_for_unspec); StrAllocCopy(anchor->content_type, format->name); StrAllocCopy(anchor->content_encoding, "x-gzip"); format = HTAtom_for("www/compressed"); diff --git a/WWW/Library/Implementation/HTFile.h b/WWW/Library/Implementation/HTFile.h index b2a51103..2d37a537 100644 --- a/WWW/Library/Implementation/HTFile.h +++ b/WWW/Library/Implementation/HTFile.h @@ -127,7 +127,8 @@ extern HTFormat HTFileFormat PARAMS(( */ extern HTFormat HTCharsetFormat PARAMS(( HTFormat format, - HTParentAnchor * anchor)); + HTParentAnchor * anchor, + int default_LYhndl)); /* ** Determine file value from file name. diff --git a/WWW/Library/Implementation/HTGopher.c b/WWW/Library/Implementation/HTGopher.c index c4f47b76..46ed05f4 100644 --- a/WWW/Library/Implementation/HTGopher.c +++ b/WWW/Library/Implementation/HTGopher.c @@ -761,7 +761,7 @@ PRIVATE int interpret_cso_key ARGS5( { CSOfield_info *fld; - if (fld = ctx->fld) { + if ((fld = ctx->fld) != 0) { /* ** Most substitutions only recognized inside of loops. */ @@ -937,8 +937,8 @@ PRIVATE int parse_cso_fields ARGS2( { char ch; char *p = buf; - int i, code, prev_code, alen; - char *index, *name; + int i, code = 0, prev_code, alen; + char *indx, *name; CSOfield_info *last, *new; extern int interrupted_in_htgetcharacter; @@ -1004,14 +1004,14 @@ PRIVATE int parse_cso_fields ARGS2( /* ** Parse fields within returned line into status, ndx, name, data. */ - index = NULL; + indx = NULL; name = NULL; for (i = 0; p[i]; i++) if (p[i] == ':' ) { p[i] = '\0'; - if (!index) { - index = (char *)&p[i+1]; - code = atoi (index); + if (!indx) { + indx = (char *)&p[i+1]; + code = atoi (indx); } else if (!name) { name = (char *)&p[i+1]; } else { @@ -1073,7 +1073,7 @@ PRIVATE int parse_cso_fields ARGS2( strcpy((char *)&new->attributes[alen-2], " "); new->description = new->desc_buf; new->desc_buf[0] = '\0'; - new->id = atoi(index); + new->id = atoi(indx); /* ** Scan for keywords. */ diff --git a/WWW/Library/Implementation/HTMIME.c b/WWW/Library/Implementation/HTMIME.c index 65c6694e..59d0313b 100644 --- a/WWW/Library/Implementation/HTMIME.c +++ b/WWW/Library/Implementation/HTMIME.c @@ -15,6 +15,11 @@ #include "HTMIME.h" /* Implemented here */ #include "HTAlert.h" #include "HTCJK.h" +#ifdef EXP_CHARTRANS +#include "UCMap.h" +#include "UCDefs.h" +#include "UCAux.h" +#endif #include "LYLeaks.h" @@ -332,7 +337,7 @@ PRIVATE void HTMIME_put_character ARGS2( { me->net_ascii = NO; if (strchr(HTAtom_name(me->format), ';') != NULL) { - char *cp = NULL, *cp1, *cp2, *cp3; + char *cp = NULL, *cp1, *cp2, *cp3 = NULL, *cp4; if (TRACE) fprintf(stderr, @@ -351,10 +356,92 @@ PRIVATE void HTMIME_put_character ARGS2( for (i = 0; cp[i]; i++) cp[i] = TOLOWER(cp[i]); if ((cp1=strchr(cp, ';')) != NULL) { + BOOL chartrans_ok = NO; if ((cp2=strstr(cp1, "charset")) != NULL) { + int chndl; cp2 += 7; while (*cp2 == ' ' || *cp2 == '=' || *cp2 == '\"') cp2++; +#ifdef EXP_CHARTRANS + StrAllocCopy(cp3, cp2); /* copy to mutilate more */ + for (cp4=cp3; (*cp4 != '\0' && *cp4 != '\"' && + *cp4 != ';' && *cp4 != ':' && + !WHITE(*cp4)); cp4++) + /* nothing */ ; + *cp4 = '\0'; + cp4 = cp3; + chndl = UCGetLYhndl_byMIME(cp3); + if (chndl < 0) { + if (0==strcmp(cp4, "cn-big5")) { + cp4 += 3; + chndl = UCGetLYhndl_byMIME(cp4); + } + else if (0==strncmp(cp4, "cn-gb", 5)) { + StrAllocCopy(cp3, "gb2312"); + cp4 = cp3; + chndl = UCGetLYhndl_byMIME(cp4); + } + } + if (UCCanTranslateFromTo(chndl, current_char_set)) + { + chartrans_ok = YES; + *cp1 = '\0'; + me->format = HTAtom_for(cp); + StrAllocCopy(me->anchor->charset, cp4); + HTAnchor_setUCInfoStage(me->anchor, chndl, + UCT_STAGE_MIME, UCT_SETBY_MIME); + } + else if (chndl < 0) {/* got something but we don't + recognize it */ + chndl = UCLYhndl_for_unrec; + if (UCCanTranslateFromTo(chndl, + current_char_set)) + { + chartrans_ok = YES; + *cp1 = '\0'; + me->format = HTAtom_for(cp); + HTAnchor_setUCInfoStage(me->anchor, chndl, + UCT_STAGE_MIME, UCT_SETBY_DEFAULT); + } + } + FREE(cp3); + if (chartrans_ok) { + LYUCcharset * p_in = + HTAnchor_getUCInfoStage(me->anchor, + UCT_STAGE_MIME); + LYUCcharset * p_out = + HTAnchor_setUCInfoStage(me->anchor, + current_char_set, + UCT_STAGE_HTEXT, UCT_SETBY_DEFAULT); + if (!p_out) /* try again */ + p_out = + HTAnchor_getUCInfoStage(me->anchor, + UCT_STAGE_HTEXT); + + if (0==strcmp(p_in->MIMEname,"x-transparent")) + { + HTPassEightBitRaw = TRUE; + HTAnchor_setUCInfoStage(me->anchor, + HTAnchor_getUCLYhndl(me->anchor, + UCT_STAGE_HTEXT), + UCT_STAGE_MIME, UCT_SETBY_DEFAULT); + } + if (0==strcmp(p_out->MIMEname,"x-transparent")) + { + HTPassEightBitRaw = TRUE; + HTAnchor_setUCInfoStage(me->anchor, + HTAnchor_getUCLYhndl(me->anchor, + UCT_STAGE_MIME), + UCT_STAGE_HTEXT, UCT_SETBY_DEFAULT); + } + if (!(p_in->enc & UCT_ENC_CJK) && + (p_in->codepoints & UCT_CP_SUBSETOF_LAT1)){ + HTCJK = NOCJK; + } else if (chndl == current_char_set) { + HTPassEightBitRaw = TRUE; + } + } else /* Fall through to old behavior */ +#endif /* EXP_CHARTRANS */ if (!strncmp(cp2, "us-ascii", 8) || !strncmp(cp2, "iso-8859-1", 10)) { *cp1 = '\0'; @@ -1958,6 +2045,12 @@ PUBLIC HTStream* HTMIMEConvert ARGS3( me->encoding = 0; /* Not set yet */ me->compression_encoding = NULL; /* Not set yet */ me->net_ascii = NO; /* Local character set */ +#ifdef EXP_CHARTRANS + HTAnchor_setUCInfoStage(me->anchor, current_char_set, + UCT_STAGE_STRUCTURED, UCT_SETBY_DEFAULT); + HTAnchor_setUCInfoStage(me->anchor, current_char_set, + UCT_STAGE_HTEXT, UCT_SETBY_DEFAULT); +#endif /* EXP_CHARTRANS */ return me; } diff --git a/WWW/Library/Implementation/HTML.h b/WWW/Library/Implementation/HTML.h index c4bd3caf..ed3aefee 100644 --- a/WWW/Library/Implementation/HTML.h +++ b/WWW/Library/Implementation/HTML.h @@ -7,6 +7,11 @@ #ifndef HTML_H #define HTML_H +#ifdef EXP_CHARTRANS +#include "UCDefs.h" +#include "UCAux.h" +#endif + #ifndef HTUTILS_H #include "HTUtils.h" #endif /* HTUTILS_H */ @@ -132,6 +137,12 @@ struct _HTStructured { BOOL inUnderline; BOOL needBoldH; + +#ifdef EXP_CHARTRANS + LYUCcharset * UCI; /* pointer to node_anchor's UCInfo */ + int UCLYhndl; /* tells us what charset we are fed */ + UCTransParams T; +#endif }; struct _HTStream { @@ -145,7 +156,7 @@ struct _HTStream { extern void HTML_put_character PARAMS((HTStructured *me, char c)); extern void HTML_put_string PARAMS((HTStructured *me, CONST char *s)); extern void HTML_write PARAMS((HTStructured *me, CONST char *s, int l)); -extern void HTML_put_entity PARAMS((HTStructured *me, int entity_number)); +extern int HTML_put_entity PARAMS((HTStructured *me, int entity_number)); #endif /* Lynx_HTML_Handler */ /* P U B L I C diff --git a/WWW/Library/Implementation/HTMLDTD.c b/WWW/Library/Implementation/HTMLDTD.c index bec129dd..2639a461 100644 --- a/WWW/Library/Implementation/HTMLDTD.c +++ b/WWW/Library/Implementation/HTMLDTD.c @@ -118,7 +118,7 @@ static CONST char* entities[] = { "thinsp", /* thin space (not collapsed) */ "thorn", /* small thorn, Icelandic */ "times", /* multiplication sign */ - "trade", /* registerd trademark */ + "trade", /* trade mark sign (U+2122) */ "uacute", /* small u, acute accent */ "ucirc", /* small u, circumflex accent */ "ugrave", /* small u, grave accent */ @@ -131,6 +131,169 @@ static CONST char* entities[] = { #define HTML_ENTITIES 112 +#ifdef EXP_CHARTRANS +/* Extra Entity Names +** ------------------ +** +** This table contains Unicodes in addition to the Names. +** +** Just an idea how it could be done. -kw +* +* I think in the future the whole entities[] thing above could migrate +* to this kind of structure. The structured streams to which +* the SGML modules sends its output could then easily have access +* to both entity names and unicode values for each (special) +* character. Probably the whole translation to display characters +* should be done at that later stage (e.g. in HTML.c). +* What's missing is a way for the later stage to return info +* to SGML whether the entity could be displayed or not. +* (like between SGML_character() and handle_entity() via FoundEntity.) +* Well, trying to do that now. +* Why keep two structures for entities? Backward compatibility.. +*/ + +/* UC_entity_info structure is defined in SGML.h. */ +/* This has to be sorted alphabetically, + bear this in mind when you add some more entities.. + + Now we have here: - all ISO-8859-2 entites + - lrm, rlm, zwnj and zwj +*/ +static CONST UC_entity_info extra_entities[] = { + {"Aacute", 0x00c1}, /* A with acute */ + {"Abreve", 0x0102}, /* A with breve */ + {"Acirc", 0x00c2}, /* A with circumflex */ + {"Aogon", 0x0104}, /* A with ogonek */ + {"Auml", 0x00c4}, /* A with diaeresis */ + {"Cacute", 0x0106}, /* C with acute */ + {"Ccaron", 0x010c}, /* C with caron */ + {"Ccedil", 0x00c7}, /* C with cedilla */ + {"Dcaron", 0x010e}, /* D with caron */ + {"Dstrok", 0x0110}, /* D with stroke */ + {"Eacute", 0x00c9}, /* E with acute */ + {"Ecaron", 0x011a}, /* E with caron */ + {"Eogon", 0x0118}, /* E with ogonek */ + {"Euml", 0x00cb}, /* E with diaeresis */ + {"Iacute", 0x00cd}, /* I with acute */ + {"Icirc", 0x00ce}, /* I with circumflex */ + {"Lacute", 0x0139}, /* L with acute */ + {"Lcaron", 0x013d}, /* L with caron */ + {"Lstrok", 0x0141}, /* L with stroke */ + {"Nacute", 0x0143}, /* N with acute */ + {"Ncaron", 0x0147}, /* N with caron */ + {"Oacute", 0x00d3}, /* O with acute */ + {"Ocirc", 0x00d4}, /* O with circumflex */ + {"Odblac", 0x0150}, /* O with double acute */ + {"Ouml", 0x00d6}, /* O with diaeresis */ + {"Racute", 0x0154}, /* R with acute */ + {"Rcaron", 0x0158}, /* R with caron */ + {"Sacute", 0x015a}, /* S with acute */ + {"Scaron", 0x0160}, /* S with caron */ + {"Scedil", 0x015e}, /* S with cedilla */ + {"Tcaron", 0x0164}, /* T with caron */ + {"Tcedil", 0x0162}, /* T with cedilla */ + {"Uacute", 0x00da}, /* U with acute */ + {"Udblac", 0x0170}, /* U with double acute */ + {"Uring", 0x016e}, /* U with ring above */ + {"Uuml", 0x00dc}, /* U with diaeresis */ + {"Yacute", 0x00dd}, /* Y with acute */ + {"Zacute", 0x0179}, /* Z with acute */ + {"Zcaron", 0x017d}, /* Z with caron */ + {"Zdot", 0x017b}, /* Z with dot above */ + {"aacute", 0x00e1}, /* a with acute */ + {"abreve", 0x0103}, /* a with breve */ + {"acirc", 0x00e2}, /* a with circumflex */ + {"acute", 0x00b4}, /* acuteaccent */ + {"amp", 0x0026}, /* ampersand */ + {"aogon", 0x0105}, /* a with ogonek */ + {"apos", 0x0027}, /* apostrophe */ + {"ast", 0x002a}, /* asterisk */ + {"auml", 0x00e4}, /* a with diaeresis */ + {"breve", 0x02d8}, /* breve */ + {"bsol", 0x005c}, /* reversesolidus */ + {"cacute", 0x0107}, /* c with acute */ + {"caron", 0x02c7}, /* caron */ + {"ccaron", 0x010d}, /* c with caron */ + {"ccedil", 0x00e7}, /* c with cedilla */ + {"cedil", 0x00b8}, /* cedilla */ + {"circ", 0x005e}, /* circumflexaccent */ + {"colon", 0x003a}, /* colon */ + {"comma", 0x002c}, /* comma */ + {"commat", 0x0040}, /* commercialat */ + {"curren", 0x00a4}, /* currencysign */ + {"dblac", 0x02dd}, /* doubleacuteaccent */ + {"dcaron", 0x010f}, /* d with caron */ + {"deg", 0x00b0}, /* degreesign */ + {"divide", 0x00f7}, /* divisionsign */ + {"dollar", 0x0024}, /* dollarsign */ + {"dot", 0x02d9}, /* dotabove */ + {"dstrok", 0x0111}, /* d with stroke */ + {"eacute", 0x00e9}, /* e with acute */ + {"ecaron", 0x011b}, /* e with caron */ + {"eogon", 0x0119}, /* e with ogonek */ + {"equals", 0x003d}, /* equalssign */ + {"euml", 0x00eb}, /* e with diaeresis */ + {"excl", 0x0021}, /* exclamationmark */ + {"grave", 0x0060}, /* graveaccent */ + {"gt", 0x003e}, /* greater-thansign */ + {"hyphen", 0x002d}, /* hyphen-minus */ + {"iacute", 0x00ed}, /* i with acute */ + {"icirc", 0x00ee}, /* i with circumflex */ + {"lacute", 0x013a}, /* l with acute */ + {"lcaron", 0x013e}, /* l with caron */ + {"lcub", 0x007b}, /* leftcurlybracket */ + {"lowbar", 0x005f}, /* lowline */ + {"lpar", 0x0028}, /* leftparenthesis */ + {"lrm", 8206}, /* left-to-right mark */ + {"lsqb", 0x005b}, /* leftsquarebracket */ + {"lstrok", 0x0142}, /* l with stroke */ + {"lt", 0x003c}, /* less-thansign */ + {"nacute", 0x0144}, /* n with acute */ + {"nbsp", 0x00a0}, /* no-breakspace */ + {"ncaron", 0x0148}, /* n with caron */ + {"num", 0x0023}, /* numbersign */ + {"oacute", 0x00f3}, /* o with acute */ + {"ocirc", 0x00f4}, /* o with circumflex */ + {"odblac", 0x0151}, /* o with double acute */ + {"ogon", 0x02db}, /* ogonek */ + {"ouml", 0x00f6}, /* o with diaeresis */ + {"percnt", 0x0025}, /* percentsign */ + {"period", 0x002e}, /* fullstop */ + {"plus", 0x002b}, /* plussign */ + {"quest", 0x003f}, /* questionmark */ + {"quot", 0x0022}, /* quotationmark */ + {"racute", 0x0155}, /* r with acute */ + {"rcaron", 0x0159}, /* r with caron */ + {"rcub", 0x007d}, /* rightcurlybracket */ + {"rlm", 8207}, /* right-to-left mark */ + {"rpar", 0x0029}, /* rightparenthesis */ + {"rsqb", 0x005d}, /* rightsquarebracket */ + {"sacute", 0x015b}, /* s with acute */ + {"scaron", 0x0161}, /* s with caron */ + {"scedil", 0x015f}, /* s with cedilla */ + {"sect", 0x00a7}, /* sectionsign */ + {"semi", 0x003b}, /* semicolon */ + {"shy", 0x00ad}, /* softhyphen */ + {"sol", 0x002f}, /* solidus */ + {"tcaron", 0x0165}, /* t with caron */ + {"tcedil", 0x0163}, /* t with cedilla */ + {"tilde", 0x007e}, /* tilde */ + {"times", 0x00d7}, /* multiplicationsign */ + {"uacute", 0x00fa}, /* u with acute */ + {"udblac", 0x0171}, /* u with double acute */ + {"uml", 0x00a8}, /* diaeresis */ + {"uring", 0x016f}, /* u with ring above */ + {"uuml", 0x00fc}, /* u with diaeresis */ + {"verbar", 0x007c}, /* verticalline */ + {"yacute", 0x00fd}, /* y with acute */ + {"zacute", 0x017a}, /* z with acute */ + {"zcaron", 0x017e}, /* z with caron */ + {"zdot", 0x017c}, /* z with dot above */ + {"zwj", 8205}, /* zero width joiner */ + {"zwnj", 8204}, /* zero width non-joiner */ + +}; +#endif /* EXP_CHARTRANS */ /* Attribute Lists ** --------------- @@ -140,6 +303,7 @@ static CONST char* entities[] = { */ static attr a_attr[] = { /* Anchor attributes */ { "ACCESSKEY" }, + { "CHARSET" }, { "CLASS" }, { "CLEAR" }, { "COORDS" }, @@ -989,7 +1153,7 @@ static HTTag tags[HTML_ELEMENTS] = { { "FIG" , fig_attr, HTML_FIG_ATTRIBUTES, SGML_MIXED }, { "FN" , fn_attr, HTML_FN_ATTRIBUTES, SGML_MIXED }, { "FONT" , font_attr, HTML_FONT_ATTRIBUTES, SGML_EMPTY }, - { "FORM" , form_attr, HTML_FORM_ATTRIBUTES, SGML_MIXED }, + { "FORM" , form_attr, HTML_FORM_ATTRIBUTES, SGML_EMPTY }, { "FRAME" , frame_attr, HTML_FRAME_ATTRIBUTES, SGML_EMPTY }, { "FRAMESET", frameset_attr,HTML_FRAMESET_ATTRIBUTES, SGML_MIXED }, { "H1" , h_attr, HTML_H_ATTRIBUTES, SGML_MIXED }, @@ -1064,7 +1228,11 @@ PUBLIC CONST SGML_dtd HTML_dtd = { tags, HTML_ELEMENTS, entities, - sizeof(entities)/sizeof(char**) + sizeof(entities)/sizeof(char*), +#ifdef EXP_CHARTRANS + extra_entities, + sizeof(extra_entities)/sizeof(UC_entity_info), +#endif }; diff --git a/WWW/Library/Implementation/HTMLDTD.h b/WWW/Library/Implementation/HTMLDTD.h index 4f0fd6e3..ef6c5fbb 100644 --- a/WWW/Library/Implementation/HTMLDTD.h +++ b/WWW/Library/Implementation/HTMLDTD.h @@ -158,30 +158,31 @@ Attribute numbers */ #define HTML_A_ACCESSKEY 0 -#define HTML_A_CLASS 1 -#define HTML_A_CLEAR 2 -#define HTML_A_COORDS 3 -#define HTML_A_DIR 4 -#define HTML_A_HREF 5 -#define HTML_A_ID 6 -#define HTML_A_ISMAP 7 -#define HTML_A_LANG 8 -#define HTML_A_MD 9 -#define HTML_A_NAME 10 -#define HTML_A_NOTAB 11 -#define HTML_A_ONCLICK 12 -#define HTML_A_ONMOUSEOUT 13 -#define HTML_A_ONMOUSEOVER 14 -#define HTML_A_REL 15 -#define HTML_A_REV 16 -#define HTML_A_SHAPE 17 -#define HTML_A_STYLE 18 -#define HTML_A_TABINDEX 19 -#define HTML_A_TARGET 20 -#define HTML_A_TITLE 21 -#define HTML_A_TYPE 22 -#define HTML_A_URN 23 -#define HTML_A_ATTRIBUTES 24 +#define HTML_A_CHARSET 1 /* i18n draft, added tentatively - kw */ +#define HTML_A_CLASS 2 +#define HTML_A_CLEAR 3 +#define HTML_A_COORDS 4 +#define HTML_A_DIR 5 +#define HTML_A_HREF 6 +#define HTML_A_ID 7 +#define HTML_A_ISMAP 8 +#define HTML_A_LANG 9 +#define HTML_A_MD 10 +#define HTML_A_NAME 11 +#define HTML_A_NOTAB 12 +#define HTML_A_ONCLICK 13 +#define HTML_A_ONMOUSEOUT 14 +#define HTML_A_ONMOUSEOVER 15 +#define HTML_A_REL 16 +#define HTML_A_REV 17 +#define HTML_A_SHAPE 18 +#define HTML_A_STYLE 19 +#define HTML_A_TABINDEX 20 +#define HTML_A_TARGET 21 +#define HTML_A_TITLE 22 +#define HTML_A_TYPE 23 +#define HTML_A_URN 24 +#define HTML_A_ATTRIBUTES 25 #define HTML_ADDRESS_CLASS 0 #define HTML_ADDRESS_CLEAR 1 diff --git a/WWW/Library/Implementation/HTMLGen.c b/WWW/Library/Implementation/HTMLGen.c index bea63bac..af6794fc 100644 --- a/WWW/Library/Implementation/HTMLGen.c +++ b/WWW/Library/Implementation/HTMLGen.c @@ -243,11 +243,20 @@ PRIVATE void HTMLGen_end_element ARGS3(HTStructured *, me, ** */ -PRIVATE void HTMLGen_put_entity ARGS2(HTStructured *, me, int, entity_number) +PRIVATE int HTMLGen_put_entity ARGS2(HTStructured *, me, int, entity_number) { + int nent = HTML_dtd.number_of_entities; + HTMLGen_put_character(me, '&'); - HTMLGen_put_string(me, HTML_dtd.entity_names[entity_number]); + if (entity_number < nent) + HTMLGen_put_string(me, HTML_dtd.entity_names[entity_number]); +#ifdef EXP_CHARTRANS + else + HTMLGen_put_string(me, + HTML_dtd.extra_entity_info[entity_number-nent].name); +#endif HTMLGen_put_character(me, ';'); + return HT_OK; } diff --git a/WWW/Library/Implementation/HTNews.c b/WWW/Library/Implementation/HTNews.c index 1281d2e4..0de7fb71 100644 --- a/WWW/Library/Implementation/HTNews.c +++ b/WWW/Library/Implementation/HTNews.c @@ -122,7 +122,9 @@ PUBLIC void HTSetNewsHost ARGS1(CONST char *, value) PRIVATE BOOL initialized = NO; PRIVATE BOOL initialize NOARGS { +#ifdef NeXTStep char *cp = NULL; +#endif /* ** Get name of Host. @@ -994,7 +996,7 @@ PRIVATE int read_article NOARGS char *l = line; char *p; - while (p=strstr(l, "rticle <")) { + while ((p = strstr(l, "rticle <")) != 0) { char *q = strchr(p,'>'); char *at = strchr(p, '@'); if (q && at && at<q) { @@ -1642,7 +1644,7 @@ PUBLIC int HTLoadNews ARGS4( BOOL spost_wanted; /* Flag: new SSL post to group was asked for */ BOOL sreply_wanted; /* Flag: followup SSL post was asked for */ int first, last; /* First and last articles asked for */ - char *cp; + char *cp = 0; char *ListArg = NULL; char *ProxyHost = NULL; char *ProxyHREF = NULL; diff --git a/WWW/Library/Implementation/HTParse.c b/WWW/Library/Implementation/HTParse.c index 16f39fc7..350107c2 100644 --- a/WWW/Library/Implementation/HTParse.c +++ b/WWW/Library/Implementation/HTParse.c @@ -63,7 +63,9 @@ PRIVATE void scan ARGS2( { char * after_access; char * p; +#ifdef NOTDEFINED int length = strlen(name); +#endif parts->access = NULL; parts->host = NULL; diff --git a/WWW/Library/Implementation/HTPlain.c b/WWW/Library/Implementation/HTPlain.c index 009f24e7..b23ec0f7 100644 --- a/WWW/Library/Implementation/HTPlain.c +++ b/WWW/Library/Implementation/HTPlain.c @@ -17,6 +17,11 @@ #include "HTStyle.h" #include "HTMLDTD.h" #include "HTCJK.h" +#ifdef EXP_CHARTRANS +#include "UCMap.h" +#include "UCDefs.h" +#include "UCAux.h" +#endif /* EXP_CHARTRANS */ #include "LYLeaks.h" @@ -27,6 +32,9 @@ extern HTStyleSheet * styleSheet; extern int current_char_set; extern char * LYchar_set_names[]; extern CONST char **LYCharSets[]; +#ifdef EXP_CHARTRANS +extern int LYlowest_eightbit[]; +#endif /* EXP_CHARTRANS */ extern CONST char * HTMLGetEntityName PARAMS((int i)); extern BOOL HTPassEightBitRaw; extern BOOL HTPassHighCtrlRaw; @@ -41,8 +49,46 @@ struct _HTStream { CONST HTStreamClass * isa; HText * text; +#ifdef EXP_CHARTRANS + LYUCcharset * UCI; /* pointer to node_anchor's UCInfo */ + int in_char_set; /* tells us what charset we are fed */ + int htext_char_set; /* what charset feed to HText */ + char utf_count; + long utf_char; + char utf_buf[7]; + char * utf_buf_p; + UCTransParams T; +#endif /* EXP_CHARTRANS */ }; +#ifdef EXP_CHARTRANS + +PRIVATE char replace_buf [61]; /* buffer for replacement strings */ + +PRIVATE void htplain_get_chartrans_info ARGS2(HTStream *, me, + HTParentAnchor *, anchor) +{ + if (me->in_char_set < 0) { + HTAnchor_copyUCInfoStage(anchor, UCT_STAGE_PARSER, UCT_STAGE_MIME, + UCT_SETBY_PARSER); + me->in_char_set = HTAnchor_getUCLYhndl(anchor,UCT_STAGE_PARSER); + } + if (me->htext_char_set < 0) { + int chndl = HTAnchor_getUCLYhndl(anchor, UCT_STAGE_HTEXT); + if (chndl < 0) { + chndl = current_char_set; + HTAnchor_setUCInfoStage(anchor, chndl, UCT_STAGE_HTEXT, + UCT_SETBY_DEFAULT); + } + HTAnchor_setUCInfoStage(anchor, chndl, UCT_STAGE_HTEXT, + UCT_SETBY_DEFAULT); + me->htext_char_set = HTAnchor_getUCLYhndl(anchor, + UCT_STAGE_HTEXT); + } + me->UCI = HTAnchor_getUCInfoStage(anchor,UCT_STAGE_PARSER); +} +#endif /* EXP_CHARTRANS */ + /* Write the buffer out to the socket ** ---------------------------------- */ @@ -53,6 +99,15 @@ struct _HTStream { ** A C T I O N R O U T I N E S */ +#ifdef EXP_CHARTRANS + /* for forward reference to HTPlain_write - kw */ +#ifdef _WINDOWS +PRIVATE void HTPlain_write (HTStream * me, CONST char* s, int l); +#else +PRIVATE void HTPlain_write PARAMS((HTStream * me, CONST char* s, int l)); +#endif /* _WINDOWS */ +#endif /* EXP_CHARTRANS */ + /* Character handling ** ------------------ */ @@ -78,6 +133,11 @@ PRIVATE void HTPlain_put_character ARGS2(HTStream *, me, char, c) HTPlain_lastraw = c; if (c == '\r') { HText_appendCharacter(me->text, '\n'); +#ifdef EXP_CHARTRANS + /* for now don't repeat everything here that has been done below - kw*/ + } else if ((unsigned char)c >= 127) { + HTPlain_write(me, &c, 1); +#endif } else if (HTCJK != NOCJK) { HText_appendCharacter(me->text, c); } else if ((unsigned char)c >= 127 && (unsigned char)c < 161 && @@ -93,7 +153,7 @@ PRIVATE void HTPlain_put_character ARGS2(HTStream *, me, char, c) } else if ((unsigned char)c > 160) { if (!HTPassEightBitRaw && strncmp(LYchar_set_names[current_char_set], "ISO Latin 1", 11)) { - int len, high, low, i, diff; + int len, high, low, i, diff=1; CONST char * name; int value = (int)((unsigned char)c - 160); name = HTMLGetEntityName(value); @@ -149,6 +209,11 @@ PRIVATE void HTPlain_write ARGS3(HTStream *, me, CONST char*, s, int, l) { CONST char * p; CONST char * e = s+l; +#ifdef EXP_CHARTRANS + BOOL chk; + long unsign_c, uck; + char c_p; +#endif /* EXP_CHARTRANS */ for (p = s; p < e; p++) { #ifdef REMOVE_CR_ONLY @@ -172,55 +237,187 @@ PRIVATE void HTPlain_write ARGS3(HTStream *, me, CONST char*, s, int, l) HTPlain_lastraw = *p; if (*p == '\r') { HText_appendCharacter(me->text, '\n'); + continue; + } +#ifdef EXP_CHARTRANS + unsign_c = (unsigned char)(*p); + c_p = *p; + + if (me->T.decode_utf8) { + /* Combine UTF-8 into Unicode */ + /* Incomplete characters silently ignored */ + /* from Linux kernel's console.c */ + if((unsigned char)(*p) > 0x7f) { + if (me->utf_count > 0 && (*p & 0xc0) == 0x80) { + me->utf_char = (me->utf_char << 6) | (*p & 0x3f); + me->utf_count--; + *(me->utf_buf_p++) = *p; + if (me->utf_count == 0) { + *(me->utf_buf_p) = '\0'; + unsign_c = me->utf_char; + if (unsign_c<256) c_p = (char)unsign_c; + } + else continue; /* iterate for more */ + } else { + me->utf_buf_p = me->utf_buf; + *(me->utf_buf_p++) = *p; + if ((*p & 0xe0) == 0xc0) { + me->utf_count = 1; + me->utf_char = (*p & 0x1f); + } else if ((*p & 0xf0) == 0xe0) { + me->utf_count = 2; + me->utf_char = (*p & 0x0f); + } else if ((*p & 0xf8) == 0xf0) { + me->utf_count = 3; + me->utf_char = (*p & 0x07); + } else if ((*p & 0xfc) == 0xf8) { + me->utf_count = 4; + me->utf_char = (*p & 0x03); + } else if ((*p & 0xfe) == 0xfc) { + me->utf_count = 5; + me->utf_char = (*p & 0x01); + } else { /* garbage */ + me->utf_count = 0; + me->utf_buf_p = me->utf_buf; + *(me->utf_buf_p) = '\0'; + } + continue; /* iterate for more */ + } + } else { /* got an ASCII char */ + me->utf_count = 0; + me->utf_buf_p = me->utf_buf; + *(me->utf_buf_p) = '\0'; + } + } + + + if (me->T.trans_to_uni && unsign_c >= 127) { + unsign_c = UCTransToUni(c_p, me->in_char_set); + if (unsign_c > 0) { + if (unsign_c < 256) { + c_p = (char)unsign_c; + } + } + } + + /* At this point we have either unsign_c in Unicode + (and c in latin1 if unsign_c is in the latin1 range), + or unsign_c and c will have to be passed raw. */ + +#else +#define unsign_c (unsigned char)*p +#define c_p *p +#endif /* EXP_CHARTRANS */ /* ** If CJK mode is on, we'll assume the document matches ** the user's selected character set, and if not, the ** user should toggle off raw/CJK mode to reload. - FM */ - } else if (HTCJK != NOCJK) { - HText_appendCharacter(me->text, *p); + if (HTCJK != NOCJK) { + HText_appendCharacter(me->text, c_p); + +#ifndef EXP_CHARTRANS +#define PASSHICTRL HTPassHighCtrlRaw +#define PASS8859SPECL HTPassHighCtrlRaw +#define PASSHI8BIT HTPassEightBitRaw +#else +#define PASSHICTRL (me->T.transp || unsign_c >= LYlowest_eightbit[me->in_char_set]) +#define PASS8859SPECL me->T.pass_160_173_raw +#define PASSHI8BIT (HTPassEightBitRaw || (me->T.do_8bitraw && !me->T.trans_from_uni)) +#endif /* EXP_CHARTRANS */ + /* ** If HTPassHighCtrlRaw is set (e.g., for KOI8-R) assume the ** document matches and pass 127-160 8-bit characters. If it ** doesn't match, the user should toggle raw/CJK mode off. - FM */ - } else if ((unsigned char)*p >= 127 && (unsigned char)*p < 161 && - HTPassHighCtrlRaw) { + } else if (unsign_c >= 127 && unsign_c < 161 && + PASSHICTRL && PASS8859SPECL) { + HText_appendCharacter(me->text, *p); + } else if (unsign_c == 173 && PASS8859SPECL) { HText_appendCharacter(me->text, *p); /* ** If neither HTPassHighCtrlRaw nor CJK is set, play it safe ** and treat 160 (nbsp) as an ASCII space (32). - FM */ - } else if ((unsigned char)*p == 160) { + } else if (unsign_c == 160) { HText_appendCharacter(me->text, ' '); /* ** If neither HTPassHighCtrlRaw nor CJK is set, play it safe ** and ignore 173 (shy). - FM */ - } else if ((unsigned char)*p == 173) { + } else if (unsign_c == 173) { continue; +#ifdef EXP_CHARTRANS + } else if (me->T.strip_raw_char_in && + (unsigned char)*p >= 0xc0 && + (unsigned char)*p < 255) { + /* KOI special: strip high bit, gives (somewhat) readable ASCII */ + HText_appendCharacter(me->text, (char)(*p & 0x7f)); +#endif /* EXP_CHARTRANS */ /* ** If we get to here, pass the displayable ASCII characters. - FM */ - } else if (((unsigned char)*p >= 32 && (unsigned char)*p < 127) || + } else if ((unsign_c >= 32 && unsign_c < 127) || +#ifdef EXP_CHARTRANS + (PASSHI8BIT && c_p>=LYlowest_eightbit[me->htext_char_set])|| +#endif *p == '\n' || *p == '\t') { + HText_appendCharacter(me->text, c_p); + +#ifdef EXP_CHARTRANS + } else if (me->T.use_raw_char_in) { HText_appendCharacter(me->text, *p); +/****************************************************************** + * I. LATIN-1 OR UCS2 TO DISPLAY CHARSET + ******************************************************************/ + } else if ((chk = (me->T.trans_from_uni && unsign_c >= 160)) && + (uck = UCTransUniChar(unsign_c, me->htext_char_set)) >= 32 && + uck < 256) { + if (TRACE) + fprintf(stderr,"UCTransUniChar returned 0x%lx:'%c'.\n",uck,(char)uck); + HText_appendCharacter(me->text, (char)(uck & 0xff)); + } else if (chk && (uck == -4) && + /* Not found; look for replacement string */ + (uck = UCTransUniCharStr(replace_buf,60, unsign_c, + me->htext_char_set, 0) >= 0 ) ) { + /* No further tests for valididy - assume that whoever + defined replacement strings knew what she was doing. */ + + HText_appendText(me->text, replace_buf); + + /* + ** If we get to here, and should have translated, translation has + ** failed so far. + */ + } else if (chk && unsign_c > 127 && me->T.output_utf8 && + *me->utf_buf) { + HText_appendText(me->text, me->utf_buf); + me->utf_buf_p = me->utf_buf; + *(me->utf_buf_p) = '\0'; + + + } else if (me->T.trans_from_uni && unsign_c > 255) { + sprintf(replace_buf,"U%.2lx",unsign_c); + HText_appendText(me->text, replace_buf); +#endif /* EXP_CHARTRANS */ + /* ** If we get to here and HTPassEightBitRaw or the ** selected character set is not "ISO Latin 1", ** use the translation tables for 161-255 8-bit ** characters (173 was handled above). - FM */ - } else if ((unsigned char)*p > 160) { - if (!HTPassEightBitRaw && + } else if (unsign_c > 160) { + if (!HTPassEightBitRaw && unsign_c <= 255 && strncmp(LYchar_set_names[current_char_set], "ISO Latin 1", 11)) { /* ** Attempt to translate. - FM */ - int len, high, low, i, diff; + int len, high, low, i, diff=1; CONST char * name; - int value = (int)((unsigned char)*p - 160); + int value = (int)(unsign_c - 160); name = HTMLGetEntityName(value); len = strlen(name); for(low=0, high = HTML_dtd.number_of_entities; @@ -238,15 +435,48 @@ PRIVATE void HTPlain_write ARGS3(HTStream *, me, CONST char*, s, int, l) if (diff) { /* ** Something went wrong in the translation, so - ** pass the raw character and hope it's OK. - FM + ** either output as UTF8 or a hex representation or + ** pass the raw character and hope it's OK. */ - HText_appendCharacter(me->text, *p); +#ifdef EXP_CHARTRANS + if (!PASSHI8BIT) + c_p = (char)unsign_c; + if (me->T.output_utf8 && + *me->utf_buf) { + HText_appendText(me->text, me->utf_buf); + me->utf_buf_p = me->utf_buf; + *(me->utf_buf_p) = '\0'; + + } else if (me->T.trans_from_uni) { + sprintf(replace_buf,"U%.2lx",unsign_c); + HText_appendText(me->text, replace_buf); + } else +#endif /* EXP_CHARTRANS */ + HText_appendCharacter(me->text, c_p); } } else { /* ** Didn't attempt a translation. - FM */ - HText_appendCharacter(me->text, *p); +#ifdef EXP_CHARTRANS + /* either output as UTF8 or a hex representation or + ** pass the raw character and hope it's OK. + */ + if (unsign_c <= 255 && !PASSHI8BIT) + c_p = (char)unsign_c; + if (unsign_c > 127 && + me->T.output_utf8 && + *me->utf_buf) { + HText_appendText(me->text, me->utf_buf); + me->utf_buf_p = me->utf_buf; + *(me->utf_buf_p) = '\0'; + + } else if (me->T.trans_from_uni && unsign_c >= 127) { + sprintf(replace_buf,"U%.2lx",unsign_c); + HText_appendText(me->text, replace_buf); + } else +#endif /* EXP_CHARTRANS */ + HText_appendCharacter(me->text, c_p); } } #endif /* REMOVE_CR_ONLY */ @@ -302,6 +532,20 @@ PUBLIC HTStream* HTPlainPresent ARGS3( HTPlain_lastraw = -1; +#ifdef EXP_CHARTRANS + me->utf_count = 0; + me->utf_char = 0; + me->utf_buf[0] = me->utf_buf[6] = '\0'; + me->utf_buf_p = me->utf_buf; + me->htext_char_set = + HTAnchor_getUCLYhndl(anchor,UCT_STAGE_HTEXT); + me->in_char_set = HTAnchor_getUCLYhndl(anchor,UCT_STAGE_PARSER); + htplain_get_chartrans_info(me, anchor); + UCSetTransParams(&me->T, + me->in_char_set, me->UCI, + me->htext_char_set, + HTAnchor_getUCInfoStage(anchor,UCT_STAGE_HTEXT)); +#endif /* EXP_CHARTRANS */ me->text = HText_new(anchor); HText_setStyle(me->text, HTStyleNamed(styleSheet, "Example")); HText_beginAppend(me->text); diff --git a/WWW/Library/Implementation/HTStyle.c b/WWW/Library/Implementation/HTStyle.c index 5b31e252..480719ea 100644 --- a/WWW/Library/Implementation/HTStyle.c +++ b/WWW/Library/Implementation/HTStyle.c @@ -265,13 +265,13 @@ HTStyleSheet * HTStyleSheetAddStyle ARGS2 HTStyleSheet * HTStyleSheetRemoveStyle ARGS2 (HTStyleSheet *,self, HTStyle *,style) { - if (self->styles = style) { + if (self->styles == style) { self->styles = style->next; return self; } else { HTStyle * scan; for(scan = self->styles; scan; scan = scan->next) { - if (scan->next = style) { + if (scan->next == style) { scan->next = style->next; return self; } diff --git a/WWW/Library/Implementation/HTTCP.c b/WWW/Library/Implementation/HTTCP.c index c8809dc4..710005ab 100644 --- a/WWW/Library/Implementation/HTTCP.c +++ b/WWW/Library/Implementation/HTTCP.c @@ -21,6 +21,7 @@ #include "HTAccess.h" #include "HTParse.h" #include "HTAlert.h" +#include "HTTCP.h" #ifdef NSL_FORK #include <signal.h> @@ -103,18 +104,14 @@ extern int errno; #ifndef VM #ifndef VMS -#ifndef NeXT #ifndef THINK_C -#ifndef __NetBSD__ -#ifndef __FreeBSD__ -#ifndef BSDI + +#ifdef DECL_SYS_ERRLIST extern char *sys_errlist[]; /* see man perror on cernvax */ extern int sys_nerr; -#endif /* BSDI */ -#endif /* !__FreeBSD__ */ -#endif /* !__NetBSD__ */ +#endif /* DECL_SYS_ERRLIST */ + #endif /* !THINK_C */ -#endif /* !NeXT */ #endif /* !VMS */ #endif /* !VM */ @@ -390,6 +387,10 @@ PUBLIC int HTParseInet ARGS2( ** Parse host number if present. */ if (dotcount_ip == 3) { /* Numeric node address: */ + +#ifdef DJGPP + sin->sin_addr.s_addr = htonl(aton(host)); +#else #ifdef DGUX_OLD sin->sin_addr.s_addr = inet_addr(host).s_addr; /* See arpa/inet.h */ #else @@ -399,6 +400,7 @@ PUBLIC int HTParseInet ARGS2( sin->sin_addr.s_addr = inet_addr(host); /* See arpa/inet.h */ #endif /* GUSI */ #endif /* DGUX_OLD */ +#endif /* DJGPP */ FREE(host); } else { /* Alphanumeric node name: */ #ifdef MVS /* Oustanding problem with crash in MVS gethostbyname */ @@ -498,7 +500,16 @@ PUBLIC int HTParseInet ARGS2( #endif /* MVS */ #else /* Not NSL_FORK: */ - +#ifdef DJGPP + sin->sin_addr.s_addr = htonl(resolve(host)); + FREE(host); + if (sin->sin_addr.s_addr == 0) { + if (TRACE) + fprintf(stderr, + "HTTPAccess: Can't find internet node name `%s'.\n",host); + return -1; /* Fail? */ + } +#else phost = gethostbyname(host); /* See netdb.h */ #ifdef MVS if (TRACE) @@ -525,6 +536,7 @@ PUBLIC int HTParseInet ARGS2( #else memcpy((void *)&sin->sin_addr, phost->h_addr, phost->h_length); #endif /* VMS && CMU_TCP */ +#endif /* DJGPP */ #endif /* NSL_FORK */ } @@ -687,6 +699,7 @@ PUBLIC int HTDoConnect ARGS4( return HT_NO_DATA; } +#ifndef DOSPATH #if !defined(NO_IOCTL) || defined(USE_FCNTL) /* ** Make the socket non-blocking, so the connect can be canceled. @@ -702,8 +715,9 @@ PUBLIC int HTDoConnect ARGS4( #endif /* USE_FCNTL */ if (ret == -1) _HTProgress("Could not make connection non-blocking."); -#endif /* !NO_IOCTL || USE_FCNTL */ } +#endif /* !NO_IOCTL || USE_FCNTL */ +#endif /* DOSPATH */ /* ** Issue the connect. Since the server can't do an instantaneous @@ -721,6 +735,7 @@ PUBLIC int HTDoConnect ARGS4( } else #endif /* SOCKS */ status = connect(*s, (struct sockaddr*)&soc_address, sizeof(soc_address)); +#ifndef DJGPP /* ** According to the Sun man page for connect: ** EINPROGRESS The socket is non-blocking and the con- @@ -856,7 +871,7 @@ PUBLIC int HTDoConnect ARGS4( } } } - +#endif /* DJGPP */ if (status < 0) { /* ** The connect attempt failed or was interrupted, @@ -864,6 +879,7 @@ PUBLIC int HTDoConnect ARGS4( */ NETCLOSE(*s); } +#ifndef DOSPATH #if !defined(NO_IOCTL) || defined(USE_FCNTL) else { /* @@ -879,6 +895,7 @@ PUBLIC int HTDoConnect ARGS4( _HTProgress("Could not restore socket to blocking."); } #endif /* !NO_IOCTL || USE_FCNTL */ +#endif /* DOSPATH */ FREE(line); return status; diff --git a/WWW/Library/Implementation/HTTCP.h b/WWW/Library/Implementation/HTTCP.h index 1187c459..b4dab1d6 100644 --- a/WWW/Library/Implementation/HTTCP.h +++ b/WWW/Library/Implementation/HTTCP.h @@ -26,11 +26,13 @@ ** returns a pointer to a static string which must be copied if ** it is to be kept. */ +#ifndef _WINDOWS #ifdef __STDC__ - extern const char * HTInetString(struct sockaddr_in* sin); + extern const char * HTInetString(struct sockaddr_in* mysin); #else extern char * HTInetString(); #endif +#endif /* Encode INET status (as in sys/errno.h) inet_status() @@ -88,7 +90,7 @@ extern unsigned int HTCardinal PARAMS((int *pstatus, ** field is left unchanged in *sin. */ #ifdef __STDC__ - extern int HTParseInet(struct sockaddr_in * sin, CONST char * str); + extern int HTParseInet(struct sockaddr_in * mysin, CONST char * str); /*!! had to change this to get it to compile. CTB */ #else extern int HTParseInet(); diff --git a/WWW/Library/Implementation/HTTP.c b/WWW/Library/Implementation/HTTP.c index e4ad1517..e78870d6 100644 --- a/WWW/Library/Implementation/HTTP.c +++ b/WWW/Library/Implementation/HTTP.c @@ -260,13 +260,13 @@ try_again: strcasecomp(HTAtom_name(pres->rep), "www/compressed")) { if (pres->quality < 1.0) { if (pres->maxbytes > 0) { - sprintf(temp, ";q=%4.3f;mxb=%d", + sprintf(temp, ";q=%4.3f;mxb=%ld", pres->quality, pres->maxbytes); } else { sprintf(temp, ";q=%4.3f", pres->quality); } } else if (pres->maxbytes > 0) { - sprintf(temp, ";mxb=%d", pres->maxbytes); + sprintf(temp, ";mxb=%ld", pres->maxbytes); } else { temp[0] = '\0'; } diff --git a/WWW/Library/Implementation/HTTelnet.c b/WWW/Library/Implementation/HTTelnet.c index a9bf8527..99b91295 100644 --- a/WWW/Library/Implementation/HTTelnet.c +++ b/WWW/Library/Implementation/HTTelnet.c @@ -31,9 +31,13 @@ #include "HTAccess.h" #include "HTAlert.h" -#ifndef VMS +#if !defined (VMS) && !defined (_WINDOWS) #include "../../../userdefs.h" /* for TELNET_COMMAND and RLOGIN_COMMAND */ -#endif /* not VMS */ +#endif /* not VMS or _WINDOWS */ + +#ifdef _WINDOWS /* ../../.. doesn't work for me WB */ +#include "userdefs.h" /* for TELNET_COMMAND and RLOGIN_COMMAND */ +#endif #include "LYLeaks.h" @@ -158,7 +162,7 @@ PRIVATE int remote_session ARGS2(char *, access, char *, host) #endif /* Most unix machines suppport username only with rlogin */ -#if defined(unix) +#if defined(unix) || defined(DOSPATH) #ifndef TELNET_DONE if (login_protocol == rlogin) { sprintf(command, "%s %s%s%s", RLOGIN_COMMAND, diff --git a/WWW/Library/Implementation/HTUU.c b/WWW/Library/Implementation/HTUU.c index 68cad23b..4e6bcf4f 100644 --- a/WWW/Library/Implementation/HTUU.c +++ b/WWW/Library/Implementation/HTUU.c @@ -130,7 +130,7 @@ PUBLIC int HTUU_decode ARGS3(char *, bufcoded, int, outbufsize) { /* single character decode */ -#define DEC(c) pr2six[c] +#define DEC(c) pr2six[(int)c] #define MAXVAL 63 static int first = 1; diff --git a/WWW/Library/Implementation/HTUtils.h b/WWW/Library/Implementation/HTUtils.h index 5267a7c2..2c5576b5 100644 --- a/WWW/Library/Implementation/HTUtils.h +++ b/WWW/Library/Implementation/HTUtils.h @@ -9,15 +9,146 @@ #ifndef DEBUG #define DEBUG /* Noone ever turns this off as trace is too important */ -#endif /* Keeep option for really small memory applications tho */ +#endif /* Keep option for really small memory applications tho */ #ifndef HTUTILS_H #define HTUTILS_H +#ifdef HAVE_CONFIG_H +#include <lynx_cfg.h> /* generated by autoconf 'configure' script */ +#else + +/* Explicit system-configure */ +#ifdef VMS +#define NO_SIZECHANGE +#endif + +/* FIXME: these will be removed after completing auto-configure script */ + +#ifdef _IBMR2 +#define USE_DIRENT /* sys V style directory open */ +#endif /* _IBMR2 */ + +#ifdef _SYSV3 +#include <fcntl.h> +#define USE_DIRENT /* sys V style directory open */ +#endif /* _SYSV3 */ + +/* Solaris. */ +#if defined(sun) && defined(__svr4__) && !defined(USE_DIRENT) +#define USE_DIRENT /* sys V style directory open */ +#endif /* sun && __svr4__ && !USE_DIRENT */ + +#ifdef __alpha +#define USE_DIRENT +#endif /* __alpha */ + +#ifndef USE_DIRENT +#ifdef SVR4 +#define USE_DIRENT +#endif /* SVR4 */ +#endif /* !USE_DIRENT */ + +#ifndef SOLARIS2 +#include <string.h> /* For bzero etc */ +#endif /* !SOLARIS2 */ + +#ifdef SCO +#define sco +#endif /* SCO */ +#ifdef sco +#include <sys/fcntl.h> +#define USE_DIRENT +#endif /* sco */ + +/* +Intergraph CLIX + */ +#ifdef CLIX +#include <sys/fcntl.h> +#define USE_DIRENT +#endif /* CLIX */ + +#ifdef ISC +#ifndef NO_UNISTD_H +#include <sys/unistd.h> +#endif /* !NO_UNISTD_H */ +#else +#if !defined(NO_UNISTD_H) && !defined(VMS) +#include <unistd.h> +#endif /* !NO_UNISTD_H && !VMS */ +#endif /* ISC */ + +#if defined(SVR4) || defined(UNIXWARE) +#include <sys/fcntl.h> +#ifndef NO_FILIO_H /* BSD Interactive doesn't have filio.h. */ +#include <sys/filio.h> +#endif /* !NO_FILIO_H */ +#endif /* SVR4 || UNIXWARE */ + +/* +SOLARIS 2 + */ +#ifdef SOLARIS2 +#include <sys/filio.h> +#endif /* SOLARIS2 */ + +#ifndef NO_FILIO_H +#define NO_FILIO_H /* prevent conflict between autoconf & BSDI make */ +#endif + +/* Accommodate pre-autoconf Makefile */ + +#ifndef NO_CBREAK +#define HAVE_CBREAK 1 +#endif + +#ifndef NO_CUSERID +#define HAVE_CUSERID 1 +#endif + +#ifndef NO_FILIO_H +#define HAVE_SYS_FILIO_H 1 +#endif + +#ifndef NO_GETCWD +#define HAVE_GETCWD 1 +#endif + +#ifndef NO_KEYPAD +#define HAVE_KEYPAD 1 +#endif + +#ifndef NO_PUTENV +#define HAVE_PUTENV 1 +#endif + +#ifndef NO_SIZECHANGE +#define HAVE_SIZECHANGE 1 +#endif + +#ifndef NO_TTYTYPE +#define HAVE_TTYTYPE 1 +#endif + +#ifndef NO_UNISTD_H +#define HAVE_UNISTD_H 1 +#endif + +#ifndef NO_UTMP +#define HAVE_UTMP 1 +#endif + +#endif + #ifdef _WINDOWS /* SCW */ #include "windef.h" #define BOOLEAN_DEFINED -#endif +#define va_arg +#include <dos.h> +#define popen _popen +#define pclose _pclose +#endif /* _WINDOWS */ #ifdef SHORT_NAMES #define WWW_TraceFlag HTTrFlag @@ -265,18 +396,6 @@ Out Of Memory checking for malloc() return: LYOutOfMemory = TRUE; exit(-1);} /* extern void outofmem PARAMS((const char *fname, const char *func)); */ - -/* - - WHO PUT THESE IN AND WHAT ARE THEY ANYWAY? - - */ -#ifdef THEY_WILL_BE_REMOVED -extern void msg_init PARAMS((int height)); -extern void msg_printf PARAMS((int y, const char *fmt, ...)); -extern void msg_exit PARAMS((int wait_for_key)); -#endif - /* Upper- and Lowercase macros diff --git a/WWW/Library/Implementation/LYexit.h b/WWW/Library/Implementation/LYexit.h index 4d7ca529..7007d615 100644 --- a/WWW/Library/Implementation/LYexit.h +++ b/WWW/Library/Implementation/LYexit.h @@ -25,6 +25,10 @@ /* * Constant defines */ +#ifdef _WINDOWS +#undef exit +#endif /* _WINDOWS */ + #define exit LYexit #define atexit LYatexit #define ATEXITSIZE 32 @@ -46,7 +50,7 @@ */ extern void LYexit PARAMS((int status)); #ifdef __STDC__ -extern int LYatexit(void (*function)()); +extern int LYatexit(void (*function)(void)); #else extern int LYatexit(); #endif /* __STDC__ */ diff --git a/WWW/Library/Implementation/SGML.c b/WWW/Library/Implementation/SGML.c index c20801f6..7cfbd68d 100644 --- a/WWW/Library/Implementation/SGML.c +++ b/WWW/Library/Implementation/SGML.c @@ -21,6 +21,12 @@ #include "LYLeaks.h" +#ifdef EXP_CHARTRANS +#include "UCMap.h" +#include "UCDefs.h" +#include "UCAux.h" +#endif + #define INVALID (-1) #define FREE(x) if (x) {free(x); x = NULL;} @@ -103,10 +109,80 @@ struct _HTStream { char * url; char * csi; int csi_index; +#ifdef EXP_CHARTRANS + HTParentAnchor * node_anchor; + LYUCcharset * UCI; /* pointer into anchor's UCInfo */ + int in_char_set; /* tells us what charset we are fed */ + LYUCcharset * htmlUCI; /* pointer into anchor's UCInfo for target*/ + int html_char_set; /* tells us what we feed to target stream */ + char utf_count; + long utf_char; + char utf_buf[7]; + char * utf_buf_p; + UCTransParams T; +#endif /* EXP_CHARTRANS */ } ; +#ifdef EXP_CHARTRANS + +PRIVATE void set_chartrans_handling ARGS3( + HTStream *, context, + HTParentAnchor *, anchor, + int, chndl) +{ + extern int current_char_set; + + if (chndl < 0) { + chndl = HTAnchor_getUCLYhndl(anchor, UCT_STAGE_STRUCTURED); + if (chndl < 0) + chndl = HTAnchor_getUCLYhndl(anchor, UCT_STAGE_HTEXT); + if (chndl < 0) + chndl = current_char_set; + HTAnchor_setUCInfoStage(anchor, chndl, UCT_STAGE_HTEXT, + UCT_SETBY_DEFAULT); + HTAnchor_setUCInfoStage(anchor, chndl, UCT_STAGE_STRUCTURED, + UCT_SETBY_DEFAULT); + context->htmlUCI = HTAnchor_getUCInfoStage( + anchor,UCT_STAGE_STRUCTURED); + context->html_char_set = HTAnchor_getUCLYhndl( + context->node_anchor,UCT_STAGE_STRUCTURED); + } + UCSetTransParams(&context->T, + context->in_char_set, context->UCI, + context->html_char_set, context->htmlUCI); +} + +PRIVATE void change_chartrans_handling ARGS1( + HTStream *, context) +{ + int new_LYhndl = HTAnchor_getUCLYhndl(context->node_anchor, + UCT_STAGE_PARSER); + if (new_LYhndl != context->in_char_set && + new_LYhndl >= 0) { /* something changed. but ignore if a META + wants an unknown charset. */ + LYUCcharset * new_UCI = HTAnchor_getUCInfoStage(context->node_anchor, + UCT_STAGE_PARSER); + if (new_UCI) { + LYUCcharset * next_UCI = HTAnchor_getUCInfoStage( + context->node_anchor,UCT_STAGE_STRUCTURED); + int next_LYhndl = HTAnchor_getUCLYhndl( + context->node_anchor,UCT_STAGE_STRUCTURED); + context->UCI = new_UCI; + context->in_char_set = new_LYhndl; + context->htmlUCI = next_UCI; + context->html_char_set = next_LYhndl; + set_chartrans_handling(context, context->node_anchor, next_LYhndl); + } + } +} +#endif /* EXP_CHARTRANS */ + #define PUTC(ch) ((*context->actions->put_character)(context->target, ch)) +#ifdef EXP_CHARTRANS +#define PUTUTF8(code) (UCPutUtf8_charstring((HTStream *)context->target, \ + (putc_func_t*)(context->actions->put_character), code)) +#endif extern BOOL historical_comments; extern BOOL minimal_comments; @@ -163,6 +239,32 @@ PRIVATE void handle_attribute_value ARGS2( context->current_attribute_number = INVALID; /* can't have two assignments! */ } +#ifdef EXP_CHARTRANS +/* translate some Unicodes to Lynx special codes and output them. */ +PRIVATE BOOL put_special_unicodes ARGS2( + HTStream *, context, + long, code) +{ + if (code == 160) { + PUTC(1); + } else if (code==173) { + PUTC(7); + } else if (code == 8194 || code == 8195 || code == 8201) { + /* + ** ensp, emsp or thinsp. + */ + PUTC(2); + } else if (code == 8211 || code == 8212) { + /* + ** ndash or mdash. + */ + PUTC('-'); + } else { + return NO; /* return NO if nothing done */ + } + return YES; /* we have handled it */ +} +#endif /* Handle entity ** ------------- @@ -175,8 +277,14 @@ PRIVATE void handle_attribute_value ARGS2( ** Bug-fix: ** Modified SGML_character() so we only come here with terminator ** as '\0' and check a FoundEntity flag. -- Foteos Macrides +** +** Modified more (for use with CHARTRANS): */ +#ifdef EXP_CHARTRANS +PRIVATE char replace_buf [61]; /* buffer for replacement strings */ +#endif + PRIVATE BOOL FoundEntity = FALSE; PRIVATE void handle_entity ARGS2( @@ -184,6 +292,11 @@ PRIVATE void handle_entity ARGS2( char, term) { CONST char ** entities = context->dtd->entity_names; +#ifdef EXP_CHARTRANS + CONST UC_entity_info * extra_entities = context->dtd->extra_entity_info; + extern int current_char_set; + int rc; +#endif CONST char *s = context->string->data; int high, low, i, diff; @@ -223,6 +336,48 @@ PRIVATE void handle_entity ARGS2( return; } } +#ifdef EXP_CHARTRANS + /* repeat for extra entities if not found... hack... -kw */ + if (TRACE) + fprintf(stderr, "SGML: Unknown entity %s so far, checking extra...\n", s); + for (low = 0, high = context->dtd->number_of_extra_entities; + high > low; + diff < 0 ? (low = i+1) : (high = i)) { /* Binary serach */ + i = (low + (high-low)/2); + diff = strcmp(extra_entities[i].name, s); /* Case sensitive! */ + if (diff==0) { /* success: found it */ + if (put_special_unicodes(context, extra_entities[i].code)) { + FoundEntity = TRUE; + return; + } else if (context->T.output_utf8 && + PUTUTF8(extra_entities[i].code)) { + FoundEntity = TRUE; + return; + } + if ((rc = UCTransUniChar(extra_entities[i].code,current_char_set)) + > 0) { /* Could do further checks here... -kw */ + PUTC(rc); + FoundEntity = TRUE; + return; + } else if ((rc == -4) && /* Not found; look for replacement string */ + (rc = UCTransUniCharStr(replace_buf,60, + extra_entities[i].code, + current_char_set, 0) >= 0 ) ) { + CONST char *p; + for (p=replace_buf; *p; p++) + PUTC(*p); + FoundEntity = TRUE; + return; + } + rc = (*context->actions->put_entity)(context->target, + i+context->dtd->number_of_entities); + if (rc != HT_CANNOT_TRANSLATE) { + FoundEntity = TRUE; + return; + } + } + } +#endif /* ** If entity string not found, display as text. */ @@ -430,6 +585,11 @@ PRIVATE void start_element ARGS1( N->tag = new_tag; context->element_stack = N; } +#ifdef EXP_CHARTRANS + else { /* check for result of META tag. */ + change_chartrans_handling(context); + } +#endif /* EXP_CHARTRANS */ } @@ -475,7 +635,6 @@ PUBLIC void SGML_free ARGS1( { int i; HTElement * cur; - HTElement * next; HTTag * t; /* @@ -567,7 +726,7 @@ PUBLIC void SGML_setCallerData ARGS2( PUBLIC void SGML_character ARGS2( HTStream *, context, - char, c) + char, c_in) { CONST SGML_dtd *dtd = context->dtd; HTChunk *string = context->string; @@ -576,12 +735,114 @@ PUBLIC void SGML_character ARGS2( extern char *LYchar_set_names[]; extern CONST char * HTMLGetEntityName PARAMS((int i)); +#ifdef EXP_CHARTRANS + extern int LYlowest_eightbit[]; + char * p; + BOOLEAN chk; /* helps (?) walk through all the else ifs... */ + long clong,uck; /* enough bits for UCS4 ... */ + char c; + char saved_char_in = '\0'; + + /* Now some fun with the preprocessor... + for EXP_CHARTRANS, use copies for c an unsign_c==clong, so that we + can revert back to the unchanged c_in. + if EXP_CHARTRANS is undefined, these all are the same variable. */ +#define unsign_c clong + +#else +#define c c_in +#define unsign_c (unsigned char)c +#endif + +#ifdef EXP_CHARTRANS + c = c_in; + clong = (unsigned char)c; /* a.k.a. unsign_c */ + + if (context->T.decode_utf8) { + /* Combine UTF-8 into Unicode */ + /* Incomplete characters silently ignored */ + /* from Linux kernel's console.c */ + if((unsigned char)c > 0x7f) { + if (context->utf_count > 0 && (c & 0xc0) == 0x80) { + context->utf_char = (context->utf_char << 6) | (c & 0x3f); + context->utf_count--; + *(context->utf_buf_p++) = c; + if (context->utf_count == 0) { + *(context->utf_buf_p) = '\0'; + clong = context->utf_char; + if (clong<256) c = (char)clong; + goto top1; + } + else return; /* wait for more */ + } else { + context->utf_buf_p = context->utf_buf; + *(context->utf_buf_p++) = c; + if ((c & 0xe0) == 0xc0) { + context->utf_count = 1; + context->utf_char = (c & 0x1f); + } else if ((c & 0xf0) == 0xe0) { + context->utf_count = 2; + context->utf_char = (c & 0x0f); + } else if ((c & 0xf8) == 0xf0) { + context->utf_count = 3; + context->utf_char = (c & 0x07); + } else if ((c & 0xfc) == 0xf8) { + context->utf_count = 4; + context->utf_char = (c & 0x03); + } else if ((c & 0xfe) == 0xfc) { + context->utf_count = 5; + context->utf_char = (c & 0x01); + } else { /* garbage */ + context->utf_count = 0; + context->utf_buf_p = context->utf_buf; + *(context->utf_buf_p) = '\0'; + } + return; /* wait for more */ + } + } else { /* got an ASCII char */ + context->utf_count = 0; + context->utf_buf_p = context->utf_buf; + *(context->utf_buf_p) = '\0'; + /* goto top; */ + } + } + + if (context->T.strip_raw_char_in) + saved_char_in = c; + + if (context->T.trans_to_uni && unsign_c >= 127) { + clong = UCTransToUni(c, context->in_char_set); + if (clong > 0) { + saved_char_in = c; + if (clong < 256) { + c = (char)clong; + } + } + goto top1; + } else { + goto top0a; + } + + /* At this point we have either unsign_c a.k.a. clong in Unicode + (and c in latin1 if clong is in the latin1 range), + or unsign_c and c will have to be passed raw. */ + +#endif /* EXP_CHARTRANS */ + + top: +#ifdef EXP_CHARTRANS + saved_char_in = '\0'; +top0a: + *(context->utf_buf) = '\0'; + clong = (unsigned char)c; +#endif +top1: /* ** Ignore low ISO 646 7-bit control characters ** if HTCJK is not set. - FM */ - if ((unsigned char)c < 32 && + if (unsign_c < 32 && c != 9 && c != 10 && c != 13 && HTCJK == NOCJK) return; @@ -590,16 +851,21 @@ top: ** Ignore 127 if we don't have HTPassHighCtrlRaw ** or HTCJK set. - FM */ +#ifndef EXP_CHARTRANS +#define PASSHICTRL HTPassHighCtrlRaw +#else +#define PASSHICTRL (context->T.transp || unsign_c >= LYlowest_eightbit[context->in_char_set]) +#endif /* EXP_CHARTRANS */ if (c == 127 && - !(HTPassHighCtrlRaw || HTCJK != NOCJK)) + !(PASSHICTRL || HTCJK != NOCJK)) return; /* ** Ignore 8-bit control characters 128 - 159 if ** neither HTPassHighCtrlRaw nor HTCJK is set. - FM */ - if ((unsigned char)c > 127 && (unsigned char)c < 160 && - !(HTPassHighCtrlRaw || HTCJK != NOCJK)) + if (unsign_c > 127 && unsign_c < 160 && + !(PASSHICTRL || HTCJK != NOCJK)) return; /* @@ -630,7 +896,7 @@ top: PUTC(c); break; } - if (c == '&' && (!context->element_stack || + if (c == '&' && unsign_c < 127 && (!context->element_stack || (context->element_stack->tag && (context->element_stack->tag->contents == SGML_MIXED || @@ -641,7 +907,7 @@ top: */ string->size = 0; context->state = S_ero; - } else if (c == '<') { + } else if (c == '<' && unsign_c < 127) { /* ** Setting up for possible tag. - FM */ @@ -651,35 +917,74 @@ top: context->element_stack->tag->contents == SGML_LITTERAL) ? S_litteral : S_tag; +#ifndef EXP_CHARTRANS +#define PASS8859SPECL HTPassHighCtrlRaw +#else +#define PASS8859SPECL context->T.pass_160_173_raw +#endif /* EXP_CHARTRANS */ /* ** Convert 160 (nbsp) to Lynx special character if ** neither HTPassHighCtrlRaw nor HTCJK is set. - FM */ - } else if ((unsigned char)c == 160 && - !(HTPassHighCtrlRaw || HTCJK != NOCJK)) { + } else if (unsign_c == 160 && + !(PASS8859SPECL || HTCJK != NOCJK)) { PUTC(1); /* ** Convert 173 (shy) to Lynx special character if ** neither HTPassHighCtrlRaw nor HTCJK is set. - FM */ - } else if ((unsigned char)c == 173 && - !(HTPassHighCtrlRaw || HTCJK != NOCJK)) { + } else if (unsign_c == 173 && + !(PASS8859SPECL || HTCJK != NOCJK)) { PUTC(7); + +#ifdef EXP_CHARTRANS + } else if (context->T.use_raw_char_in && saved_char_in) { + /* only if the original character is still in saved_char_in, + otherwise we may be iterating from a goto top */ + PUTC(saved_char_in); + saved_char_in = '\0'; +/****************************************************************** + * I. LATIN-1 OR UCS2 TO DISPLAY CHARSET + ******************************************************************/ + } else if ((chk = (context->T.trans_from_uni && unsign_c >= 160)) && + (uck = UCTransUniChar(unsign_c, context->html_char_set)) >= 32 && + uck < 256) { + if (TRACE) + fprintf(stderr,"UCTransUniChar returned 0x%lx:'%c'.\n",uck,(char)uck); + c = (char)(uck & 0xff); + PUTC(c); + } else if (chk && (uck == -4) && + /* Not found; look for replacement string */ + (uck = UCTransUniCharStr(replace_buf,60, clong, + context->html_char_set, 0) >= 0 ) ) { + CONST char *p; + /* No further tests for valididy - assume that whoever + defined replacement strings knew what she was doing. */ + + for (p=replace_buf; *p; p++) + PUTC(*p); +#endif /* EXP_CHARTRANS */ + /* ** If it's any other (> 160) 8-bit chararcter, and ** we have not set HTPassEightBitRaw nor HTCJK, nor ** have the "ISO Latin 1" character set selected, ** back translate for our character set. - FM */ - } else if ((unsigned char)c > 160 && - !(HTPassEightBitRaw || HTCJK != NOCJK) && +#ifndef EXP_CHARTRANS +#define PASSHI8BIT HTPassEightBitRaw +#else +#define PASSHI8BIT (HTPassEightBitRaw || (context->T.do_8bitraw && !context->T.trans_from_uni)) +#endif /* EXP_CHARTRANS */ + } else if (unsign_c > 160 && unsign_c < 256 && + !(PASSHI8BIT || HTCJK != NOCJK) && strncmp(LYchar_set_names[current_char_set], "ISO Latin 1", 11)) { int i; int value; string->size = 0; - value = (int)((unsigned char)c - 160); + value = (int)(unsign_c - 160); EntityName = HTMLGetEntityName(value); for (i = 0; EntityName[i]; i++) HTChunkPutc(string, EntityName[i]); @@ -688,6 +993,37 @@ top: string->size = 0; if (!FoundEntity) PUTC(';'); +#ifdef EXP_CHARTRANS + /* + ** If we get to here and have an ASCII char, pass the character. + */ + } else if (unsign_c < 127 && unsign_c > 0) { + PUTC(c); + /* + ** If we get to here, and should have translated, translation has + ** failed so far. + */ + } else if (context->T.output_utf8 && + *context->utf_buf) { + for (p=context->utf_buf; *p; p++) + PUTC(*p); + context->utf_buf_p = context->utf_buf; + *(context->utf_buf_p) = '\0'; + + } else if (context->T.strip_raw_char_in && saved_char_in && + ((unsigned char)saved_char_in >= 0xc0) && + ((unsigned char)saved_char_in < 255)) { + /* KOI8 special: strip high bit, gives (somewhat) readable ASCII + or KOI7 - it was constructed that way! */ + PUTC((char)(saved_char_in & 0x7f)); + saved_char_in = '\0'; + + } else if ((unsigned char)c<LYlowest_eightbit[context->html_char_set] + || (context->T.trans_from_uni && !HTPassEightBitRaw)) { + sprintf(replace_buf,"U%.2lx",unsign_c); + for (p=replace_buf; *p; p++) + PUTC(*p); +#endif /* EXP_CHARTRANS */ /* ** If we get to here, pass the character. - FM */ @@ -746,7 +1082,7 @@ top: ** Handle possible named entity. */ case S_entity: - if ((unsigned char)c < 127 && isalnum((unsigned char)c)) { + if (unsign_c < 127 && isalnum((unsigned char)c)) { /* ** Accept valid ASCII character. - FM */ @@ -758,7 +1094,7 @@ top: */ PUTC('&'); context->state = S_text; - goto top; + goto top1; } else { /* ** Terminate entity name and try to handle it. - FM @@ -774,7 +1110,7 @@ top: ** not the "standard" semi-colon for HTML. - FM */ if (!FoundEntity || c != ';') - goto top; + goto top1; } break; @@ -782,7 +1118,7 @@ top: ** Handle possible numeric entity. */ case S_cro: - if ((unsigned char)c < 127 && isdigit((unsigned char)c)) { + if (unsign_c < 127 && isdigit((unsigned char)c)) { /* ** Accept only valid ASCII digits. - FM */ @@ -795,8 +1131,8 @@ top: PUTC('&'); PUTC('#'); context->state = S_text; - goto top; - } else if ((unsigned char)c > 127 || isalnum((unsigned char)c)) { + goto top1; + } else if (unsign_c > 127 || isalnum((unsigned char)c)) { /* ** We have digit(s), but not a valid terminator, ** so recover the "&#" and digit(s) and recycle @@ -809,7 +1145,7 @@ top: PUTC(string->data[i]); string->size = 0; context->state = S_text; - goto top; + goto top1; } else { /* ** Terminate the numeric entity and try to handle it. - FM @@ -817,6 +1153,40 @@ top: int value, i; HTChunkTerminate(string); if (sscanf(string->data, "%d", &value) == 1) { +#ifdef EXP_CHARTRANS + if (value==160) { + /* we *always* should interpret this as Latin1 here! */ + PUTC(1); + string->size = 0; + context->state = S_text; + if (c != ';') + goto top1; + break; + } + if ((uck = UCTransUniChar(value,current_char_set)) >= 32 && + uck < 256 && + (uck < 127 || + uck >= LYlowest_eightbit[context->html_char_set]) + ) { + if (uck==160 && current_char_set==0) + PUTC(1); /* would only happen if some other unicode + is mapped to Latin-1 160 */ + else if (uck==173 && current_char_set==0) + PUTC(7); /* would only happen if some other unicode + is mapped to Latin-1 173 */ + else + PUTC(FROMASCII((char)uck)); + } else + if ((uck == -4) && /* Not found; look for replacement string */ + (uck = UCTransUniCharStr(replace_buf,60,value, + current_char_set, 0) >= 0 ) ) { + for (p=replace_buf; *p; p++) + PUTC(*p); + } else if (context->T.output_utf8 && + PUTUTF8(value)) { + /* do nothing more */ ; + } else +#endif /* EXP_CHARTRANS */ if (value == 8482) { /* ** trade Handle as named entity. - FM @@ -828,8 +1198,8 @@ top: HTChunkPutc(string, 'd'); HTChunkPutc(string, 'e'); context->state = S_entity; - goto top; - } + goto top1; + } else /* ** Show the numeric entity if the value: ** (1) Is greater than 255 (until we support Unicode). @@ -871,7 +1241,7 @@ top: PUTC(string->data[i]); string->size = 0; context->state = S_text; - goto top; + goto top1; } } else if (value == 160) { /* @@ -921,7 +1291,7 @@ top: PUTC(string->data[i]); string->size = 0; context->state = S_text; - goto top; + goto top1; } } /* @@ -934,7 +1304,7 @@ top: ** the "standard" semi-colon for HTML. - FM */ if (c != ';') - goto top; + goto top1; } else { /* ** Not an entity, and don't know why not, so add the @@ -963,7 +1333,7 @@ top: ** Tag */ case S_tag: /* new tag */ - if ((unsigned char)c < 127 && isalnum((unsigned char)c)) { + if (unsign_c < 127 && isalnum((unsigned char)c)) { /* ** Add valid ASCII character. - FM */ @@ -985,7 +1355,7 @@ top: */ context->state = S_text; PUTC('<'); - goto top; + goto top1; } else { /* End of tag name */ /* ** Try to handle tag. - FM @@ -1436,7 +1806,7 @@ top: string->size = 0; context->state = S_tag_gap; if (c == '>') /* We emulated the Netscape bug, so we go */ - goto top; /* back and treat it as the tag terminator */ + goto top1; /* back and treat it as the tag terminator */ } else if (c == '\033') { /* ** Setting up for possible double quotes in CJK escape @@ -1450,7 +1820,7 @@ top: break; case S_end: /* </ */ - if ((unsigned char)c < 127 && isalnum((unsigned char)c)) + if (unsign_c < 127 && isalnum((unsigned char)c)) HTChunkPutc(string, c); else { /* End of end tag name */ HTTag * t=0; @@ -1554,6 +1924,29 @@ top: context->state = S_text; } break; + } else if (tag_OK && + !strcasecomp(string->data, "FORM")) { + /* + ** Handle a FORM end tag. We declared FORM + ** as SGML_EMPTY to prevent "expected tag + ** substitution" and avoid throwing the + ** HTML.c stack out of whack (Wow, what + ** a hack! 8-). - FM + */ + if (TRACE) + fprintf(stderr, "SGML: End </%s>\n", string->data); + (*context->actions->end_element) + (context->target, + (context->current_tag - context->dtd->tags), + (char **)&context->include); + string->size = 0; + context->current_attribute_number = INVALID; + if (c != '>') { + context->state = S_junk_tag; + } else { + context->state = S_text; + } + break; } else { /* ** Handle all other end tags normally. - FM @@ -1814,8 +2207,9 @@ PUBLIC CONST HTStreamClass SGMLParser = ** */ -PUBLIC HTStream* SGML_new ARGS2( +PUBLIC HTStream* SGML_new ARGS3( CONST SGML_dtd *, dtd, + HTParentAnchor *, anchor, HTStructured *, target) { int i; @@ -1851,6 +2245,26 @@ PUBLIC HTStream* SGML_new ARGS2( context->url = NULL; context->csi = NULL; context->csi_index = 0; +#ifdef EXP_CHARTRANS + context->node_anchor = anchor; /*only for chartrans info. could be NULL? */ + + context->utf_count = 0; + context->utf_char = 0; + context->utf_buf[0] = context->utf_buf[6] = '\0'; + context->utf_buf_p = context->utf_buf; + + UCTransParams_clear(&context->T); + context->in_char_set = + HTAnchor_getUCLYhndl(anchor, UCT_STAGE_PARSER); + if (context->in_char_set < 0) { + HTAnchor_copyUCInfoStage(anchor, UCT_STAGE_PARSER, UCT_STAGE_MIME, + -1); + context->in_char_set = + HTAnchor_getUCLYhndl(anchor, UCT_STAGE_PARSER); + } + context->UCI=HTAnchor_getUCInfoStage(anchor, UCT_STAGE_PARSER); + set_chartrans_handling(context, anchor, -1); +#endif /* EXP_CHARTRANS */ return context; } diff --git a/WWW/Library/Implementation/SGML.h b/WWW/Library/Implementation/SGML.h index 5fa799d5..7ab47c82 100644 --- a/WWW/Library/Implementation/SGML.h +++ b/WWW/Library/Implementation/SGML.h @@ -24,6 +24,7 @@ #include "HTUtils.h" #endif /* HTUTILS_H */ #include "HTStream.h" +#include "HTAnchor.h" /* @@ -77,11 +78,22 @@ struct _tag{ ** ** Not the whole DTD, but all this parser usues of it. */ +#ifdef EXP_CHARTRANS +typedef struct { + char* name; + long code; +} UC_entity_info; +#endif + typedef struct { HTTag * tags; /* Must be in strcmp order by name */ int number_of_tags; CONST char ** entity_names; /* Must be in strcmp order by name */ int number_of_entities; +#ifdef EXP_CHARTRANS + CONST UC_entity_info * extra_entity_info; /* strcmp order by name */ + int number_of_extra_entities; +#endif } SGML_dtd; @@ -149,7 +161,7 @@ typedef struct _HTStructuredClass{ int element_number, char ** include)); - void (*put_entity) PARAMS(( + int (*put_entity) PARAMS(( HTStructured* me, int entity_number)); @@ -182,6 +194,7 @@ Create an SGML parser extern HTStream* SGML_new PARAMS(( CONST SGML_dtd * dtd, + HTParentAnchor * anchor, HTStructured * target)); extern CONST HTStreamClass SGMLParser; diff --git a/WWW/Library/Implementation/UCAux.h b/WWW/Library/Implementation/UCAux.h new file mode 100644 index 00000000..0094595d --- /dev/null +++ b/WWW/Library/Implementation/UCAux.h @@ -0,0 +1,41 @@ +#ifndef UCAUX_H +#define UCAUX_H + +extern BOOL UCCanUniTranslateFrom PARAMS((int from)); +extern BOOL UCCanTranslateUniTo PARAMS((int to)); +extern BOOL UCCanTranslateFromTo PARAMS((int from, int to)); + +struct _UCTransParams +{ + BOOL transp, do_cjk, decode_utf8, output_utf8, + use_raw_char_in, strip_raw_char_in, + pass_160_173_raw, do_8bitraw, + trans_to_uni, trans_from_uni; +}; +typedef struct _UCTransParams UCTransParams; + +extern void UCSetTransParams PARAMS(( + UCTransParams * pT, + int cs_in, + CONST LYUCcharset * p_in, + int cs_out, + CONST LYUCcharset * p_out)); + +extern void UCTransParams_clear PARAMS(( + UCTransParams * pT)); + +#ifndef HTSTREAM_H +#include "HTStream.h" +#endif + +typedef void + putc_func_t PARAMS(( + HTStream* me, + char ch)); + +extern BOOL UCPutUtf8_charstring PARAMS(( + HTStream * target, + putc_func_t * actions, + long code)); + +#endif /* UCAUX_H */ diff --git a/WWW/Library/Implementation/UCDefs.h b/WWW/Library/Implementation/UCDefs.h new file mode 100644 index 00000000..0c8966ea --- /dev/null +++ b/WWW/Library/Implementation/UCDefs.h @@ -0,0 +1,79 @@ +/* Definitions for EXP_CHARTRANS */ + +#ifndef UCDEFS_H +#define UCDEFS_H + +typedef struct _LYUCcharset { + int UChndl; + char *MIMEname; + int enc; + int repertoire; + int codepoints; + int cpranges; /* which ranges have valid displayable chars + (including nbsp and shy) */ + int like8859; /* for which ranges is it like 8859-1 */ +} LYUCcharset; + +#define UCT_ENC_7BIT 0 +#define UCT_ENC_8BIT 1 +#define UCT_ENC_8859 2 /* ??? */ +#define UCT_ENC_2022 3 +#define UCT_ENC_MAYBE2022 4 +#define UCT_ENC_CJK 5 +#define UCT_ENC_16BIT 6 +#define UCT_ENC_UTF8 7 + + +#define UCT_REP_SUBSETOF_LAT1 0x01 +#define UCT_REP_SUPERSETOF_LAT1 0x02 +#define UCT_REP_IS_LAT1 UCT_REP_SUBSETOF_LAT1 | UCT_REP_SUPERSETOF_LAT1 +/* assume everything we deal with is included in the UCS2 reperoire, + so a flag for _REP_SUBSETOF_UCS2 would be redundant */ + +/* more general description how the code points relate to 8859-1 and UCS: */ +#define UCT_CP_SUBSETOF_LAT1 0x01 /* implies UCT_CP_SUBSETOF_UCS2 */ +#define UCT_CP_SUPERSETOF_LAT1 0x02 +#define UCT_CP_SUBSETOF_UCS2 0x04 + +#define UCT_CP_IS_LAT1 UCT_CP_SUBSETOF_LAT1 | UCT_CP_SUPERSETOF_LAT1 + +/* more specific bitflags for practically important code point ranges: */ +#define UCT_R_LOWCTRL 0x08 /* 0x00-0x1F, for completeness */ +#define UCT_R_7BITINV 0x10 /* invariant, displayable 7bit chars */ +#define UCT_R_7BITNAT 0x20 /* displayable 7bit, national */ +#define UCT_R_HIGHCTRL 0x40 +#define UCT_R_8859SPECL 0x80 /* special chars in 8859-x sets: nbsp and shy*/ +#define UCT_R_HIGH8BIT 0x100 /* rest of 0xA0-0xFF range */ + +#define UCT_R_ASCII UCT_R_7BITINV | UCT_R_7BITNAT /*displayable US-ASCII*/ +#define UCT_R_LAT1 UCT_R_ASCII | UCT_R_8859SPECL | UCT_R_HIGH8BIT +#define UCT_R_8859S UCT_R_ASCII | UCT_R_8859SPECL +#define UCT_R_8BIT UCT_R_LAT1 | UCT_R_HIGHCTRL /* full 8bit range */ + +/* For the following some coments are in HTAnchor.c. */ + +#define UCT_STAGE_MIME 0 +#define UCT_STAGE_PARSER 1 /* What the parser (SGML.c) gets to see */ +#define UCT_STAGE_STRUCTURED 2 /* What the structured stream (HTML) gets fed*/ +#define UCT_STAGE_HTEXT 3 /* What gets fed to the HText_* functions */ +#define UCT_STAGEMAX 4 + +#define UCT_SETBY_NONE 0 +#define UCT_SETBY_DEFAULT 1 +#define UCT_SETBY_STRUCTURED 2 /* structured stream stage */ +#define UCT_SETBY_PARSER 3 /* set by SGML parser or similar */ +#define UCT_SETBY_MIME 4 /* set explicitly by MIME charset parameter */ + +typedef struct _UCStageInfo +{ + int lock; /* by what it has been set */ + int LYhndl; + LYUCcharset C; +} UCStageInfo; + +typedef struct _UCAnchorInfo +{ + struct _UCStageInfo s[UCT_STAGEMAX]; +} UCAnchorInfo; + +#endif /* UCDEFS_H */ diff --git a/WWW/Library/Implementation/UCMap.h b/WWW/Library/Implementation/UCMap.h new file mode 100644 index 00000000..93351ed4 --- /dev/null +++ b/WWW/Library/Implementation/UCMap.h @@ -0,0 +1,20 @@ +typedef long UCode_t; + +PUBLIC int UCTransUniChar PARAMS((UCode_t unicode, int charset_out)); +PUBLIC int UCTransUniCharStr PARAMS((char *outbuf, int buflen, UCode_t unicode, + int charset_out, int chk_single_flag)); +PUBLIC int UCTransChar PARAMS((char ch_in, int charset_in, int charset_out)); +PUBLIC int UCTransCharStr PARAMS((char *outbuf, int buflen, char ch_in, + int charset_in, int charset_out, int chk_single_flag)); +PUBLIC UCode_t UCTransToUni PARAMS((char ch_in, int charset_in)); +PUBLIC int UCGetLYhndl_byMIME PARAMS((CONST char *p)); +PUBLIC int UCGetRawUniMode_byLYhndl PARAMS((int i)); + +PUBLIC int UCLYhndl_for_unspec; +PUBLIC int UCLYhndl_for_unrec; +PUBLIC int UCLYhndl_HTFile_for_unspec; +PUBLIC int UCLYhndl_HTFile_for_unrec; + +#define UCTRANS_NOTFOUND (-4) + +#define HT_CANNOT_TRANSLATE -4 /* could go into HTUtils.h */ diff --git a/WWW/Library/Implementation/tcp.h b/WWW/Library/Implementation/tcp.h index 99b63224..7f38e545 100644 --- a/WWW/Library/Implementation/tcp.h +++ b/WWW/Library/Implementation/tcp.h @@ -65,6 +65,37 @@ typedef struct sockaddr_in SockA; /* See netinet/in.h */ #define STDIO_H #endif /* !STDIO_H */ +#if HAVE_DIRENT_H +# include <dirent.h> +# define D_NAMLEN(dirent) strlen((dirent)->d_name) +# define STRUCT_DIRENT struct dirent +# define GOT_READ_DIR 1 /* if directory reading functions are available */ +#else +# define D_NAMLEN(dirent) (dirent)->d_namlen +# define STRUCT_DIRENT struct direct +# define direct dirent /* FIXME */ +# if HAVE_SYS_NDIR_H +# include <sys/ndir.h> +# endif +# if HAVE_SYS_DIR_H +# include <sys/dir.h> +# endif +# if HAVE_NDIR_H +# include <ndir.h> +# endif +#endif + +#if TIME_WITH_SYS_TIME +# include <sys/time.h> +# include <time.h> +#else +# if HAVE_SYS_TIME_H +# include <sys/time.h> +# else +# include <time.h> +# endif +#endif + #ifdef _AIX #define AIX #endif /* _AIX */ @@ -72,38 +103,17 @@ typedef struct sockaddr_in SockA; /* See netinet/in.h */ #define unix #endif /* AIX */ -#ifdef _IBMR2 -#define USE_DIRENT /* sys V style directory open */ -#endif /* _IBMR2 */ - -#ifdef _SYSV3 +#if HAVE_FCNTL_H #include <fcntl.h> -#include <dirent.h> -#endif /* _SYSV3 */ - -/* Solaris. */ -#if defined(sun) && defined(__svr4__) && !defined(USE_DIRENT) -#define USE_DIRENT /* sys V style directory open */ -#endif /* sun && __svr4__ && !USE_DIRENT */ - -#ifdef __alpha -#define USE_DIRENT -#endif /* __alpha */ - -#ifndef USE_DIRENT -#ifdef SVR4 -#define USE_DIRENT -#endif /* SVR4 */ -#endif /* !USE_DIRENT */ +#else +#if HAVE_SYS_FCNTL_H +#include <sys/fcntl.h> +#endif +#endif -#ifndef SOLARIS2 +#if HAVE_STRING_H #include <string.h> /* For bzero etc */ -#endif /* !SOLARIS2 */ - -/* Use builtin strdup when appropriate. */ -#if defined(ultrix) || defined(VMS) || defined(NeXT) -extern char *strdup (); -#endif /* ultrix || VMS || NeXT */ +#endif /* HAVE_STRING_H */ /* @@ -117,6 +127,47 @@ extern char *strdup (); /* +IBM-PC running Windows NT + + These parameters providede by Susan C. Weber <sweber@kyle.eitech.com>. +*/ + +#ifdef _WINDOWS +#include "fcntl.h" /* For HTFile.c */ +#include "sys\types.h" /* For HTFile.c */ +#include "sys\stat.h" /* For HTFile.c */ +#undef NETREAD +#undef NETWRITE +#undef NETCLOSE +#undef IOCTL +#define NETREAD(s,b,l) recv((s),(b),(l),0) +#define NETWRITE(s,b,l) send((s),(b),(l),0) +#define NETCLOSE(s) closesocket(s) +#define IOCTL ioctlsocket +#include <io.h> +#include <string.h> +#include <process.h> +#include <time.h> +#include <errno.h> +#include <direct.h> +#include <stdio.h> +#include <winsock.h> +typedef struct sockaddr_in SockA; /* See netinet/in.h */ +#define EINPROGRESS (WSABASEERR+36) +#define EALREADY (WSABASEERR+37) +#define EISCONN (WSABASEERR+56) +#define EINTR (WSABASEERR+4) +#define EAGAIN (WSABASEERR+1002) +#define ENOTCONN (WSABASEERR+57) +#define ECONNRESET (WSABASEERR+54) +#define EINVAL 22 +#define INCLUDES_DONE +#define TCP_INCLUDES_DONE +#endif /* WINDOWS */ + + + +/* VAX/VMS @@ -149,10 +200,10 @@ VAX/VMS #undef SOCKET_READ #undef NETWRITE #undef NETCLOSE -#undef IOCTL #define SOCKET_READ(s,b,l) ((s)>10 ? netread((s),(b),(l)) : read((s),(b),(l))) #define NETWRITE(s,b,l) ((s)>10 ? netwrite((s),(b),(l)) : write((s),(b),(l))) #define NETCLOSE(s) ((s)>10 ? netclose(s) : close(s)) +#undef IOCTL #define IOCTL(a,b,c) -1 /* disables ioctl function */ #define NO_IOCTL /* flag to check if ioctl is disabled */ #endif /* WIN_TCP */ @@ -387,49 +438,32 @@ struct timeval { #define GLOBALREF extern #endif /* !GLOBALREF */ +#ifdef DJGPP +#undef SELECT +#define TCP_INCLUDES_DONE +#define NO_IOCTL +#include <errno.h> +#include <sys/types.h> +#include <socket.h> -/* -SCO ODT unix version - */ -#ifdef SCO -#define sco -#endif /* SCO */ -#ifdef sco -#include <sys/fcntl.h> -#define USE_DIRENT -#endif /* sco */ +#undef NETWRITE +#define NETWRITE write_s +#undef NETREAD +#define NETREAD read_s +#undef NETCLOSE +#define NETCLOSE close_s +#endif /* -Intergraph CLIX +SCO ODT unix version */ -#ifdef CLIX -#include <sys/fcntl.h> -#define USE_DIRENT -#endif /* CLIX */ - -#ifdef ISC -#ifndef NO_UNISTD_H -#include <sys/unistd.h> -#endif /* !NO_UNISTD_H */ -#else -#if !defined(NO_UNISTD_H) && !defined(VMS) +#if HAVE_UNISTD_H #include <unistd.h> -#endif /* !NO_UNISTD_H && !VMS */ -#endif /* ISC */ - -#if defined(SVR4) || defined(UNIXWARE) -#include <sys/fcntl.h> -#ifndef NO_FILIO_H /* BSD Interactive doesn't have filio.h. */ -#include <sys/filio.h> -#endif /* !NO_FILIO_H */ -#endif /* SVR4 || UNIXWARE */ +#endif /* HAVE_UNISTD_H */ -/* -SOLARIS 2 - */ -#ifdef SOLARIS2 +#if HAVE_SYS_FILIO_H #include <sys/filio.h> -#endif /* SOLARIS2 */ +#endif /* HAVE_SYS_FILIO_H */ /* MIPS unix @@ -447,9 +481,9 @@ Regular BSD unix versions #ifndef INCLUDES_DONE #include <sys/types.h> /* #include <streams/streams.h> not ultrix */ -#ifndef SOLARIS2 +#if HAVE_STRING_H #include <string.h> -#endif /* !SOLARIS2 */ +#endif /* HAVE_STRING_H */ #include <errno.h> /* independent */ #ifdef SCO #include <sys/timeb.h> @@ -490,6 +524,7 @@ typedef int pid_t; #define INCLUDES_DONE #endif /* Normal includes */ +/* FIXME: this should be autoconf'd */ /* Interactive UNIX for i386 and i486 -- Thanks to jeffrey@itm.itm.org */ #ifdef ISC #include <net/errno.h> @@ -497,7 +532,6 @@ typedef int pid_t; #include <sys/tty.h> #include <sys/sioctl.h> #include <sys/bsdtypes.h> -#include <sys/fcntl.h> #ifndef MERGE #define MERGE #include <sys/pty.h> @@ -506,7 +540,7 @@ typedef int pid_t; #include <sys/pty.h> #endif /* !MERGE */ #ifndef USE_DIRENT -#define USE_DIRENT /* sys V style directory open */ +#define USE_DIRENT /* sys V style directory open */ #endif /* USE_DIRENT */ #include <sys/dirent.h> #endif /* ISC */ @@ -517,6 +551,18 @@ typedef int pid_t; #define unix #endif /* UNIX && !unix */ +#ifdef HAVE_CONFIG_H + +# ifdef HAVE_LIMITS_H +# include <limits.h> +# endif /* HAVE_LIMITS_H */ +# if !defined(MAXINT) && defined(INT_MAX) +# define MAXINT INT_MAX +# endif /* !MAXINT && INT_MAX */ + +#else + +/* FIXME: remove after completing configure-script */ #ifdef unix /* if this is to compile on a UNIX machine */ #define GOT_READ_DIR 1 /* if directory reading functions are available */ #ifdef USE_DIRENT /* sys v version */ @@ -538,6 +584,16 @@ typedef int pid_t; #endif /* !MAXINT && INT_MAX */ #endif /* unix */ +#ifndef VM +#ifndef VMS +#ifndef THINK_C +#define DECL_SYS_ERRLIST 1 +#endif /* !THINK_C */ +#endif /* !VMS */ +#endif /* !VM */ + +#endif /* !HAVE_CONFIG_H */ + /* Defaults ======== diff --git a/WWW/Library/djgpp/CommonMakefile b/WWW/Library/djgpp/CommonMakefile new file mode 100644 index 00000000..e0b6a171 --- /dev/null +++ b/WWW/Library/djgpp/CommonMakefile @@ -0,0 +1,379 @@ +# Common Makefile for W3 Library Code +# ----------------------------------- +# +# (c) CERN 1990, 1991 -- see Copyright.html for conditions +# +# This file should be invariant between systems. +# DEPENDENCIES NOT COMPLETE @@ +# +# make Compile and link the software (private version) +# make install Copy it into the system (implies make) +# make update Copy installed version into installed version +# make uninstall Unlink installed version from the system +# make clean Remove intermediate files +# make cleanall Remove intremediate files and products +# +# Macros required to be defined already for make: +# +# CC The C compiler +# CFLAGS Flags for $(CC) -- except the -I which are below +# LFLAGS Flags for ld +# LYFLAGS Flags for Lynx +# +# WWW The WWW source tree directory +# +# Macros needed for make install: +# +# LIBDIR Directory for installed library +#______________________________________________________________________ + +# If this env var is set to something else Some makes will use that instead +SHELL = /bin/sh + +# .h files are distributed but originally are made from the +# self-documenting hypertext files. + +.SUFFIXES: .h .html +.html.h: +# - chmod +w $*.h + www -w90 -na -to text/x-c $*.html > $*.h +# chmod -w $*.h + +# If this is actually run in a subdirectory, +# +# WWW = ../../.. +# WWW = ../.. For [cernlib] build in this directory + +WC = $(WWW)/Library +CMN = $(WWW)/Library/Implementation/ +VMS = $(CMN)vms +# Where shall we put the objects and built library? + +LOB = $(WTMP)/Library/$(WWW_MACH) + +# Only needed if HTWAIS.c is to be compiled. Put into your Makefile.include +# uncomment these and fill in WAISINC for adding direct wais access +# to Lynx. +#HTWAIS = $(LOB)/HTWAIS.o +#WAIS = YES +#WAISINC = -I../../../../freeWAIS-0.202/ir +#WAISCFLAGS = -DDIRECT_WAIS +# + +# This path, if relative, is taken relative to the directory +# in which this makefile is, not the pwd. This screws up the +# recursive invocation +# include $(CMN)Version.make +include $(ABS)$(WWW)/Library/Implementation/Version.make + +# XMOsAIC hack is only for server to cope with xmosaic kludge for mmedia +# +# add -DNEW_GATEWAY here for the new gateway config stuff +CFLAGS2 = $(CFLAGS) $(LYFLAGS) $(WAISCFLAGS) -I$(CMN) -DXMOSAIC_HACK -DACCESS_AUTH + +CERNLIBBIN = $(WWW)/bin + +COMMON = $(LOB)/HTParse.o $(LOB)/HTAccess.o $(LOB)/HTTP.o \ + $(LOB)/HTFile.o $(LOB)/HTBTree.o $(LOB)/HTFTP.o $(LOB)/HTTCP.o \ + $(LOB)/SGML.o $(LOB)/HTMLDTD.o $(LOB)/HTChunk.o \ + $(LOB)/HTPlain.o $(LOB)/HTWriter.o \ + $(LOB)/HTMLGen.o \ + $(LOB)/HTAtom.o $(LOB)/HTAnchor.o $(LOB)/HTStyle.o \ + $(LOB)/HTList.o $(LOB)/HTString.o $(LOB)/HTDOS.o \ + $(LOB)/HTRules.o $(LOB)/HTFormat.o $(LOB)/HTMIME.o \ + $(LOB)/HTHistory.o $(LOB)/HTNews.o $(LOB)/HTGopher.o \ + $(LOB)/HTTelnet.o $(LOB)/HTFinger.o $(LOB)/HTWSRC.o $(HTWAIS) \ + $(LOB)/HTAAUtil.o $(LOB)/HTAAServ.o $(LOB)/HTAABrow.o \ + $(LOB)/HTAAFile.o $(LOB)/HTPasswd.o $(LOB)/HTGroup.o \ + $(LOB)/HTACL.o $(LOB)/HTAuth.o $(LOB)/HTAAProt.o \ + $(LOB)/HTAssoc.o $(LOB)/HTLex.o $(LOB)/HTUU.o + +CFILES = $(CMN)HTParse.c $(CMN)HTAccess.c $(CMN)HTTP.c $(CMN)HTFile.c \ + $(CMN)HTBTree.c \ + $(CMN)HTFTP.c $(CMN)HTTCP.c $(CMN)SGML.c \ + $(CMN)HTMLDTD.c \ + $(CMN)HTPlain.c $(CMN)HTWriter.c \ + $(CMN)HTDOS.c $(CMN)HTMLGen.c \ + $(CMN)HTChunk.c $(CMN)HTAtom.c $(CMN)HTAnchor.c $(CMN)HTStyle.c \ + $(CMN)HTList.c $(CMN)HTString.c $(CMN)HTRules.c \ + $(CMN)HTFormat.c $(CMN)HTMIME.c $(CMN)HTHistory.c \ + $(CMN)HTNews.c $(CMN)HTGopher.c $(CMN)HTTelnet.c \ + $(CMN)HTFinger.c $(CMN)HTWAIS.c $(CMN)HTWSRC.c \ + $(CMN)HTAAUtil.c $(CMN)HTAAServ.c $(CMN)HTAABrow.c \ + $(CMN)HTAAFile.c $(CMN)HTPasswd.c $(CMN)HTGroup.c \ + $(CMN)HTACL.c $(CMN)HTAuth.c $(CMN)HTAAProt.c \ + $(CMN)HTAssoc.c $(CMN)HTLex.c $(CMN)HTUU.c + +HFILES = $(CMN)HTParse.h $(CMN)HTAccess.h $(CMN)HTTP.h $(CMN)HTFile.h \ + $(CMN)HTBTree.h $(CMN)HTFTP.h $(CMN)HTTCP.h \ + $(CMN)SGML.h $(CMN)HTML.h $(CMN)HTMLDTD.h $(CMN)HTChunk.h \ + $(CMN)HTPlain.h $(CMN)HTWriter.h \ + $(CMN)HTFWriter.h $(CMN)HTMLGen.h $(CMN)HTDOS.h \ + $(CMN)HTStream.h \ + $(CMN)HTAtom.h $(CMN)HTAnchor.h $(CMN)HTStyle.h \ + $(CMN)HTList.h \ + $(CMN)HTString.h $(CMN)HTAlert.h $(CMN)HTRules.h \ + $(CMN)HTFormat.h $(CMN)HTInit.h \ + $(CMN)HTMIME.h $(CMN)HTHistory.h $(CMN)HTNews.h \ + $(CMN)HTGopher.h \ + $(CMN)HTUtils.h $(CMN)tcp.h $(CMN)HText.h \ + $(CMN)HTTelnet.h $(CMN)HTFinger.h \ + $(CMN)HTWAIS.h $(CMN)HTWSRC.h \ + $(CMN)HTAAUtil.h $(CMN)HTAAServ.h $(CMN)HTAABrow.h \ + $(CMN)HTAAFile.h $(CMN)HTPasswd.h $(CMN)HTGroup.h \ + $(CMN)HTACL.h $(CMN)HTAuth.h $(CMN)HTAAProt.h \ + $(CMN)HTAssoc.h $(CMN)HTLex.h $(CMN)HTUU.h + +SOURCES = $(CFILES) $(HFILES) $(CMN)Version.make \ + $(CMN)CommonMakefile $(CMN)Makefile \ + $(WWW)/README.txt $(WWW)/Copyright.txt $(WWW)/BUILD $(WWW)/Makefile +SPECIFIC = $(WWW)/All/*/Makefile.include $(WWW)/All/Implementation/Makefile* \ + $(VMS)/descrip.mms $(VMS)/build_multinet.com \ + $(VMS)/COPYING.LIB $(VMS)/setup.com $(VMS)/multinet.opt \ + $(VMS)/patchlevel.h $(VMS)/ufc-crypt.h \ + $(VMS)/crypt.c $(VMS)/crypt_util.c \ + $(VMS)/getline.c $(VMS)/getpass.c \ + $(VMS)/HTVMSUtils.h $(VMS)/HTVMSUtils.c + + +# Library +# +# On SGI, ranlib is unnecessary and does not exist so we ignore errors +# for that step +$(LOB)/libwww.a : $(COMMON) + ar r $(LOB)/libwww.a $(COMMON) + -ranlib $(LOB)/libwww.a + +# Clean up everything generatable except final products +clean : + rm $(LOB)/*.o $(LOB)/.created + -rmdir $(LOB) + +# Clean up everything generatable including final products + +cleanall : clean + rm $(LOB)/libwww.a + +# Install W3 library into system space (not normally necessary) + +install : libwww.a + if [ ! -r $(LIBDIR) ] mkdir $(LIBDIR) + cp libwww.a $(LIBDIR)/libwww.a + +uninstall : + rm $(LIBDIR)/libwww.a + +# Distribution use only: +# ---------------------- + +# Needs www version 2.4 or later to do this +inc : $(HFILES) + echo Include files generated from hypertext. + +binary : /pub/www/bin/$(WWW_MACH)/libwww_$(VC).a + echo FTP archive binary Libray $(VC) for $(WWW_MACH) up to date. + + +/pub/www/bin/$(WWW_MACH)/libwww_$(VC).a : libwww.a + -mkdir /pub/www/bin/$(WWW_MACH) + cp libwww.a /pub/www/bin/$(WWW_MACH)/libwww_$(VC).a + +# Source Distribution: + +distribute : /pub/www/README.txt /pub/www/Copyright.txt + (cd $(WWW)/..; WWW=WWW ABS=`pwd`/ make $(MFLAGS) \ + -f WWW/Library/Implementation/CommonMakefile \ + /pub/www/src/WWWLibrary_$(VC).tar.Z) + (cd ../Implementation; cvs tag \ + `sed -e 's/VC = /v/' Version.make | sed -e 's?\.?/?'` ) + echo Distribution of Library version $(VC) up to date. + +/pub/www/src/WWWLibrary_$(VC).tar.Z : $(SOURCES) + tar cf /pub/www/src/WWWLibrary_$(VC).tar \ + $(SOURCES) $(SPECIFIC) $(WC)/*/Makefile + compress /pub/www/src/WWWLibrary_$(VC).tar + + +# Hypertext supplied in text format +# --------------------------------- + +$(WWW)/README.txt : $(WWW)/../README.html + www -n -p66 http://www.w3.org/hypertext/README.html \ + > $(WWW)/README.txt +/pub/www/README.txt : $(WWW)/README.txt + cp $(WWW)/README.txt /pub/www/README.txt + +$(WWW)/Copyright.txt : $(WWW)/../Copyright.html + www -n -p66 http://www.w3.org/hypertext/Copyright.html \ + > $(WWW)/Copyright.txt +/pub/www/Copyright.txt : $(WWW)/Copyright.txt + cp $(WWW)/Copyright.txt /pub/www/Copyright.txt + +# Common code +# ----------- + +# Directory for object files - .created checks it exists + +OE = $(LOB)/.created +$(OE) : + if [ ! -r $(WTMP) ] ; then mkdir $(WTMP); else echo OK ; fi + if [ ! -r $(WTMP)/Library ] ; then mkdir $(WTMP)/Library; else echo OK ; fi + if [ ! -r $(WTMP)/Library/$(WWW_MACH) ] ; \ + then mkdir $(WTMP)/Library/$(WWW_MACH); else echo OK ; fi + touch $@ + +$(LOB)/HTList.o : $(OE) $(CMN)HTList.c $(CMN)HTUtils.h $(CMN)HTList.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTList.c + +$(LOB)/HTAnchor.o : $(OE) $(CMN)HTAnchor.c $(CMN)HTUtils.h $(CMN)HTList.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTAnchor.c + +$(LOB)/HTFormat.o : $(OE) $(CMN)HTFormat.c $(CMN)HTUtils.h $(CMN)HTList.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTFormat.c + +$(LOB)/HTMIME.o : $(OE) $(CMN)HTMIME.c $(CMN)HTUtils.h $(CMN)HTList.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTMIME.c + +$(LOB)/HTHistory.o : $(OE) $(CMN)HTHistory.c $(CMN)HTUtils.h $(CMN)HTList.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTHistory.c + +$(LOB)/HTDOS.o : $(OE) $(CMN)HTDOS.c $(CMN)HTUtils.h $(CMN)../../../userdefs.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTDOS.c + +$(LOB)/HTNews.o : $(OE) $(CMN)HTNews.c $(CMN)HTUtils.h $(CMN)HTList.h\ + $(CMN)HTMLDTD.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTNews.c + +$(LOB)/HTGopher.o : $(OE) $(CMN)HTGopher.c $(CMN)HTUtils.h $(CMN)HTList.h \ + $(CMN)HTMLDTD.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTGopher.c + +$(LOB)/HTTelnet.o : $(OE) $(CMN)HTTelnet.c $(CMN)HTUtils.h $(CMN)HTTelnet.h $(CMN)../../../userdefs.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTTelnet.c + +$(LOB)/HTFinger.o : $(OE) $(CMN)HTFinger.c $(CMN)HTUtils.h $(CMN)HTList.h \ + $(CMN)HTMLDTD.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTFinger.c + +$(LOB)/HTStyle.o : $(OE) $(CMN)HTStyle.c $(CMN)HTUtils.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTStyle.c + +$(LOB)/HTAtom.o : $(OE) $(CMN)HTAtom.c $(CMN)HTUtils.h $(CMN)HTList.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTAtom.c + +$(LOB)/HTChunk.o : $(OE) $(CMN)HTChunk.c $(CMN)HTUtils.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTChunk.c + +$(LOB)/HTString.o : $(OE) $(CMN)HTString.c $(CMN)HTUtils.h $(CMN)Version.make + $(CC) -c -o $@ $(CFLAGS2) -DVC=\"$(VC)\" $(CMN)HTString.c + +$(LOB)/HTRules.o : $(OE) $(CMN)HTRules.c $(CMN)HTUtils.h $(CMN)Version.make \ + $(CMN)HTAAServ.h $(CMN)HTAAProt.h + $(CC) -c -o $@ $(CFLAGS2) -DVC=\"$(VC)\" $(CMN)HTRules.c + +$(LOB)/SGML.o : $(OE) $(CMN)SGML.c $(CMN)HTUtils.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)SGML.c + +$(LOB)/HTMLGen.o : $(OE) $(CMN)HTMLGen.c $(CMN)HTUtils.h $(CMN)HTMLDTD.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTMLGen.c + +$(LOB)/HTMLDTD.o : $(OE) $(CMN)HTMLDTD.c $(CMN)SGML.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTMLDTD.c + +$(LOB)/HTPlain.o : $(OE) $(CMN)HTPlain.c $(CMN)HTPlain.h $(CMN)HTStream.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTPlain.c + +$(LOB)/HTWAIS.o : $(OE) $(CMN)HTWAIS.c $(CMN)HTUtils.h $(CMN)HTList.h + $(CC) -c -o $@ $(CFLAGS2) $(WAISINC) $(CMN)HTWAIS.c + +$(LOB)/HTWSRC.o : $(OE) $(CMN)HTWSRC.c $(CMN)HTUtils.h $(CMN)HTList.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTWSRC.c + +$(LOB)/HTWriter.o : $(OE) $(CMN)HTWriter.c $(CMN)HTWriter.h $(CMN)HTStream.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTWriter.c + + +# Access Authorization + +$(LOB)/HTAAUtil.o : $(OE) $(CMN)HTAAUtil.c $(CMN)HTAAUtil.h \ + $(CMN)HTUtils.h $(CMN)HTString.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTAAUtil.c + +$(LOB)/HTAAFile.o : $(OE) $(CMN)HTAAFile.c $(CMN)HTAAFile.h \ + $(CMN)HTAAUtil.h $(CMN)HTUtils.h $(CMN)HTList.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTAAFile.c + +$(LOB)/HTPasswd.o : $(OE) $(CMN)HTPasswd.c $(CMN)HTPasswd.h \ + $(CMN)HTAAUtil.h $(CMN)HTAAFile.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTPasswd.c + +$(LOB)/HTGroup.o : $(OE) $(CMN)HTGroup.c $(CMN)HTGroup.h \ + $(CMN)HTAAUtil.h $(CMN)HTAAFile.h \ + $(CMN)HTAssoc.h $(CMN)HTLex.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTGroup.c + +$(LOB)/HTACL.o : $(OE) $(CMN)HTACL.c $(CMN)HTACL.h \ + $(CMN)HTAAUtil.h $(CMN)HTAAFile.h $(CMN)HTGroup.h \ + $(CMN)HTAssoc.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTACL.c + +$(LOB)/HTAuth.o : $(OE) $(CMN)HTAuth.c $(CMN)HTAuth.h \ + $(CMN)HTAAUtil.h $(CMN)HTPasswd.h $(CMN)HTAAFile.h \ + $(CMN)HTAssoc.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTAuth.c + +$(LOB)/HTAAServ.o : $(OE) $(CMN)HTAAServ.c $(CMN)HTAAServ.h \ + $(CMN)HTAAUtil.h $(CMN)HTAAFile.h $(CMN)HTPasswd.h \ + $(CMN)HTGroup.h $(CMN)HTACL.h $(CMN)HTAuth.h \ + $(CMN)HTUU.h $(CMN)HTParse.h $(CMN)HTList.h \ + $(CMN)HTUtils.h $(CMN)HTString.h $(CMN)HTRules.h \ + $(CMN)HTAAProt.h $(CMN)HTAssoc.h $(CMN)HTLex.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTAAServ.c + +$(LOB)/HTAABrow.o : $(OE) $(CMN)HTAABrow.c $(CMN)HTAABrow.h \ + $(CMN)HTAAUtil.h $(CMN)HTUU.h \ + $(CMN)HTUtils.h $(CMN)HTString.h \ + $(CMN)HTParse.h $(CMN)HTList.h $(CMN)HTAlert.h \ + $(CMN)HTAssoc.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTAABrow.c + +$(LOB)/HTAAProt.o : $(OE) $(CMN)HTAAProt.c $(CMN)HTAAProt.h \ + $(CMN)HTUtils.h $(CMN)HTAAUtil.h $(CMN)HTAAFile.h \ + $(CMN)HTAssoc.h $(CMN)HTLex.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTAAProt.c + +$(LOB)/HTAssoc.o : $(OE) $(CMN)HTAssoc.c $(CMN)HTAssoc.h \ + $(CMN)HTUtils.h $(CMN)HTString.h $(CMN)HTList.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTAssoc.c + +$(LOB)/HTLex.o : $(OE) $(CMN)HTLex.c $(CMN)HTLex.h $(CMN)HTUtils.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTLex.c + +$(LOB)/HTUU.o : $(OE) $(CMN)HTUU.c $(CMN)HTUU.h $(CMN)HTUtils.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTUU.c + + +# Communications & Files + +$(LOB)/HTTP.o : $(OE) $(CMN)HTTP.c $(CMN)HTUtils.h $(CMN)HTAABrow.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTTP.c + +$(LOB)/HTTCP.o : $(OE) $(CMN)HTTCP.c $(CMN)HTUtils.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTTCP.c + +$(LOB)/HTFile.o : $(OE) $(CMN)HTFile.c $(CMN)HTUtils.h \ + $(CMN)HTMLDTD.h $(CMN)HTAAServ.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTFile.c + +$(LOB)/HTBTree.o : $(OE) $(CMN)HTBTree.c $(CMN)HTUtils.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTBTree.c + +$(LOB)/HTFTP.o : $(OE) $(CMN)HTFTP.c $(CMN)HTUtils.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTFTP.c + +$(LOB)/HTAccess.o : $(OE) $(CMN)HTAccess.c $(CMN)HTUtils.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTAccess.c + +$(LOB)/HTParse.o : $(OE) $(CMN)HTParse.c $(CMN)HTUtils.h + $(CC) -c -o $@ $(CFLAGS2) $(CMN)HTParse.c + diff --git a/WWW/Library/djgpp/makefile b/WWW/Library/djgpp/makefile new file mode 100644 index 00000000..2d096a16 --- /dev/null +++ b/WWW/Library/djgpp/makefile @@ -0,0 +1,29 @@ +# Make WWW under unix for a.n.other unix system (bsd) +# Use this as a template + +# For W3 distribution, machine type for subdirectories +WWW_MACH = djgpp + +# The ASIS repository's name for the machine we are on +ASIS_MACH = hardware/os + +CFLAGS = -O -DEXP_CHARTRANS -DCOLOR_CURSES -DDOSPATH -DNOUSERS -DDEBUG -I../../../djgpp/tcplib/include -I../../../djgpp/tcplib/include/tcp +LFLAGS = +CC = gcc + +# Directory for installed binary: +BINDIR = /usr/local/bin + +# Where is the W3 object library to be installed (not normally done)? +LIBDIR = $(WWW)/Library/Implementation/$(WWW_MACH) + +#_________________ OK if normal W3 distribution +# Where is the WWW source root? +WWW = ../.. + +# Where should temporary (object) files go? +WTMP = ../.. + +include $(WWW)/Library/Implementation/Version.make +#include $(WWW)/Library/Implementation/CommonMakefile +include ./CommonMakefile diff --git a/WWW/Library/unix/Makefile b/WWW/Library/unix/Makefile index c8d32fd9..e894af92 100644 --- a/WWW/Library/unix/Makefile +++ b/WWW/Library/unix/Makefile @@ -26,5 +26,5 @@ WWW = ../.. WTMP = ../.. +include $(WWW)/Library/Implementation/Version.make include $(WWW)/Library/Implementation/CommonMakefile - diff --git a/WWW/Library/unix/makefile.in b/WWW/Library/unix/makefile.in new file mode 100644 index 00000000..ea576adc --- /dev/null +++ b/WWW/Library/unix/makefile.in @@ -0,0 +1,54 @@ +# Make WWW under unix for a.n.other unix system (bsd) +# Use this as a template + +# For W3 distribution, machine type for subdirectories +WWW_MACH = unix + +# The ASIS repository's name for the machine we are on +ASIS_MACH = hardware/os + +LFLAGS = + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +srcdir = @srcdir@ +VPATH = $(srcdir) + +LYFLAGS = # FIXME: set in parent makefile + +CC = @CC@ +CPPOPTS = @DEFS@ @CPPFLAGS@ $(LYFLAGS) +CFLAGS = $(CPPOPTS) @CFLAGS@ + +# Directory for installed binary: +BINDIR = @bindir@ + +# Where is the W3 object library to be installed (not normally done)? +LIBDIR = $(WWW)/Library/Implementation/$(WWW_MACH) + +#_________________ OK if normal W3 distribution +# Where is the WWW source root? +WWW = ../.. + +# Where should temporary (object) files go? +WTMP = ../.. + +@make_include_left@$(WWW)/Library/Implementation/Version.make@make_include_right@ +@make_include_left@$(WWW)/Library/Implementation/CommonMakefile@make_include_right@ + +# Override values set in CommonMakefile + +RANLIB = @RANLIB@ + +all : $(LOB)/libwww.a + +.SUFFIXES: .i .h .html + +.c.o: +@SHOW_CC@ + @ECHO_CC@$(CC) $(CPPOPTS) $(CFLAGS) -c $(srcdir)/$*.c + +.c.i: +@SHOW_CC@ + @ECHO_CC@$(CPP) -C $(CPPOPTS) $*.c >$@ + diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 00000000..a53e46b5 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,737 @@ +dnl Macros for auto-configure script. +dnl written feb/1997 +dnl by T.E.Dickey <dickey@clark.net> +dnl and Jim Spath <jspath@mail.bcpl.lib.md.us> + +dnl --------------------------------------------------------------------------- +dnl Add an include-directory to $CPPFLAGS. Don't add /usr/include, since it's +dnl redundant. Also, don't add /usr/local/include if we're using gcc. +AC_DEFUN([CF_ADD_INCDIR], +[ +for cf_add_incdir in $1 +do + while true + do + case $cf_add_incdir in + /usr/include) # (vi + ;; + /usr/local/include) # (vi + test -z "$GCC" && CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + ;; + *) # (vi + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + ;; + esac + cf_top_incdir=`echo $cf_add_incdir | sed -e 's:/include/.*$:/include:'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + done +done +]) +dnl --------------------------------------------------------------------------- +dnl Check for existence of alternate-character-set support in curses, so we +dnl can decide to use it for box characters. +dnl +AC_DEFUN([CF_ALT_CHAR_SET], +[ +AC_MSG_CHECKING([if curses supports alternate-character set]) +AC_CACHE_VAL(cf_cv_alt_char_set,[ + AC_TRY_LINK([ +#include <curses.h> + ],[ + chtype x = acs_map['l'] + ], + [cf_cv_alt_char_set=yes], + [cf_cv_alt_char_set=no])]) +AC_MSG_RESULT($cf_cv_alt_char_set) +test $cf_cv_alt_char_set = yes && AC_DEFINE(ALT_CHAR_SET) +])dnl +dnl --------------------------------------------------------------------------- +dnl Allow user to disable a normally-on option. +AC_DEFUN([CF_ARG_DISABLE], +[CF_ARG_OPTION($1,[$2 (default: on)],[$3],[$4],yes)])dnl +dnl --------------------------------------------------------------------------- +dnl Allow user to enable a normally-off option. +AC_DEFUN([CF_ARG_ENABLE], +[CF_ARG_OPTION($1,[$2 (default: off)],[$3],[$4],no)])dnl +dnl --------------------------------------------------------------------------- +dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus +dnl values. +dnl +dnl Parameters: +dnl $1 = option name +dnl $2 = help-string +dnl $3 = action to perform if option is not default +dnl $4 = action if perform if option is default +dnl $5 = default option value (either 'yes' or 'no') +AC_DEFUN([CF_ARG_OPTION], +[AC_ARG_ENABLE($1,[$2],[test "$enableval" != ifelse($5,no,yes,no) && enableval=ifelse($5,no,no,yes) + if test "$enableval" != "$5" ; then +ifelse($3,,[ :]dnl +,[ $3]) ifelse($4,,,[ + else + $4]) + fi],[enableval=$5 ifelse($4,,,[ + $4 +])dnl + ])])dnl +dnl --------------------------------------------------------------------------- +dnl Check if curses supports color. (Note that while SVr3 curses supports +dnl color, it does this differently from SVr4 curses; more work would be needed +dnl to accommodate SVr3). +dnl +AC_DEFUN([CF_COLOR_CURSES], +[ +AC_MSG_CHECKING(if curses supports color attributes) +AC_CACHE_VAL(cf_cv_color_curses,[ + AC_TRY_LINK([ +#include <curses.h> +], + [has_colors(); + start_color(); + wbkgd(curscr, getbkgd(stdscr)); /* X/Open XPG4 aka SVr4 Curses */ + ], + [cf_cv_color_curses=yes], + [cf_cv_color_curses=no]) + ]) +AC_MSG_RESULT($cf_cv_color_curses) +test $cf_cv_color_curses = yes && AC_DEFINE(COLOR_CURSES) +]) +dnl --------------------------------------------------------------------------- +dnl Look for the curses libraries. Older curses implementations may require +dnl termcap/termlib to be linked as well. +AC_DEFUN([CF_CURSES_LIBS],[ +AC_CHECK_FUNC(initscr,,[ +if test -d /usr/5lib ; then + # SunOS 3.x or 4.x + CPPFLAGS="$CPPFLAGS -I/usr/5include" + LIBS="$LIBS -L/usr/5lib" +# elif test -d /usr/ccs/lib ; then +# # Solaris 5.x +# LIBS="$LIBS -L/usr/ccs/lib -R/usr/ccs/lib" +fi +cf_save_LIBS="$LIBS" +AC_CHECK_LIB(termcap, tgoto,[ + LIBS="-ltermcap $cf_save_LIBS" + AC_CHECK_LIB(curses,initscr,,[ + AC_CHECK_LIB(cursesX,initscr,,[ + AC_CHECK_LIB(jcurses,initscr,,[ + AC_ERROR(cannot link curses)])])]) + ],[ + AC_CHECK_LIB(curses,initscr,,[ + AC_ERROR(cannot link curses)])]) +])]) +dnl --------------------------------------------------------------------------- +dnl Solaris 2.x curses provides a "performance" tradeoff according to whether +dnl CURS_PERFORMANCE is defined. If defined, the implementation defines macros +dnl that access the WINDOW structure. Otherwise, function calls are used. +AC_DEFUN([CF_CURS_PERFORMANCE], +[ +AC_MSG_CHECKING([for curses performance tradeoff]) +AC_CACHE_VAL(cf_cv_curs_performance,[ + cf_cv_curs_performance=no + AC_TRY_COMPILE([ +#include <curses.h>],[ +#if defined(wbkgdset) && defined(clearok) && defined(getbkgd) + int x = ERR; +#else + int x = ; /* force an error */ +#endif + ],[ + AC_TRY_COMPILE([ +#define CURS_PERFORMANCE +#include <curses.h>],[ +#if defined(wbkgdset) && defined(clearok) && defined(getbkgd) + int x = ; /* force an error */ +#else + int x = ERR; +#endif + ],[cf_cv_curs_performance=yes])])]) +AC_MSG_RESULT($cf_cv_curs_performance) +test $cf_cv_curs_performance = yes && AC_DEFINE(CURS_PERFORMANCE) +])dnl +dnl --------------------------------------------------------------------------- +dnl Check for a program in the given list $3, defining the corresponding +dnl program variable $2. +dnl +AC_DEFUN([CF_DEFINE_PROG],[ +AC_MSG_CHECKING(for $1) +AC_CACHE_VAL(cf_cv_$2,[ + cf_cv_$2=unknown + for cv_path in $3 + do + if test -f $cv_path ; then + cf_cv_$2=$cv_path + break + fi + done + ]) +AC_MSG_RESULT($cf_cv_$2) +AC_DEFINE_UNQUOTED($2,"$cf_cv_$2") +]) +dnl --------------------------------------------------------------------------- +dnl +AC_DEFUN([CF_ERRNO], +[ +AC_MSG_CHECKING([for errno external decl]) +AC_CACHE_VAL(cf_cv_extern_errno,[ + AC_TRY_COMPILE([ +#include <errno.h>], + [int x = errno], + [cf_cv_extern_errno=yes], + [cf_cv_extern_errno=no])]) +AC_MSG_RESULT($cf_cv_extern_errno) +test $cf_cv_extern_errno = no && AC_DEFINE(DECL_ERRNO) +])dnl +dnl --------------------------------------------------------------------------- +AC_DEFUN([CF_FANCY_CURSES], +[ +AC_MSG_CHECKING(if curses supports fancy attributes) +AC_CACHE_VAL(cf_cv_fancy_curses,[ + AC_TRY_LINK([ +#include <curses.h> +], + [attrset(A_UNDERLINE|A_BOLD|A_REVERSE); + wattrset(stdscr, A_BLINK|A_DIM); + attroff(A_BOLD); + keypad(stdscr,TRUE); + ], + [cf_cv_fancy_curses=yes], + [cf_cv_fancy_curses=no]) + ]) +AC_MSG_RESULT($cf_cv_fancy_curses) +test $cf_cv_fancy_curses = yes && AC_DEFINE(FANCY_CURSES) +]) +dnl --------------------------------------------------------------------------- +dnl Check if the compiler supports useful warning options. There's a few that +dnl we don't use, simply because they're too noisy: +dnl +dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x) +dnl -Wredundant-decls (system headers make this too noisy) +dnl -Wtraditional (combines too many unrelated messages, only a few useful) +dnl -pedantic +dnl +dnl FIXME: the following are useful, but Lynx's not there yet +dnl -Wcast-qual +dnl -Wwrite-strings +dnl +AC_DEFUN([CF_GCC_WARNINGS], +[EXTRA_CFLAGS="" +if test -n "$GCC" +then + changequote(,)dnl + cat > conftest.$ac_ext <<EOF +#line __oline__ "configure" +int main(int argc, char *argv[]) { return argv[argc-1] == 0; } +EOF + changequote([,])dnl + AC_CHECKING([for gcc warning options]) + cf_save_CFLAGS="$CFLAGS" + EXTRA_CFLAGS="-W -Wall" + for cf_opt in \ + Wbad-function-cast \ + Wcast-align \ + Winline \ + Wmissing-declarations \ + Wmissing-prototypes \ + Wnested-externs \ + Wpointer-arith \ + Wshadow \ + Wstrict-prototypes + do + CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" + if AC_TRY_EVAL(ac_compile); then + test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt) + EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" + fi + done + rm -f conftest* + CFLAGS="$cf_save_CFLAGS" +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl Construct a search-list for a nonstandard header-file +AC_DEFUN([CF_HEADER_PATH], +[$1="" +test "$prefix" != NONE && $1="$prefix/include $prefix/include/$2" +test "$prefix" != /usr/local && $1="[$]$1 /usr/local/include /usr/local/include/$2" +test "$prefix" != /usr && $1="[$]$1 /usr/include /usr/include/$2" +])dnl +dnl --------------------------------------------------------------------------- +dnl Check if we've got setlocale() and its header, <locale.h> +AC_DEFUN([CF_LOCALE], +[ +AC_MSG_CHECKING(for setlocale()) +AC_CACHE_VAL(cf_cv_locale,[ +AC_TRY_LINK([#include <locale.h>], + [setlocale(LC_ALL, "")], + [cf_cv_locale=yes], + [cf_cv_locale=no]) + ]) +AC_MSG_RESULT($cf_cv_locale) +test $cf_cv_locale = yes && AC_DEFINE(LOCALE) +]) +dnl --------------------------------------------------------------------------- +dnl Check for the use of 'include' in 'make' (BSDI is a special case) +dnl The symbol $ac_make is set in AC_MAKE_SET, as a side-effect. +AC_DEFUN([CF_MAKE_INCLUDE], +[ +AC_MSG_CHECKING(for style of include in makefiles) +make_include_left="" +make_include_right="" +make_include_quote="" +for cf_include in "include" ".include" "!include" +do + for cf_quote in ' ' '"' + do + cat >WWW/Library/unix/makefile <<CF_EOF +${cf_include} ${cf_quote}../../Library/Implementation/Version.make${cf_quote} +all : + @echo 'cf_make_include=OK' +CF_EOF + cf_make_include="" + eval `cd WWW/Library/unix && ${MAKE-make} 2>/dev/null | grep cf_make_include=OK` + if test -n "$cf_make_include"; then + make_include_left="$cf_include" + make_include_quote="$cf_quote" + break + fi + done + test -n "$cf_make_include" && break +done + +if test -z "$make_include_left" ; then + AC_ERROR(Your $ac_make program does not support includes) +fi +if test -n "$make_include_quote" ; then + make_include_left="$make_include_left $make_include_quote" + make_include_right="$make_include_quote" +fi +AC_MSG_RESULT(${make_include_left}file${make_include_right}) +AC_SUBST(make_include_left) +AC_SUBST(make_include_right) +]) +dnl --------------------------------------------------------------------------- +dnl Look for the SVr4 curses clone 'ncurses' in the standard places, adjusting +dnl the CPPFLAGS variable. +dnl +dnl The header files may be installed as either curses.h, or ncurses.h +dnl (obsolete). If not installed for overwrite, the curses.h file would be +dnl in an ncurses subdirectory (e.g., /usr/include/ncurses), but someone may +dnl have installed overwriting the vendor's curses. Only very old versions +dnl (pre-1.9.2d, the first autoconf'd version) of ncurses don't define +dnl either __NCURSES_H or NCURSES_VERSION in the header. +dnl +dnl If the installer has set $CFLAGS or $CPPFLAGS so that the ncurses header +dnl is already in the include-path, don't even bother with this, since we cannot +dnl easily determine which file it is. In this case, it has to be <curses.h>. +dnl +AC_DEFUN([CF_NCURSES_CPPFLAGS], +[ +AC_MSG_CHECKING(for ncurses header file) +AC_CACHE_VAL(cf_cv_ncurses_header,[ + AC_TRY_COMPILE([#include <curses.h>], + [printf("%s\n", NCURSES_VERSION)], + [cf_cv_ncurses_header=predefined],[ + CF_HEADER_PATH(cf_search,ncurses) + test -n "$verbose" && echo + for cf_incdir in $cf_search + do + for cf_header in \ + curses.h \ + ncurses.h + do + if egrep "NCURSES" $cf_incdir/$cf_header >/dev/null 2>&1; then + cf_cv_ncurses_header=$cf_incdir/$cf_header + test -n "$verbose" && echo $ac_n " ... found $ac_c" 1>&6 + break + fi + test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&6 + done + test -n "$cf_cv_ncurses_header" && break + done + test -z "$cf_cv_ncurses_header" && AC_ERROR(not found) + ])]) +AC_MSG_RESULT($cf_cv_ncurses_header) +AC_DEFINE(NCURSES) + +changequote(,)dnl +cf_incdir=`echo $cf_cv_ncurses_header | sed -e 's:/[^/]*$::'` +changequote([,])dnl + +case $cf_cv_ncurses_header in # (vi +*/ncurses.h) + AC_DEFINE(NCURSESHEADER) + ;; +esac + +case $cf_cv_ncurses_header in # (vi +predefined) # (vi + ;; +*) + CF_ADD_INCDIR($cf_incdir) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl Look for the ncurses library. This is a little complicated on Linux, +dnl because it may be linked with the gpm (general purpose mouse) library. +dnl Some distributions have gpm linked with (bsd) curses, which makes it +dnl unusable with ncurses. +AC_DEFUN([CF_NCURSES_LIBS], +[AC_CHECK_FUNC(initscr,,[ +AC_REQUIRE([CF_NCURSES_CPPFLAGS]) +cf_save_LIBS="$LIBS" +case $cf_cv_ncurses_header in +*/ncurses.h) # (vi + cf_header=ncurses.h + ;; +*) # (vi + cf_header=curses.h + ;; +esac +AC_CHECK_LIB(gpm,Gpm_Open,[ + AC_CHECK_LIB(gpm,initscr,[ + # don't try to link with gpm, since it contains curses + AC_CHECK_LIB(ncurses,initscr) + ],[ + AC_MSG_CHECKING(if ncurses needs -lgpm to link) + LIBS="-lncurses $cf_save_LIBS" + AC_TRY_LINK([#include <$cf_header>], + [initscr()], + [cf_need_gpm=no], + [LIBS="-lncurses -lgpm $cf_save_LIBS" + AC_TRY_LINK([#include <$cf_header>], + [initscr()], + [cf_need_gpm=yes], + [AC_ERROR(cannot link -lncurses)])]) + AC_MSG_RESULT($cf_need_gpm) + ])], + [AC_CHECK_LIB(ncurses,initscr)]) +])]) +dnl --------------------------------------------------------------------------- +dnl After checking for functions in the default $LIBS, make a further check +dnl for the functions that are netlib-related (these aren't always in the +dnl libc, etc., and have to be handled specially because there are conflicting +dnl and broken implementations. +dnl Common library requirements (in order): +dnl -lresolv -lsocket -lnsl +dnl -lnsl -lsocket +dnl -lsocket +dnl -lbsd +AC_DEFUN([CF_NETLIBS],[ +NETLIBS="" +AC_CHECK_FUNC(gethostname,[AC_DEFINE(HAVE_GETHOSTNAME)],[ + AC_CHECK_LIB(nsl,gethostname, + [AC_DEFINE(HAVE_GETHOSTNAME) + NETLIBS="-lnsl $NETLIBS"], + AC_CHECK_LIB(socket,gethostname, + [AC_DEFINE(HAVE_GETHOSTNAME) + NETLIBS="-lsocket $NETLIBS"]), + [$NETLIBS])]) +AC_CHECK_FUNC(socket,[AC_DEFINE(HAVE_SOCKET)],[ + AC_CHECK_LIB(socket,socket, + [AC_DEFINE(HAVE_SOCKET) + NETLIBS="-lsocket $NETLIBS"], + AC_CHECK_LIB(bsd,socket, + [AC_DEFINE(HAVE_SOCKET) + NETLIBS="-lbsd $NETLIBS"]), + [$NETLIBS])]) +AC_CHECK_FUNC(gethostbyname,[AC_DEFINE(HAVE_GETHOSTBYNAME)],[ + AC_CHECK_LIB(nsl,gethostbyname, + [AC_DEFINE(HAVE_GETHOSTBYNAME) + NETLIBS="-lnsl $NETLIBS"],, + [$NETLIBS])]) +AC_CHECK_FUNC(strcasecmp,[AC_DEFINE(HAVE_STRCASECMP)],[ + AC_CHECK_LIB(resolv,strcasecmp, + [AC_DEFINE(HAVE_STRCASECMP) + NETLIBS="-lresolv $NETLIBS"],, + [$NETLIBS])]) +LIBS="$LIBS $NETLIBS" +])dnl +dnl --------------------------------------------------------------------------- +dnl Check for a given program, defining corresponding symbol. +dnl $1 = environment variable, which is suffixed by "_PATH" in the #define. +dnl $2 = program name to find. +dnl +dnl If there is more than one token in the result, #define the remaining tokens +dnl to $1_ARGS. We need this for 'install' in particular. +dnl +dnl FIXME: we should allow this to be overridden by environment variables +dnl +AC_DEFUN([CF_PATH_PROG],[ +test -z "[$]$1" && $1=$2 +if test "$with_full_paths" = yes ; then + AC_PATH_PROG($1,$2,[$]$1) +else + AC_MSG_CHECKING(for $2) + AC_MSG_RESULT([$]$1) +fi + +cf_path_prog="" +cf_path_args="" +IFS="${IFS= }"; cf_save_ifs="$IFS"; IFS="${IFS}:" +for cf_temp in $ac_cv_path_$1 +do + if test -z "$cf_path_prog" ; then + cf_path_prog="$cf_temp" + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +AC_DEFINE_UNQUOTED($1_PATH,"$cf_path_prog") +test -n "$cf_path_args" && AC_DEFINE_UNQUOTED($1_ARGS,"$cf_path_args") +])dnl +dnl --------------------------------------------------------------------------- +dnl Check for broken definition of 'remove()'. This is (in particular) broken +dnl on the older version of SCO (I'd cite version if I knew where to look) by +dnl having <stdio.h> #define remove to __unlink, which appears in no library. +dnl +dnl Fortuitously, we can combine this with a more general test: do we have +dnl 'unlink()' but no 'remove()'. Note, however, that we cannot simply #define +dnl remove to unlink, but have to make a fallback function. +dnl +AC_DEFUN([CF_REMOVE_BROKEN], +[ +AC_MSG_CHECKING(for broken/missing definition of remove) +AC_CACHE_VAL(cf_cv_baddef_remove,[ +AC_TRY_LINK( + [#include <stdio.h>], + [remove("dummy")], + [cf_cv_baddef_remove=no], + [AC_TRY_LINK( + [#include <stdio.h> + int __unlink(name) { return unlink(name); } ], + [remove("dummy")], + [cf_cv_baddef_remove=yes], + [cf_cv_baddef_remove=unknown]) + ]) +]) +AC_MSG_RESULT($cf_cv_baddef_remove) +test "$cf_cv_baddef_remove" = yes && AC_DEFINE(NEED_REMOVE) +])dnl +dnl --------------------------------------------------------------------------- +dnl Check for definitions & structures needed for window size-changing +dnl FIXME: check that this works with "snake" (HP-UX 10.x) +AC_DEFUN([CF_SIZECHANGE], +[ +AC_MSG_CHECKING([declaration of size-change]) +AC_CACHE_VAL(cf_cv_sizechange,[ + cf_cv_sizechange=unknown + cf_save_CFLAGS="$CFLAGS" + +for cf_opts in "" "NEED_PTEM_H" +do + + CFLAGS="$cf_save_CFLAGS" + test -n "$cf_opts" && CFLAGS="$CFLAGS -D$cf_opts" + AC_TRY_COMPILE([#include <sys/types.h> +#if HAVE_TERMIOS_H +#include <termios.h> +#endif +#if NEED_PTEM_H +/* This is a workaround for SCO: they neglected to define struct winsize in + * termios.h -- it's only in termio.h and ptem.h + */ +#include <sys/stream.h> +#include <sys/ptem.h> +#endif +#if !defined(sun) || !defined(HAVE_TERMIOS_H) +#include <sys/ioctl.h> +#endif +],[ +#ifdef TIOCGSIZE + struct ttysize win; /* FIXME: what system is this? */ + int y = win.ts_lines; + int x = win.ts_cols; +#else +#ifdef TIOCGWINSZ + struct winsize win; + int y = win.ws_row; + int x = win.ws_col; +#else + no TIOCGSIZE or TIOCGWINSZ +#endif /* TIOCGWINSZ */ +#endif /* TIOCGSIZE */ + ], + [cf_cv_sizechange=yes], + [cf_cv_sizechange=no]) + + CFLAGS="$cf_save_CFLAGS" + if test "$cf_cv_sizechange" = yes ; then + test -n "$cf_opts" && AC_DEFINE($cf_opts) + break + fi +done + ]) +AC_MSG_RESULT($cf_cv_sizechange) +test $cf_cv_sizechange = no && AC_DEFINE(HAVE_SIZECHANGE) +])dnl +dnl --------------------------------------------------------------------------- +dnl Look for the slang header files in the standard places, adjusting the +dnl CPPFLAGS variable. +dnl +AC_DEFUN([CF_SLANG_CPPFLAGS], +[ +AC_MSG_CHECKING(for slang header file) +AC_CACHE_VAL(cf_cv_slang_header,[ + CF_HEADER_PATH(cf_search,slang) + for cf_incdir in $cf_search + do + for cf_header in \ + slang.h + do + if egrep "SLANG_VERSION" $cf_incdir/$cf_header >/dev/null 2>&1; then + cf_cv_slang_header=$cf_incdir/$cf_header + break + fi + done + test -n "$cf_cv_slang_header" && break + done + test -z "$cf_cv_slang_header" && AC_ERROR(not found) + ]) +AC_MSG_RESULT($cf_cv_slang_header) +AC_DEFINE(USE_SLANG) +changequote(,)dnl +cf_incdir=`echo $cf_cv_slang_header | sed -e 's:/[^/]*$::'` +changequote([,])dnl +CF_ADD_INCDIR($cf_incdir) +])dnl +dnl --------------------------------------------------------------------------- +dnl Look for the slang library (it needs the math-library because it uses +dnl trig functions). +AC_DEFUN([CF_SLANG_LIBS], +[ + AC_CHECK_FUNC(SLtt_get_screen_size,,[ + AC_CHECK_LIB(slang,SLtt_get_screen_size, + [LIBS="-lslang $LIBS"], + [AC_CHECK_LIB(slang,SLtt_get_screen_size, + [LIBS="-lslang -lm $LIBS"], + AC_ERROR(cannot link -lslang),"-lm")])]) +])dnl +dnl --------------------------------------------------------------------------- +dnl Check for declaration of sys_errlist in one of stdio.h and errno.h. +dnl Declaration of sys_errlist on BSD4.4 interferes with our declaration. +dnl Reported by Keith Bostic. +AC_DEFUN([CF_SYS_ERRLIST], +[ +AC_MSG_CHECKING([declaration of sys_errlist]) +AC_CACHE_VAL(cf_cv_dcl_sys_errlist,[ + AC_TRY_COMPILE([ +#include <stdio.h> +#include <sys/types.h> +#include <errno.h> ], + [char *c = (char *) *sys_errlist], + [cf_cv_dcl_sys_errlist=yes], + [cf_cv_dcl_sys_errlist=no])]) +AC_MSG_RESULT($cf_cv_dcl_sys_errlist) +test $cf_cv_dcl_sys_errlist = no && AC_DEFINE(DECL_SYS_ERRLIST) +])dnl +dnl --------------------------------------------------------------------------- +AC_DEFUN([CF_SYSTEM_MAIL_FLAGS], +[ +AC_MSG_CHECKING([system mail flags]) +AC_CACHE_VAL(cf_cv_system_mail_flags,[ + case $cf_cv_SYSTEM_MAIL in + */mmdf/*) + [cf_cv_system_mail_flags="-mlruxto,cc\\\\*"] + ;; + *) + [cf_cv_system_mail_flags="-t -oi"] + esac + ]) +AC_MSG_RESULT($cf_cv_system_mail_flags) +AC_DEFINE_UNQUOTED(SYSTEM_MAIL_FLAGS, "$cf_cv_system_mail_flags") +])dnl +dnl --------------------------------------------------------------------------- +dnl Look for termcap libraries, needed by some versions of slang. +AC_DEFUN([CF_TERMCAP_LIBS], +[ +AC_CACHE_VAL(cf_cv_lib_termcap,[ +cf_cv_lib_termcap=none +# HP-UX 9.x terminfo has setupterm, but no tigetstr. +if test "$termlib" = none; then + AC_CHECK_LIB(termlib, tigetstr, [LIBS="$LIBS -ltermlib" cf_cv_lib_termcap=terminfo]) +fi +if test "$cf_cv_lib_termcap" = none; then + AC_CHECK_LIB(termlib, tgoto, [LIBS="$LIBS -ltermlib" cf_cv_lib_termcap=termcap]) +fi +if test "$cf_cv_lib_termcap" = none; then + # allow curses library for broken AIX system. + AC_CHECK_LIB(curses, initscr, [LIBS="$LIBS -lcurses" cf_cv_lib_termcap=termcap]) + AC_CHECK_LIB(termcap, tgoto, [LIBS="$LIBS -ltermcap" cf_cv_lib_termcap=termcap]) +fi +if test "$cf_cv_lib_termcap" = none; then + AC_CHECK_LIB(termcap, tgoto, [LIBS="$LIBS -ltermcap" cf_cv_lib_termcap=termcap]) +fi +if test "$cf_cv_lib_termcap" = none; then + AC_CHECK_LIB(ncurses, tgoto, [LIBS="$LIBS -lncurses" cf_cv_lib_termcap=ncurses]) +fi +]) +if test "$cf_cv_lib_termcap" = none; then + AC_ERROR([Can't find -ltermlib, -lcurses, or -ltermcap]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl Check if including both termio.h and termios.h die like on DG.UX +AC_DEFUN([CF_TERMIO_AND_TERMIOS], +[ +AC_MSG_CHECKING([termio.h and termios.h]) +AC_CACHE_VAL(cf_cv_termio_and_termios,[ + AC_TRY_COMPILE([ +#if HAVE_TERMIO_H +#include <termio.h> +#endif +#if HAVE_TERMIOS_H +#include <termios.h> +#endif ], + [putchar (0x0a)], + [cf_cv_termio_and_termios=yes], + [cf_cv_termio_and_termios=no])]) +AC_MSG_RESULT($cf_cv_termio_and_termios) +test $cf_cv_termio_and_termios = no && AC_DEFINE(TERMIO_AND_TERMIOS) +])dnl +dnl --------------------------------------------------------------------------- +AC_DEFUN([CF_TTYTYPE], +[ +AC_MSG_CHECKING(if ttytype is declared in curses library) +AC_CACHE_VAL(cf_cv_have_ttytype,[ + AC_TRY_LINK([#include <curses.h>], + [char *x = &ttytype[1]], + [cf_cv_have_ttytype=yes], + [cf_cv_have_ttytype=no]) + ]) +AC_MSG_RESULT($cf_cv_have_ttytype) +test $cf_cv_have_ttytype = yes && AC_DEFINE(HAVE_TTYTYPE) +]) +dnl --------------------------------------------------------------------------- +dnl Make an uppercase version of a variable +dnl $1=uppercase($2) +AC_DEFUN([CF_UPPER], +[ +changequote(,)dnl +$1=`echo $2 | tr '[a-z]' '[A-Z]'` +changequote([,])dnl +])dnl +dnl --------------------------------------------------------------------------- +AC_DEFUN([CF_UTMP], +[ +AC_MSG_CHECKING(if struct utmp is declared) +AC_CACHE_VAL(cf_cv_have_utmp,[ + AC_TRY_COMPILE([#include <utmp.h>], + [struct utmp x; char *y = &x.ut_host[0]], + [cf_cv_have_utmp=yes], + [AC_TRY_COMPILE([#include <utmpx.h>], + [struct utmpx x; char *y = &x.ut_host[0]], + [cf_cv_have_utmp=utmpx], + [cf_cv_have_utmp=no]) + ]) + ]) +AC_MSG_RESULT($cf_cv_have_utmp) +test $cf_cv_have_utmp != no && AC_DEFINE(HAVE_UTMP) +test $cf_cv_have_utmp = utmpx && AC_DEFINE(UTMPX_FOR_UTMP) +]) diff --git a/config.guess b/config.guess new file mode 100755 index 00000000..e9e44559 --- /dev/null +++ b/config.guess @@ -0,0 +1,693 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc. +# +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Written by Per Bothner <bothner@cygnus.com>. +# The master version of this file is at the FSF in /home/gd/gnu/lib. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit system type (host/target name). +# +# Only a few systems have been added to this list; please add others +# (but try to keep the structure clean). +# + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 8/24/94.) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15 + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + alpha:OSF1:*:*) + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'` + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-cbm-sysv4 + exit 0;; + amiga:NetBSD:*:*) + echo m68k-cbm-netbsd${UNAME_RELEASE} + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-cbm-openbsd${UNAME_RELEASE} + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + Pyramid*:OSx*:*:*|MIS*:OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + atari*:NetBSD:*:*) + echo m68k-atari-netbsd${UNAME_RELEASE} + exit 0 ;; + atari*:OpenBSD:*:*) + echo m68k-atari-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:NetBSD:*:*) + echo m68k-sun-netbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:OpenBSD:*:*) + echo m68k-sun-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:NetBSD:*:*) + echo m68k-apple-netbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-apple-openbsd${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + sed 's/^ //' << EOF >dummy.c + int main (argc, argv) int argc; char **argv; { + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + ${CC-cc} dummy.c -o dummy \ + && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ + -o ${TARGET_BINARY_INTERFACE}x = x ] ; then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i?86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + sed 's/^ //' << EOF >dummy.c + #include <sys/systemcfg.h> + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:4) + if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=4.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[3478]??:HP-UX:*:*) + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;; + 9000/8?? ) HP_ARCH=hppa1.0 ;; + esac + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + sed 's/^ //' << EOF >dummy.c + #include <unistd.h> + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i?86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*X-MP:*:*:*) + echo xmp-cray-unicos + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY-2:*:*:*) + echo cray2-cray-unicos + exit 0 ;; + F300:UNIX_System_V:*:*) + FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + F301:UNIX_System_V:*:*) + echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` + exit 0 ;; + hp3[0-9][05]:NetBSD:*:*) + echo m68k-hp-netbsd${UNAME_RELEASE} + exit 0 ;; + hp3[0-9][05]:OpenBSD:*:*) + echo m68k-hp-openbsd${UNAME_RELEASE} + exit 0 ;; + i?86:BSD/386:*:* | *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + *:NetBSD:*:*) + echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + i*:CYGWIN*:*) + echo i386-pc-cygwin32 + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin32 + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + *:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. + ld_help_string=`ld --help 2>&1` + if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i.86"; then + echo "${UNAME_MACHINE}-pc-linux-gnu" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86linux"; then + echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86coff"; then + echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68kelf"; then + echo "${UNAME_MACHINE}-unknown-linux-gnu" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68klinux"; then + echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf32ppc"; then + echo "powerpc-unknown-linux-gnu" ; exit 0 + elif test "${UNAME_MACHINE}" = "alpha" ; then + echo alpha-unknown-linux-gnu ; exit 0 + elif test "${UNAME_MACHINE}" = "sparc" ; then + echo sparc-unknown-linux-gnu ; exit 0 + else + # Either a pre-BFD a.out linker (linux-gnuoldld) or one that does not give us + # useful --help. Gcc wants to distinguish between linux-gnuoldld and linux-gnuaout. + test ! -d /usr/lib/ldscripts/. \ + && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 + # Determine whether the default compiler is a.out or elf + cat >dummy.c <<EOF +main(argc, argv) +int argc; +char *argv[]; +{ +#ifdef __ELF__ + printf ("%s-pc-linux-gnu\n", argv[1]); +#else + printf ("%s-pc-linux-gnuaout\n", argv[1]); +#endif + return 0; +} +EOF + ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + fi ;; +# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions +# are messed up and put the nodename in both sysname and nodename. + i?86:DYNIX/ptx:4*:*) + echo i386-sequent-sysv4 + exit 0 ;; + i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} + fi + exit 0 ;; + i?86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` + echo ${UNAME_MACHINE}-pc-isc$UNAME_REL + elif /bin/uname -X 2>/dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` + (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + i?86:LynxOS:2.*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes <hewes@openmarket.com>. + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says <Richard.M.Bartel@ccMail.Census.GOV> + echo i586-unisys-sysv4 + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +cat >dummy.c <<EOF +#ifdef _SEQUENT_ +# include <sys/types.h> +# include <sys/utsname.h> +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include <sys/param.h> + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +#if !defined (ultrix) + printf ("vax-dec-bsd\n"); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0 +rm -f dummy.c dummy + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +#echo '(Unable to guess system type)' 1>&2 + +exit 1 diff --git a/config.hin b/config.hin new file mode 100644 index 00000000..48116ae8 --- /dev/null +++ b/config.hin @@ -0,0 +1,113 @@ +#undef ALT_CHAR_SET +#undef CHMOD_PATH /* CF_PATH_PROG(chmod) */ +#undef COLOR_CURSES /* defined by CF_COLOR_CURSES */ +#undef COMPRESS_PATH /* CF_PATH_PROG(compress) */ +#undef COPY_PATH /* CF_PATH_PROG(cp) */ +#undef CURS_PERFORMANCE +#undef DEBUG /* configure --enable-debug */ +#undef DECL_SYS_ERRLIST +#undef FANCY_CURSES /* defined by CF_FANCY_CURSES */ +#undef GZIP_PATH /* CF_PATH_PROG(gzip) */ +#undef HAVE_CBREAK +#undef HAVE_CUSERID +#undef HAVE_DIRENT_H /* defined by AC_HEADER_DIRENT */ +#undef HAVE_FCNTL_H /* have <fcntl.h> */ +#undef HAVE_GETCWD +#undef HAVE_KEYPAD +#undef HAVE_LIMITS_H +#undef HAVE_PUTENV +#undef HAVE_SIZECHANGE /* defined by CF_SIZECHANGE */ +#undef HAVE_STRING_H +#undef HAVE_SYS_DIR_H /* defined by AC_HEADER_DIRENT */ +#undef HAVE_SYS_FCNTL_H /* have <sys/fcntl.h> */ +#undef HAVE_SYS_FILIO_H /* have <sys/filio.h> */ +#undef HAVE_SYS_NDIR_H /* defined by AC_HEADER_DIRENT */ +#undef HAVE_TERMIOS +#undef HAVE_TERMIOS_H /* have <termios.h> */ +#undef HAVE_TTYTYPE +#undef HAVE_UNISTD_H /* have <unistd.h> */ +#undef HAVE_UTMP +#undef IGNORE_CTRL_C /* FIXME: make tests? */ +#undef INSTALL_ARGS /* CF_PATH_PROG(install) */ +#undef INSTALL_PATH /* CF_PATH_PROG(install) */ +#undef LINUX /* FIXME: make tests? */ +#undef LOCALE /* for locale support */ +#undef LY_FIND_LEAKS /* configure --disable-leaks */ +#undef MKDIR_PATH /* CF_PATH_PROG(mkdir) */ +#undef MV_PATH /* CF_PATH_PROG(mv) */ +#undef NCURSES /* defined for ncurses support */ +#undef NCURSESHEADER /* defined if we include <ncurses.h> */ +#undef NEED_PTEM_H /* defined by CF_SIZECHANGE */ +#undef NEED_REMOVE /* defined by CF_REMOVE_BROKEN */ +#undef NO_PARENT_DIR_REFERENCE /* configure --disable-parent-dir */ +#undef RM_PATH /* CF_PATH_PROG(rm) */ +#undef STDC_HEADERS +#undef SYSTEM_MAIL /* CF_DEFINE_PROG */ +#undef SYSTEM_MAIL_FLAGS /* defined by CF_SYSTEM_MAIL_FLAGS */ +#undef SYS_IOCTL_H /* have <sys/ioctl.h> */ +#undef TAR_PATH /* CF_PATH_PROG(tar) */ +#undef TERMIO_AND_TERMIOS /* termio.h and termios.h combo bug */ +#undef TOUCH_PATH /* CF_PATH_PROG(touch) */ +#undef ULTRIX /* config.sub */ +#undef UNCOMPRESS_PATH /* CF_PATH_PROG(gunzip) */ +#undef UNIX +#undef UNZIP_PATH /* CF_PATH_PROG(unzip) */ +#undef USE_SLANG +#undef UTMPX_FOR_UTMP /* use <utmpx.h> since <utmp.h> not found */ +#undef UUDECODE_PATH /* CF_PATH_PROG(uudecode) */ +#undef ZCAT_PATH /* CF_PATH_PROG(zcat) */ +#undef ZIP_PATH /* CF_PATH_PROG(zip) */ +#undef const /* defined by AC_C_CONST */ +#undef vfork /* defined by AC_FUNC_FORK */ +/* FIXME:AIX4 */ +/* FIXME:ALLOW_USERS_TO_CHANGE_EXEC_WITHIN_OPTIONS */ +/* FIXME:ARCHIVE_ONLY */ +/* FIXME:BSDI */ +/* FIXME:CLIX */ +/* FIXME:DECLARE_WAIS_LOGFILES */ +/* FIXME:DGUX */ +/* FIXME:DGUX_OLD */ +/* FIXME:DIRED_SUPPORT */ +/* FIXME:EXEC_LINKS */ +/* FIXME:FALSE=0 */ +/* FIXME:HP_TERMINAL */ +/* FIXME:ISC */ +/* FIXME:LONG_LIST */ +/* FIXME:LY_FIND_LEAKS */ +/* FIXME:NEXT */ +/* FIXME:NOPORT */ +/* FIXME:NO_CHANGE_EXECUTE_PERMS */ +/* FIXME:NO_CPU_LIMIT */ +/* FIXME:NSL_FORK */ +/* FIXME:OK_GZIP */ +/* FIXME:OK_OVERRIDE */ +/* FIXME:OK_PERMIT */ +/* FIXME:OK_TAR */ +/* FIXME:OK_UUDECODE */ +/* FIXME:OK_ZIP */ +/* FIXME:PERFORMANCE */ +/* FIXME:POSIX_JC */ +/* FIXME:PTX2 */ +/* FIXME:REVERSE_CLEAR_SCREEN_PROBLEM */ +/* FIXME:SCO */ +/* FIXME:SGI */ +/* FIXME:SHORTENED_RBIND */ +/* FIXME:SNAKE */ +/* FIXME:SOCKS */ +/* FIXME:SVR4_BSDSELECT */ +/* FIXME:SYSLOG_REQUESTED_URLS */ +/* FIXME:TRUE=1 */ +/* FIXME:UNDERLINE_LINKS */ +/* FIXME:UNIXWARE */ +/* FIXME:USG */ +/* FIXME:_BSD=44 */ +/* FIXME:_BUILTINS */ +/* FIXME:_INCLUDE_AES_SOURCE */ +/* FIXME:_INCLUDE_HPUX_SOURCE */ +/* FIXME:_INCLUDE_POSIX_SOURCE */ +/* FIXME:_INCLUDE_XOPEN_SOURCE */ +/* FIXME:_SYSV3 */ +/* FIXME:__STDC__ */ +/* FIXME:_locp=__lc_locale */ +/* FIXME:loc_t=_LC_locale_t */ +/* This is a template for the configure script, which produces config.h */ diff --git a/config.sub b/config.sub new file mode 100755 index 00000000..04325249 --- /dev/null +++ b/config.sub @@ -0,0 +1,927 @@ +#! /bin/sh +# Configuration validation subroutine script, version 1.1. +# Copyright (C) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc. +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +if [ x$1 = x ] +then + echo Configuration name missing. 1>&2 + echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 + echo "or $0 ALIAS" 1>&2 + echo where ALIAS is a recognized configuration type. 1>&2 + exit 1 +fi + +# First pass through any local machine types. +case $1 in + *local*) + echo $1 + exit 0 + ;; + *) + ;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + linux-gnu*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple) + os= + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + tahoe | i860 | m68k | m68000 | m88k | ns32k | arm \ + | arme[lb] | pyramid \ + | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \ + | alpha | we32k | ns16k | clipper | i370 | sh \ + | powerpc | powerpcle | 1750a | dsp16xx | mips64 | mipsel \ + | pdp11 | mips64el | mips64orion | mips64orionel \ + | sparc | sparclet | sparclite | sparc64) + basic_machine=$basic_machine-unknown + ;; + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i[3456]86) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + vax-* | tahoe-* | i[3456]86-* | i860-* | m68k-* | m68000-* | m88k-* \ + | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \ + | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \ + | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \ + | hppa-* | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \ + | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \ + | pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \ + | mips64el-* | mips64orion-* | mips64orionel-* | f301-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-cbm + ;; + amigados) + basic_machine=m68k-cbm + os=-amigados + ;; + amigaunix | amix) + basic_machine=m68k-cbm + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | ymp) + basic_machine=ymp-cray + os=-unicos + ;; + cray2) + basic_machine=cray2-cray + os=-unicos + ;; + [ctj]90-cray) + basic_machine=c90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + os=-mvs + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i[3456]86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i[3456]86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i[3456]86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i[3456]86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + miniframe) + basic_machine=m68000-convergent + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + np1) + basic_machine=np1-gould + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5) + basic_machine=i586-intel + ;; + pentiumpro | p6) + basic_machine=i686-intel + ;; + pentium-* | p5-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + k5) + # We don't have specific support for AMD's K5 yet, so just call it a Pentium + basic_machine=i586-amd + ;; + nexen) + # We don't have specific support for Nexgen yet, so just call it a Pentium + basic_machine=i586-nexgen + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=rs6000-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + xmp) + basic_machine=xmp-cray + os=-unicos + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + mips) + basic_machine=mips-mips + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sparc) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -unixware* | svr4*) + os=-sysv4 + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigados* | -msdos* | -newsos* | -unicos* | -aof* | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -linux-gnu* | -uxpv*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -ctix* | -uts*) + os=-sysv + ;; + -ns2 ) + os=-nextstep2 + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -xenix) + os=-xenix + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-semi) + os=-aout + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-ibm) + os=-aix + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigados + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f301-fujitsu) + os=-uxpv + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -hpux*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os diff --git a/configure b/configure new file mode 100755 index 00000000..1a728b32 --- /dev/null +++ b/configure @@ -0,0 +1,5517 @@ +#! /bin/sh + +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf version 2.12.970309 +# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Defaults: +ac_help= +ac_default_prefix=/usr/local +# Any additions from configure.in: +ac_default_prefix=/usr/local +ac_help="$ac_help + --disable-full-paths control whether full utility pathnames are used (default: on)" +ac_help="$ac_help + --with-screen=XXX select screen type + (XXX is curses (default), ncurses or slang)" +ac_help="$ac_help + --disable-parent-dir-refs + disable \"Up-to\" parent-links in directory listings" +ac_help="$ac_help + --disable-echo develop: display \"compiling\" commands (default: on)" +ac_help="$ac_help + --enable-find-leaks develop: logic for testing memory leaks (default: off)" +ac_help="$ac_help + --enable-debug develop: logic for testing memory leaks (default: off)" +ac_help="$ac_help + --enable-warnings develop: GCC compiler warnings (default: off)" + +# Initialize some variables set by options. +# The variables have the same names as the options, with +# dashes changed to underlines. +build=NONE +cache_file=./config.cache +exec_prefix=NONE +host=NONE +no_create= +nonopt=NONE +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +target=NONE +verbose= +x_includes=NONE +x_libraries=NONE +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +# Initialize some other variables. +subdirs= +MFLAGS= MAKEFLAGS= +# Maximum number of lines to put in a shell here document. +ac_max_here_lines=12 + +ac_prev= +for ac_option +do + + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir="$ac_optarg" ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build="$ac_optarg" ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file="$ac_optarg" ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir="$ac_optarg" ;; + + -disable-* | --disable-*) + ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + eval "enable_${ac_feature}=no" ;; + + -enable-* | --enable-*) + ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "enable_${ac_feature}='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix="$ac_optarg" ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he) + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat << EOF +Usage: configure [options] [host] +Options: [defaults in brackets after descriptions] +Configuration: + --cache-file=FILE cache test results in FILE + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages + --version print the version of autoconf that created configure +Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [same as prefix] + --bindir=DIR user executables in DIR [EPREFIX/bin] + --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] + --libexecdir=DIR program executables in DIR [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data in DIR + [PREFIX/share] + --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data in DIR + [PREFIX/com] + --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] + --libdir=DIR object code libraries in DIR [EPREFIX/lib] + --includedir=DIR C header files in DIR [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + --srcdir=DIR find the sources in DIR [configure dir or ..] + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM + run sed PROGRAM on installed program names +EOF + cat << EOF +Host type: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] +Features and packages: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +EOF + if test -n "$ac_help"; then + echo "--enable and --with options recognized:$ac_help" + fi + exit 0 ;; + + -host | --host | --hos | --ho) + ac_prev=host ;; + -host=* | --host=* | --hos=* | --ho=*) + host="$ac_optarg" ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir="$ac_optarg" ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir="$ac_optarg" ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir="$ac_optarg" ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir="$ac_optarg" ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir="$ac_optarg" ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir="$ac_optarg" ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir="$ac_optarg" ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix="$ac_optarg" ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix="$ac_optarg" ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix="$ac_optarg" ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name="$ac_optarg" ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir="$ac_optarg" ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir="$ac_optarg" ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site="$ac_optarg" ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir="$ac_optarg" ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir="$ac_optarg" ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target="$ac_optarg" ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers) + echo "configure generated by autoconf version 2.12.970309" + exit 0 ;; + + -with-* | --with-*) + ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "with_${ac_package}='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`echo $ac_option|sed -e 's/-*without-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + eval "with_${ac_package}=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes="$ac_optarg" ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries="$ac_optarg" ;; + + -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + ;; + + *) + if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then + echo "configure: warning: $ac_option: invalid host type" 1>&2 + fi + if test "x$nonopt" != xNONE; then + { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } + fi + nonopt="$ac_option" + ;; + + esac +done + +if test -n "$ac_prev"; then + { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } +fi + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 6 checking for... messages and results +# 5 compiler messages saved in config.log +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>./config.log + +echo "\ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. +" 1>&5 + +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell metacharacters. +ac_configure_args= +for ac_arg +do + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args $ac_arg" ;; + esac +done + +# NLS nuisances. +# Only set these to C if already set. These must not be set unconditionally +# because not all systems understand e.g. LANG=C (notably SCO). +# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! +# Non-C LC_CTYPE values break the ctype check. +if test "${LANG+set}" = set; then LANG=C; export LANG; fi +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi +if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo > confdefs.h + +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +ac_unique_file=userdefs.h + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + else + { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + fi +fi +srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` + +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + echo "loading site script $ac_site_file" + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + echo "loading cache $cache_file" + . $cache_file +else + echo "creating cache $cache_file" + > $cache_file +fi + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + + + + + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } +fi +ac_config_guess=$ac_aux_dir/config.guess +ac_config_sub=$ac_aux_dir/config.sub +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + + +# Make sure we can run config.sub. +if $ac_config_sub sun4 >/dev/null 2>&1; then : +else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } +fi + +echo $ac_n "checking host system type""... $ac_c" 1>&6 +echo "configure:568: checking host system type" >&5 + +host_alias=$host +case "$host_alias" in +NONE) + case $nonopt in + NONE) + if host_alias=`$ac_config_guess`; then : + else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } + fi ;; + *) host_alias=$nonopt ;; + esac ;; +esac + +host=`$ac_config_sub $host_alias` +host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +echo "$ac_t""$host" 1>&6 + + + +# Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:593: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="gcc" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:622: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + ac_prog_rejected=no + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + break + fi + done + IFS="$ac_save_ifs" +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" "$@" + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } +fi + +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +echo "configure:670: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +cat > conftest.$ac_ext <<EOF +#line 680 "configure" +#include "confdefs.h" +main(){return(0);} +EOF +if { (eval echo configure:684: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then + ac_cv_prog_cc_cross=no + else + ac_cv_prog_cc_cross=yes + fi +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_prog_cc_works=no +fi +rm -fr conftest* + +echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 +if test $ac_cv_prog_cc_works = no; then + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } +fi +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +echo "configure:704: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 +cross_compiling=$ac_cv_prog_cc_cross + +echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +echo "configure:709: checking whether we are using GNU C" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <<EOF +#ifdef __GNUC__ + yes; +#endif +EOF +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:718: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes +else + ac_cv_prog_gcc=no +fi +fi + +echo "$ac_t""$ac_cv_prog_gcc" 1>&6 + +if test $ac_cv_prog_gcc = yes; then + GCC=yes + ac_test_CFLAGS="${CFLAGS+set}" + ac_save_CFLAGS="$CFLAGS" + CFLAGS= + echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +echo "configure:733: checking whether ${CC-cc} accepts -g" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'void f(){}' > conftest.c +if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then + ac_cv_prog_cc_g=yes +else + ac_cv_prog_cc_g=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 + if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" + elif test $ac_cv_prog_cc_g = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-O2" + fi +else + GCC= + test "${CFLAGS+set}" = set || CFLAGS="-g" +fi + +echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +echo "configure:761: checking how to run the C preprocessor" >&5 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then +if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + # This must be in double quotes, not single quotes, because CPP may get + # substituted into the Makefile and "${CC-cc}" will confuse make. + CPP="${CC-cc} -E" + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. + cat > conftest.$ac_ext <<EOF +#line 776 "configure" +#include "confdefs.h" +#include <assert.h> +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:782: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext <<EOF +#line 793 "configure" +#include "confdefs.h" +#include <assert.h> +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:799: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP=/lib/cpp +fi +rm -f conftest* +fi +rm -f conftest* + ac_cv_prog_CPP="$CPP" +fi + CPP="$ac_cv_prog_CPP" +else + ac_cv_prog_CPP="$CPP" +fi +echo "$ac_t""$CPP" 1>&6 + +# Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:824: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_RANLIB="ranlib" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" +fi +fi +RANLIB="$ac_cv_prog_RANLIB" +if test -n "$RANLIB"; then + echo "$ac_t""$RANLIB" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +echo "configure:851: checking whether ${MAKE-make} sets \${MAKE}" >&5 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftestmake <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftestmake +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$ac_t""yes" 1>&6 + SET_MAKE= +else + echo "$ac_t""no" 1>&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +echo $ac_n "checking for style of include in makefiles""... $ac_c" 1>&6 +echo "configure:879: checking for style of include in makefiles" >&5 +make_include_left="" +make_include_right="" +make_include_quote="" +for cf_include in "include" ".include" "!include" +do + for cf_quote in ' ' '"' + do + cat >WWW/Library/unix/makefile <<CF_EOF +${cf_include} ${cf_quote}../../Library/Implementation/Version.make${cf_quote} +all : + @echo 'cf_make_include=OK' +CF_EOF + cf_make_include="" + eval `cd WWW/Library/unix && ${MAKE-make} 2>/dev/null | grep cf_make_include=OK` + if test -n "$cf_make_include"; then + make_include_left="$cf_include" + make_include_quote="$cf_quote" + break + fi + done + test -n "$cf_make_include" && break +done + +if test -z "$make_include_left" ; then + { echo "configure: error: Your $ac_make program does not support includes" 1>&2; exit 1; } +fi +if test -n "$make_include_quote" ; then + make_include_left="$make_include_left $make_include_quote" + make_include_right="$make_include_quote" +fi +echo "$ac_t""${make_include_left}file${make_include_right}" 1>&6 + + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +echo "configure:925: checking for a BSD compatible install" >&5 +if test -z "$INSTALL"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + # Account for people who put trailing slashes in PATH elements. + case "$ac_dir/" in + /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + for ac_prog in ginstall installbsd scoinst install; do + if test -f $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + # OSF/1 installbsd also uses dspmsg, but is usable. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + IFS="$ac_save_IFS" + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL="$ac_cv_path_install" + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL="$ac_install_sh" + fi +fi +echo "$ac_t""$INSTALL" 1>&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + +echo $ac_n "checking if you want full utility pathnames""... $ac_c" 1>&6 +echo "configure:976: checking if you want full utility pathnames" >&5 +# Check whether --enable-full-paths or --disable-full-paths was given. +if test "${enable_full_paths+set}" = set; then + enableval="$enable_full_paths" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + with_full_paths=no + else + with_full_paths=yes + fi +else + enableval=yes + with_full_paths=yes + +fi + +echo "$ac_t""$with_full_paths" 1>&6 + + +echo $ac_n "checking for system mailer""... $ac_c" 1>&6 +echo "configure:996: checking for system mailer" >&5 +if eval "test \"`echo '$''{'cf_cv_SYSTEM_MAIL'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cf_cv_SYSTEM_MAIL=unknown + for cv_path in /usr/mmdf/bin/submit \ + /usr/sbin/sendmail \ + /usr/lib/sendmail \ + + do + if test -f $cv_path ; then + cf_cv_SYSTEM_MAIL=$cv_path + break + fi + done + +fi + +echo "$ac_t""$cf_cv_SYSTEM_MAIL" 1>&6 +cat >> confdefs.h <<EOF +#define SYSTEM_MAIL "$cf_cv_SYSTEM_MAIL" +EOF + + + +echo $ac_n "checking system mail flags""... $ac_c" 1>&6 +echo "configure:1023: checking system mail flags" >&5 +if eval "test \"`echo '$''{'cf_cv_system_mail_flags'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + case $cf_cv_SYSTEM_MAIL in + */mmdf/*) + cf_cv_system_mail_flags="-mlruxto,cc\\\\*" + ;; + *) + cf_cv_system_mail_flags="-t -oi" + esac + +fi + +echo "$ac_t""$cf_cv_system_mail_flags" 1>&6 +cat >> confdefs.h <<EOF +#define SYSTEM_MAIL_FLAGS "$cf_cv_system_mail_flags" +EOF + + + + +test -z "$CHMOD" && CHMOD=chmod +if test "$with_full_paths" = yes ; then + # Extract the first word of "chmod", so it can be a program name with args. +set dummy chmod; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1051: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_CHMOD'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$CHMOD" in + /*) + ac_cv_path_CHMOD="$CHMOD" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_CHMOD="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_CHMOD" && ac_cv_path_CHMOD="$CHMOD" + ;; +esac +fi +CHMOD="$ac_cv_path_CHMOD" +if test -n "$CHMOD"; then + echo "$ac_t""$CHMOD" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + echo $ac_n "checking for chmod""... $ac_c" 1>&6 +echo "configure:1082: checking for chmod" >&5 + echo "$ac_t""$CHMOD" 1>&6 +fi + +cf_path_prog="" +cf_path_args="" +IFS="${IFS= }"; cf_save_ifs="$IFS"; IFS="${IFS}:" +for cf_temp in $ac_cv_path_CHMOD +do + if test -z "$cf_path_prog" ; then + cf_path_prog="$cf_temp" + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +cat >> confdefs.h <<EOF +#define CHMOD_PATH "$cf_path_prog" +EOF + +test -n "$cf_path_args" && cat >> confdefs.h <<EOF +#define CHMOD_ARGS "$cf_path_args" +EOF + + + +test -z "$COMPRESS" && COMPRESS=compress +if test "$with_full_paths" = yes ; then + # Extract the first word of "compress", so it can be a program name with args. +set dummy compress; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1116: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_COMPRESS'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$COMPRESS" in + /*) + ac_cv_path_COMPRESS="$COMPRESS" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_COMPRESS="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_COMPRESS" && ac_cv_path_COMPRESS="$COMPRESS" + ;; +esac +fi +COMPRESS="$ac_cv_path_COMPRESS" +if test -n "$COMPRESS"; then + echo "$ac_t""$COMPRESS" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + echo $ac_n "checking for compress""... $ac_c" 1>&6 +echo "configure:1147: checking for compress" >&5 + echo "$ac_t""$COMPRESS" 1>&6 +fi + +cf_path_prog="" +cf_path_args="" +IFS="${IFS= }"; cf_save_ifs="$IFS"; IFS="${IFS}:" +for cf_temp in $ac_cv_path_COMPRESS +do + if test -z "$cf_path_prog" ; then + cf_path_prog="$cf_temp" + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +cat >> confdefs.h <<EOF +#define COMPRESS_PATH "$cf_path_prog" +EOF + +test -n "$cf_path_args" && cat >> confdefs.h <<EOF +#define COMPRESS_ARGS "$cf_path_args" +EOF + + + +test -z "$COPY" && COPY=cp +if test "$with_full_paths" = yes ; then + # Extract the first word of "cp", so it can be a program name with args. +set dummy cp; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1181: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_COPY'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$COPY" in + /*) + ac_cv_path_COPY="$COPY" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_COPY="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_COPY" && ac_cv_path_COPY="$COPY" + ;; +esac +fi +COPY="$ac_cv_path_COPY" +if test -n "$COPY"; then + echo "$ac_t""$COPY" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + echo $ac_n "checking for cp""... $ac_c" 1>&6 +echo "configure:1212: checking for cp" >&5 + echo "$ac_t""$COPY" 1>&6 +fi + +cf_path_prog="" +cf_path_args="" +IFS="${IFS= }"; cf_save_ifs="$IFS"; IFS="${IFS}:" +for cf_temp in $ac_cv_path_COPY +do + if test -z "$cf_path_prog" ; then + cf_path_prog="$cf_temp" + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +cat >> confdefs.h <<EOF +#define COPY_PATH "$cf_path_prog" +EOF + +test -n "$cf_path_args" && cat >> confdefs.h <<EOF +#define COPY_ARGS "$cf_path_args" +EOF + + + +test -z "$GZIP" && GZIP=gzip +if test "$with_full_paths" = yes ; then + # Extract the first word of "gzip", so it can be a program name with args. +set dummy gzip; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1246: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_GZIP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$GZIP" in + /*) + ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_GZIP="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_GZIP" && ac_cv_path_GZIP="$GZIP" + ;; +esac +fi +GZIP="$ac_cv_path_GZIP" +if test -n "$GZIP"; then + echo "$ac_t""$GZIP" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + echo $ac_n "checking for gzip""... $ac_c" 1>&6 +echo "configure:1277: checking for gzip" >&5 + echo "$ac_t""$GZIP" 1>&6 +fi + +cf_path_prog="" +cf_path_args="" +IFS="${IFS= }"; cf_save_ifs="$IFS"; IFS="${IFS}:" +for cf_temp in $ac_cv_path_GZIP +do + if test -z "$cf_path_prog" ; then + cf_path_prog="$cf_temp" + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +cat >> confdefs.h <<EOF +#define GZIP_PATH "$cf_path_prog" +EOF + +test -n "$cf_path_args" && cat >> confdefs.h <<EOF +#define GZIP_ARGS "$cf_path_args" +EOF + + + +test -z "$INSTALL" && INSTALL=install +if test "$with_full_paths" = yes ; then + # Extract the first word of "install", so it can be a program name with args. +set dummy install; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1311: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_INSTALL'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$INSTALL" in + /*) + ac_cv_path_INSTALL="$INSTALL" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_INSTALL="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_INSTALL" && ac_cv_path_INSTALL="$INSTALL" + ;; +esac +fi +INSTALL="$ac_cv_path_INSTALL" +if test -n "$INSTALL"; then + echo "$ac_t""$INSTALL" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + echo $ac_n "checking for install""... $ac_c" 1>&6 +echo "configure:1342: checking for install" >&5 + echo "$ac_t""$INSTALL" 1>&6 +fi + +cf_path_prog="" +cf_path_args="" +IFS="${IFS= }"; cf_save_ifs="$IFS"; IFS="${IFS}:" +for cf_temp in $ac_cv_path_INSTALL +do + if test -z "$cf_path_prog" ; then + cf_path_prog="$cf_temp" + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +cat >> confdefs.h <<EOF +#define INSTALL_PATH "$cf_path_prog" +EOF + +test -n "$cf_path_args" && cat >> confdefs.h <<EOF +#define INSTALL_ARGS "$cf_path_args" +EOF + + + +test -z "$MKDIR" && MKDIR=mkdir +if test "$with_full_paths" = yes ; then + # Extract the first word of "mkdir", so it can be a program name with args. +set dummy mkdir; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1376: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MKDIR'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MKDIR" in + /*) + ac_cv_path_MKDIR="$MKDIR" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_MKDIR="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_MKDIR" && ac_cv_path_MKDIR="$MKDIR" + ;; +esac +fi +MKDIR="$ac_cv_path_MKDIR" +if test -n "$MKDIR"; then + echo "$ac_t""$MKDIR" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + echo $ac_n "checking for mkdir""... $ac_c" 1>&6 +echo "configure:1407: checking for mkdir" >&5 + echo "$ac_t""$MKDIR" 1>&6 +fi + +cf_path_prog="" +cf_path_args="" +IFS="${IFS= }"; cf_save_ifs="$IFS"; IFS="${IFS}:" +for cf_temp in $ac_cv_path_MKDIR +do + if test -z "$cf_path_prog" ; then + cf_path_prog="$cf_temp" + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +cat >> confdefs.h <<EOF +#define MKDIR_PATH "$cf_path_prog" +EOF + +test -n "$cf_path_args" && cat >> confdefs.h <<EOF +#define MKDIR_ARGS "$cf_path_args" +EOF + + + +test -z "$MV" && MV=mv +if test "$with_full_paths" = yes ; then + # Extract the first word of "mv", so it can be a program name with args. +set dummy mv; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1441: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MV'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MV" in + /*) + ac_cv_path_MV="$MV" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_MV="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_MV" && ac_cv_path_MV="$MV" + ;; +esac +fi +MV="$ac_cv_path_MV" +if test -n "$MV"; then + echo "$ac_t""$MV" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + echo $ac_n "checking for mv""... $ac_c" 1>&6 +echo "configure:1472: checking for mv" >&5 + echo "$ac_t""$MV" 1>&6 +fi + +cf_path_prog="" +cf_path_args="" +IFS="${IFS= }"; cf_save_ifs="$IFS"; IFS="${IFS}:" +for cf_temp in $ac_cv_path_MV +do + if test -z "$cf_path_prog" ; then + cf_path_prog="$cf_temp" + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +cat >> confdefs.h <<EOF +#define MV_PATH "$cf_path_prog" +EOF + +test -n "$cf_path_args" && cat >> confdefs.h <<EOF +#define MV_ARGS "$cf_path_args" +EOF + + + +test -z "$RM" && RM=rm +if test "$with_full_paths" = yes ; then + # Extract the first word of "rm", so it can be a program name with args. +set dummy rm; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1506: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_RM'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$RM" in + /*) + ac_cv_path_RM="$RM" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_RM="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_RM" && ac_cv_path_RM="$RM" + ;; +esac +fi +RM="$ac_cv_path_RM" +if test -n "$RM"; then + echo "$ac_t""$RM" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + echo $ac_n "checking for rm""... $ac_c" 1>&6 +echo "configure:1537: checking for rm" >&5 + echo "$ac_t""$RM" 1>&6 +fi + +cf_path_prog="" +cf_path_args="" +IFS="${IFS= }"; cf_save_ifs="$IFS"; IFS="${IFS}:" +for cf_temp in $ac_cv_path_RM +do + if test -z "$cf_path_prog" ; then + cf_path_prog="$cf_temp" + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +cat >> confdefs.h <<EOF +#define RM_PATH "$cf_path_prog" +EOF + +test -n "$cf_path_args" && cat >> confdefs.h <<EOF +#define RM_ARGS "$cf_path_args" +EOF + + + +test -z "$TAR" && TAR=tar +if test "$with_full_paths" = yes ; then + # Extract the first word of "tar", so it can be a program name with args. +set dummy tar; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1571: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_TAR'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$TAR" in + /*) + ac_cv_path_TAR="$TAR" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_TAR="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_TAR" && ac_cv_path_TAR="$TAR" + ;; +esac +fi +TAR="$ac_cv_path_TAR" +if test -n "$TAR"; then + echo "$ac_t""$TAR" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + echo $ac_n "checking for tar""... $ac_c" 1>&6 +echo "configure:1602: checking for tar" >&5 + echo "$ac_t""$TAR" 1>&6 +fi + +cf_path_prog="" +cf_path_args="" +IFS="${IFS= }"; cf_save_ifs="$IFS"; IFS="${IFS}:" +for cf_temp in $ac_cv_path_TAR +do + if test -z "$cf_path_prog" ; then + cf_path_prog="$cf_temp" + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +cat >> confdefs.h <<EOF +#define TAR_PATH "$cf_path_prog" +EOF + +test -n "$cf_path_args" && cat >> confdefs.h <<EOF +#define TAR_ARGS "$cf_path_args" +EOF + + + +test -z "$TOUCH" && TOUCH=touch +if test "$with_full_paths" = yes ; then + # Extract the first word of "touch", so it can be a program name with args. +set dummy touch; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1636: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_TOUCH'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$TOUCH" in + /*) + ac_cv_path_TOUCH="$TOUCH" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_TOUCH="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_TOUCH" && ac_cv_path_TOUCH="$TOUCH" + ;; +esac +fi +TOUCH="$ac_cv_path_TOUCH" +if test -n "$TOUCH"; then + echo "$ac_t""$TOUCH" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + echo $ac_n "checking for touch""... $ac_c" 1>&6 +echo "configure:1667: checking for touch" >&5 + echo "$ac_t""$TOUCH" 1>&6 +fi + +cf_path_prog="" +cf_path_args="" +IFS="${IFS= }"; cf_save_ifs="$IFS"; IFS="${IFS}:" +for cf_temp in $ac_cv_path_TOUCH +do + if test -z "$cf_path_prog" ; then + cf_path_prog="$cf_temp" + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +cat >> confdefs.h <<EOF +#define TOUCH_PATH "$cf_path_prog" +EOF + +test -n "$cf_path_args" && cat >> confdefs.h <<EOF +#define TOUCH_ARGS "$cf_path_args" +EOF + + + +test -z "$UNCOMPRESS" && UNCOMPRESS=gunzip +if test "$with_full_paths" = yes ; then + # Extract the first word of "gunzip", so it can be a program name with args. +set dummy gunzip; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1701: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_UNCOMPRESS'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$UNCOMPRESS" in + /*) + ac_cv_path_UNCOMPRESS="$UNCOMPRESS" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_UNCOMPRESS="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_UNCOMPRESS" && ac_cv_path_UNCOMPRESS="$UNCOMPRESS" + ;; +esac +fi +UNCOMPRESS="$ac_cv_path_UNCOMPRESS" +if test -n "$UNCOMPRESS"; then + echo "$ac_t""$UNCOMPRESS" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + echo $ac_n "checking for gunzip""... $ac_c" 1>&6 +echo "configure:1732: checking for gunzip" >&5 + echo "$ac_t""$UNCOMPRESS" 1>&6 +fi + +cf_path_prog="" +cf_path_args="" +IFS="${IFS= }"; cf_save_ifs="$IFS"; IFS="${IFS}:" +for cf_temp in $ac_cv_path_UNCOMPRESS +do + if test -z "$cf_path_prog" ; then + cf_path_prog="$cf_temp" + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +cat >> confdefs.h <<EOF +#define UNCOMPRESS_PATH "$cf_path_prog" +EOF + +test -n "$cf_path_args" && cat >> confdefs.h <<EOF +#define UNCOMPRESS_ARGS "$cf_path_args" +EOF + + + +test -z "$UNZIP" && UNZIP=unzip +if test "$with_full_paths" = yes ; then + # Extract the first word of "unzip", so it can be a program name with args. +set dummy unzip; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1766: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_UNZIP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$UNZIP" in + /*) + ac_cv_path_UNZIP="$UNZIP" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_UNZIP="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_UNZIP" && ac_cv_path_UNZIP="$UNZIP" + ;; +esac +fi +UNZIP="$ac_cv_path_UNZIP" +if test -n "$UNZIP"; then + echo "$ac_t""$UNZIP" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + echo $ac_n "checking for unzip""... $ac_c" 1>&6 +echo "configure:1797: checking for unzip" >&5 + echo "$ac_t""$UNZIP" 1>&6 +fi + +cf_path_prog="" +cf_path_args="" +IFS="${IFS= }"; cf_save_ifs="$IFS"; IFS="${IFS}:" +for cf_temp in $ac_cv_path_UNZIP +do + if test -z "$cf_path_prog" ; then + cf_path_prog="$cf_temp" + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +cat >> confdefs.h <<EOF +#define UNZIP_PATH "$cf_path_prog" +EOF + +test -n "$cf_path_args" && cat >> confdefs.h <<EOF +#define UNZIP_ARGS "$cf_path_args" +EOF + + + +test -z "$UUDECODE" && UUDECODE=uudecode +if test "$with_full_paths" = yes ; then + # Extract the first word of "uudecode", so it can be a program name with args. +set dummy uudecode; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1831: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_UUDECODE'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$UUDECODE" in + /*) + ac_cv_path_UUDECODE="$UUDECODE" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_UUDECODE="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_UUDECODE" && ac_cv_path_UUDECODE="$UUDECODE" + ;; +esac +fi +UUDECODE="$ac_cv_path_UUDECODE" +if test -n "$UUDECODE"; then + echo "$ac_t""$UUDECODE" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + echo $ac_n "checking for uudecode""... $ac_c" 1>&6 +echo "configure:1862: checking for uudecode" >&5 + echo "$ac_t""$UUDECODE" 1>&6 +fi + +cf_path_prog="" +cf_path_args="" +IFS="${IFS= }"; cf_save_ifs="$IFS"; IFS="${IFS}:" +for cf_temp in $ac_cv_path_UUDECODE +do + if test -z "$cf_path_prog" ; then + cf_path_prog="$cf_temp" + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +cat >> confdefs.h <<EOF +#define UUDECODE_PATH "$cf_path_prog" +EOF + +test -n "$cf_path_args" && cat >> confdefs.h <<EOF +#define UUDECODE_ARGS "$cf_path_args" +EOF + + + +test -z "$ZCAT" && ZCAT=zcat +if test "$with_full_paths" = yes ; then + # Extract the first word of "zcat", so it can be a program name with args. +set dummy zcat; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1896: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_ZCAT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$ZCAT" in + /*) + ac_cv_path_ZCAT="$ZCAT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_ZCAT="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_ZCAT" && ac_cv_path_ZCAT="$ZCAT" + ;; +esac +fi +ZCAT="$ac_cv_path_ZCAT" +if test -n "$ZCAT"; then + echo "$ac_t""$ZCAT" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + echo $ac_n "checking for zcat""... $ac_c" 1>&6 +echo "configure:1927: checking for zcat" >&5 + echo "$ac_t""$ZCAT" 1>&6 +fi + +cf_path_prog="" +cf_path_args="" +IFS="${IFS= }"; cf_save_ifs="$IFS"; IFS="${IFS}:" +for cf_temp in $ac_cv_path_ZCAT +do + if test -z "$cf_path_prog" ; then + cf_path_prog="$cf_temp" + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +cat >> confdefs.h <<EOF +#define ZCAT_PATH "$cf_path_prog" +EOF + +test -n "$cf_path_args" && cat >> confdefs.h <<EOF +#define ZCAT_ARGS "$cf_path_args" +EOF + + + +test -z "$ZIP" && ZIP=zip +if test "$with_full_paths" = yes ; then + # Extract the first word of "zip", so it can be a program name with args. +set dummy zip; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1961: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_ZIP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$ZIP" in + /*) + ac_cv_path_ZIP="$ZIP" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_ZIP="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_ZIP" && ac_cv_path_ZIP="$ZIP" + ;; +esac +fi +ZIP="$ac_cv_path_ZIP" +if test -n "$ZIP"; then + echo "$ac_t""$ZIP" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + echo $ac_n "checking for zip""... $ac_c" 1>&6 +echo "configure:1992: checking for zip" >&5 + echo "$ac_t""$ZIP" 1>&6 +fi + +cf_path_prog="" +cf_path_args="" +IFS="${IFS= }"; cf_save_ifs="$IFS"; IFS="${IFS}:" +for cf_temp in $ac_cv_path_ZIP +do + if test -z "$cf_path_prog" ; then + cf_path_prog="$cf_temp" + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +cat >> confdefs.h <<EOF +#define ZIP_PATH "$cf_path_prog" +EOF + +test -n "$cf_path_args" && cat >> confdefs.h <<EOF +#define ZIP_ARGS "$cf_path_args" +EOF + + + + +cat >> confdefs.h <<\EOF +#define UNIX 1 +EOF + + +echo $ac_n "checking for working const""... $ac_c" 1>&6 +echo "configure:2028: checking for working const" >&5 +if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 2033 "configure" +#include "confdefs.h" + +int main() { + +/* Ultrix mips cc rejects this. */ +typedef int charset[2]; const charset x; +/* SunOS 4.1.1 cc rejects this. */ +char const *const *ccp; +char **p; +/* NEC SVR4.0.2 mips cc rejects this. */ +struct point {int x, y;}; +static struct point const zero = {0,0}; +/* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in an arm + of an if-expression whose if-part is not a constant expression */ +const char *g = "string"; +ccp = &g + (g ? g-g : 0); +/* HPUX 7.0 cc rejects these. */ +++ccp; +p = (char**) ccp; +ccp = (char const *const *) p; +{ /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; +} +{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; +} +{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; +} +{ /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; +} +{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; +} + +; return 0; } +EOF +if { (eval echo configure:2082: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_const=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_c_const=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_c_const" 1>&6 +if test $ac_cv_c_const = no; then + cat >> confdefs.h <<\EOF +#define const +EOF + +fi + + +case $host_os in +linux*) + CFLAGS="$CFLAGS -DLINUX" + ;; +ultrix*) + # Increase the maximum size of functions that will be optimized. + test -z "$GCC" && CFLAGS="$CFLAGS -O -Olimit 600" + CFLAGS="$CFLAGS -DULTRIX" + ;; +esac + + + +NETLIBS="" +echo $ac_n "checking for gethostname""... $ac_c" 1>&6 +echo "configure:2118: checking for gethostname" >&5 +if eval "test \"`echo '$''{'ac_cv_func_gethostname'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 2123 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char gethostname(); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostname(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_gethostname) || defined (__stub___gethostname) +choke me +#else +gethostname(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2146: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_gethostname=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_gethostname=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'gethostname`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define HAVE_GETHOSTNAME 1 +EOF + +else + echo "$ac_t""no" 1>&6 + + echo $ac_n "checking for gethostname in -lnsl""... $ac_c" 1>&6 +echo "configure:2168: checking for gethostname in -lnsl" >&5 +ac_lib_var=`echo nsl'_'gethostname | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lnsl $NETLIBS $LIBS" +cat > conftest.$ac_ext <<EOF +#line 2176 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostname(); + +int main() { +gethostname() +; return 0; } +EOF +if { (eval echo configure:2187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define HAVE_GETHOSTNAME 1 +EOF + + NETLIBS="-lnsl $NETLIBS" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for gethostname in -lsocket""... $ac_c" 1>&6 +echo "configure:2210: checking for gethostname in -lsocket" >&5 +ac_lib_var=`echo socket'_'gethostname | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lsocket $LIBS" +cat > conftest.$ac_ext <<EOF +#line 2218 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostname(); + +int main() { +gethostname() +; return 0; } +EOF +if { (eval echo configure:2229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define HAVE_GETHOSTNAME 1 +EOF + + NETLIBS="-lsocket $NETLIBS" +else + echo "$ac_t""no" 1>&6 +fi + +fi + +fi + +echo $ac_n "checking for socket""... $ac_c" 1>&6 +echo "configure:2258: checking for socket" >&5 +if eval "test \"`echo '$''{'ac_cv_func_socket'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 2263 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char socket(); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char socket(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_socket) || defined (__stub___socket) +choke me +#else +socket(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_socket=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_socket=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'socket`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define HAVE_SOCKET 1 +EOF + +else + echo "$ac_t""no" 1>&6 + + echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6 +echo "configure:2308: checking for socket in -lsocket" >&5 +ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lsocket $NETLIBS $LIBS" +cat > conftest.$ac_ext <<EOF +#line 2316 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char socket(); + +int main() { +socket() +; return 0; } +EOF +if { (eval echo configure:2327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define HAVE_SOCKET 1 +EOF + + NETLIBS="-lsocket $NETLIBS" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for socket in -lbsd""... $ac_c" 1>&6 +echo "configure:2350: checking for socket in -lbsd" >&5 +ac_lib_var=`echo bsd'_'socket | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lbsd $LIBS" +cat > conftest.$ac_ext <<EOF +#line 2358 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char socket(); + +int main() { +socket() +; return 0; } +EOF +if { (eval echo configure:2369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define HAVE_SOCKET 1 +EOF + + NETLIBS="-lbsd $NETLIBS" +else + echo "$ac_t""no" 1>&6 +fi + +fi + +fi + +echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 +echo "configure:2398: checking for gethostbyname" >&5 +if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 2403 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char gethostbyname(); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) +choke me +#else +gethostbyname(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_gethostbyname=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_gethostbyname=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define HAVE_GETHOSTBYNAME 1 +EOF + +else + echo "$ac_t""no" 1>&6 + + echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 +echo "configure:2448: checking for gethostbyname in -lnsl" >&5 +ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lnsl $NETLIBS $LIBS" +cat > conftest.$ac_ext <<EOF +#line 2456 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname(); + +int main() { +gethostbyname() +; return 0; } +EOF +if { (eval echo configure:2467: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define HAVE_GETHOSTBYNAME 1 +EOF + + NETLIBS="-lnsl $NETLIBS" +else + echo "$ac_t""no" 1>&6 +fi + +fi + +echo $ac_n "checking for strcasecmp""... $ac_c" 1>&6 +echo "configure:2494: checking for strcasecmp" >&5 +if eval "test \"`echo '$''{'ac_cv_func_strcasecmp'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 2499 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char strcasecmp(); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strcasecmp(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_strcasecmp) || defined (__stub___strcasecmp) +choke me +#else +strcasecmp(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_strcasecmp=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_strcasecmp=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'strcasecmp`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define HAVE_STRCASECMP 1 +EOF + +else + echo "$ac_t""no" 1>&6 + + echo $ac_n "checking for strcasecmp in -lresolv""... $ac_c" 1>&6 +echo "configure:2544: checking for strcasecmp in -lresolv" >&5 +ac_lib_var=`echo resolv'_'strcasecmp | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lresolv $NETLIBS $LIBS" +cat > conftest.$ac_ext <<EOF +#line 2552 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strcasecmp(); + +int main() { +strcasecmp() +; return 0; } +EOF +if { (eval echo configure:2563: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define HAVE_STRCASECMP 1 +EOF + + NETLIBS="-lresolv $NETLIBS" +else + echo "$ac_t""no" 1>&6 +fi + +fi + +LIBS="$LIBS $NETLIBS" + + +echo $ac_n "checking for screen type""... $ac_c" 1>&6 +echo "configure:2593: checking for screen type" >&5 +if eval "test \"`echo '$''{'cf_cv_screen'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + +# Check whether --with-screen or --without-screen was given. +if test "${with_screen+set}" = set; then + withval="$with_screen" + +case $withval in +curses|ncurses|slang) + cf_cv_screen=$withval + ;; +*) { echo "configure: error: Unexpected value" 1>&2; exit 1; } + ;; +esac +else + cf_cv_screen=curses +fi + +fi + +echo "$ac_t""$cf_cv_screen" 1>&6 + +case $cf_cv_screen in +curses) + +echo $ac_n "checking for initscr""... $ac_c" 1>&6 +echo "configure:2621: checking for initscr" >&5 +if eval "test \"`echo '$''{'ac_cv_func_initscr'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 2626 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char initscr(); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_initscr) || defined (__stub___initscr) +choke me +#else +initscr(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_initscr=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_initscr=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'initscr`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 + +if test -d /usr/5lib ; then + # SunOS 3.x or 4.x + CPPFLAGS="$CPPFLAGS -I/usr/5include" + LIBS="$LIBS -L/usr/5lib" +# elif test -d /usr/ccs/lib ; then +# # Solaris 5.x +# LIBS="$LIBS -L/usr/ccs/lib -R/usr/ccs/lib" +fi +cf_save_LIBS="$LIBS" +echo $ac_n "checking for tgoto in -ltermcap""... $ac_c" 1>&6 +echo "configure:2677: checking for tgoto in -ltermcap" >&5 +ac_lib_var=`echo termcap'_'tgoto | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ltermcap $LIBS" +cat > conftest.$ac_ext <<EOF +#line 2685 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgoto(); + +int main() { +tgoto() +; return 0; } +EOF +if { (eval echo configure:2696: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + + LIBS="-ltermcap $cf_save_LIBS" + echo $ac_n "checking for initscr in -lcurses""... $ac_c" 1>&6 +echo "configure:2714: checking for initscr in -lcurses" >&5 +ac_lib_var=`echo curses'_'initscr | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lcurses $LIBS" +cat > conftest.$ac_ext <<EOF +#line 2722 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr(); + +int main() { +initscr() +; return 0; } +EOF +if { (eval echo configure:2733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo curses | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <<EOF +#define $ac_tr_lib 1 +EOF + + LIBS="-lcurses $LIBS" + +else + echo "$ac_t""no" 1>&6 + + echo $ac_n "checking for initscr in -lcursesX""... $ac_c" 1>&6 +echo "configure:2760: checking for initscr in -lcursesX" >&5 +ac_lib_var=`echo cursesX'_'initscr | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lcursesX $LIBS" +cat > conftest.$ac_ext <<EOF +#line 2768 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr(); + +int main() { +initscr() +; return 0; } +EOF +if { (eval echo configure:2779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo cursesX | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <<EOF +#define $ac_tr_lib 1 +EOF + + LIBS="-lcursesX $LIBS" + +else + echo "$ac_t""no" 1>&6 + + echo $ac_n "checking for initscr in -ljcurses""... $ac_c" 1>&6 +echo "configure:2806: checking for initscr in -ljcurses" >&5 +ac_lib_var=`echo jcurses'_'initscr | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ljcurses $LIBS" +cat > conftest.$ac_ext <<EOF +#line 2814 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr(); + +int main() { +initscr() +; return 0; } +EOF +if { (eval echo configure:2825: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo jcurses | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <<EOF +#define $ac_tr_lib 1 +EOF + + LIBS="-ljcurses $LIBS" + +else + echo "$ac_t""no" 1>&6 + + { echo "configure: error: cannot link curses" 1>&2; exit 1; } +fi + +fi + +fi + + +else + echo "$ac_t""no" 1>&6 + + echo $ac_n "checking for initscr in -lcurses""... $ac_c" 1>&6 +echo "configure:2863: checking for initscr in -lcurses" >&5 +ac_lib_var=`echo curses'_'initscr | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lcurses $LIBS" +cat > conftest.$ac_ext <<EOF +#line 2871 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr(); + +int main() { +initscr() +; return 0; } +EOF +if { (eval echo configure:2882: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo curses | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <<EOF +#define $ac_tr_lib 1 +EOF + + LIBS="-lcurses $LIBS" + +else + echo "$ac_t""no" 1>&6 + + { echo "configure: error: cannot link curses" 1>&2; exit 1; } +fi + +fi + + +fi + + +echo $ac_n "checking for curses performance tradeoff""... $ac_c" 1>&6 +echo "configure:2918: checking for curses performance tradeoff" >&5 +if eval "test \"`echo '$''{'cf_cv_curs_performance'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cf_cv_curs_performance=no + cat > conftest.$ac_ext <<EOF +#line 2925 "configure" +#include "confdefs.h" + +#include <curses.h> +int main() { + +#if defined(wbkgdset) && defined(clearok) && defined(getbkgd) + int x = ERR; +#else + int x = ; /* force an error */ +#endif + +; return 0; } +EOF +if { (eval echo configure:2939: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + + cat > conftest.$ac_ext <<EOF +#line 2943 "configure" +#include "confdefs.h" + +#define CURS_PERFORMANCE +#include <curses.h> +int main() { + +#if defined(wbkgdset) && defined(clearok) && defined(getbkgd) + int x = ; /* force an error */ +#else + int x = ERR; +#endif + +; return 0; } +EOF +if { (eval echo configure:2958: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_curs_performance=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +fi + +echo "$ac_t""$cf_cv_curs_performance" 1>&6 +test $cf_cv_curs_performance = yes && cat >> confdefs.h <<\EOF +#define CURS_PERFORMANCE 1 +EOF + + + ;; +ncurses) + +echo $ac_n "checking for ncurses header file""... $ac_c" 1>&6 +echo "configure:2983: checking for ncurses header file" >&5 +if eval "test \"`echo '$''{'cf_cv_ncurses_header'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext <<EOF +#line 2989 "configure" +#include "confdefs.h" +#include <curses.h> +int main() { +printf("%s\n", NCURSES_VERSION) +; return 0; } +EOF +if { (eval echo configure:2996: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_ncurses_header=predefined +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + + cf_search="" +test "$prefix" != NONE && cf_search="$prefix/include $prefix/include/ncurses" +test "$prefix" != /usr/local && cf_search="$cf_search /usr/local/include /usr/local/include/ncurses" +test "$prefix" != /usr && cf_search="$cf_search /usr/include /usr/include/ncurses" + + test -n "$verbose" && echo + for cf_incdir in $cf_search + do + for cf_header in \ + curses.h \ + ncurses.h + do + if egrep "NCURSES" $cf_incdir/$cf_header >/dev/null 2>&1; then + cf_cv_ncurses_header=$cf_incdir/$cf_header + test -n "$verbose" && echo $ac_n " ... found $ac_c" 1>&6 + break + fi + test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&6 + done + test -n "$cf_cv_ncurses_header" && break + done + test -z "$cf_cv_ncurses_header" && { echo "configure: error: not found" 1>&2; exit 1; } + +fi +rm -f conftest* +fi + +echo "$ac_t""$cf_cv_ncurses_header" 1>&6 +cat >> confdefs.h <<\EOF +#define NCURSES 1 +EOF + + +cf_incdir=`echo $cf_cv_ncurses_header | sed -e 's:/[^/]*$::'` + +case $cf_cv_ncurses_header in # (vi +*/ncurses.h) + cat >> confdefs.h <<\EOF +#define NCURSESHEADER 1 +EOF + + ;; +esac + +case $cf_cv_ncurses_header in # (vi +predefined) # (vi + ;; +*) + +for cf_add_incdir in $cf_incdir +do + while true + do + case $cf_add_incdir in + /usr/include) # (vi + ;; + /usr/local/include) # (vi + test -z "$GCC" && CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + ;; + *) # (vi + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + ;; + esac + cf_top_incdir=`echo $cf_add_incdir | sed -e 's:/include/.*$:/include:'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + done +done + + ;; +esac + + echo $ac_n "checking for initscr""... $ac_c" 1>&6 +echo "configure:3077: checking for initscr" >&5 +if eval "test \"`echo '$''{'ac_cv_func_initscr'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 3082 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char initscr(); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_initscr) || defined (__stub___initscr) +choke me +#else +initscr(); +#endif + +; return 0; } +EOF +if { (eval echo configure:3105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_initscr=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_initscr=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'initscr`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 + + +cf_save_LIBS="$LIBS" +case $cf_cv_ncurses_header in +*/ncurses.h) # (vi + cf_header=ncurses.h + ;; +*) # (vi + cf_header=curses.h + ;; +esac +echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6 +echo "configure:3134: checking for Gpm_Open in -lgpm" >&5 +ac_lib_var=`echo gpm'_'Gpm_Open | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lgpm $LIBS" +cat > conftest.$ac_ext <<EOF +#line 3142 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char Gpm_Open(); + +int main() { +Gpm_Open() +; return 0; } +EOF +if { (eval echo configure:3153: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + + echo $ac_n "checking for initscr in -lgpm""... $ac_c" 1>&6 +echo "configure:3170: checking for initscr in -lgpm" >&5 +ac_lib_var=`echo gpm'_'initscr | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lgpm $LIBS" +cat > conftest.$ac_ext <<EOF +#line 3178 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr(); + +int main() { +initscr() +; return 0; } +EOF +if { (eval echo configure:3189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + + # don't try to link with gpm, since it contains curses + echo $ac_n "checking for initscr in -lncurses""... $ac_c" 1>&6 +echo "configure:3207: checking for initscr in -lncurses" >&5 +ac_lib_var=`echo ncurses'_'initscr | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lncurses $LIBS" +cat > conftest.$ac_ext <<EOF +#line 3215 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr(); + +int main() { +initscr() +; return 0; } +EOF +if { (eval echo configure:3226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo ncurses | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <<EOF +#define $ac_tr_lib 1 +EOF + + LIBS="-lncurses $LIBS" + +else + echo "$ac_t""no" 1>&6 +fi + + +else + echo "$ac_t""no" 1>&6 + + echo $ac_n "checking if ncurses needs -lgpm to link""... $ac_c" 1>&6 +echo "configure:3258: checking if ncurses needs -lgpm to link" >&5 + LIBS="-lncurses $cf_save_LIBS" + cat > conftest.$ac_ext <<EOF +#line 3261 "configure" +#include "confdefs.h" +#include <$cf_header> +int main() { +initscr() +; return 0; } +EOF +if { (eval echo configure:3268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + cf_need_gpm=no +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + LIBS="-lncurses -lgpm $cf_save_LIBS" + cat > conftest.$ac_ext <<EOF +#line 3277 "configure" +#include "confdefs.h" +#include <$cf_header> +int main() { +initscr() +; return 0; } +EOF +if { (eval echo configure:3284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + cf_need_gpm=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + { echo "configure: error: cannot link -lncurses" 1>&2; exit 1; } +fi +rm -f conftest* +fi +rm -f conftest* + echo "$ac_t""$cf_need_gpm" 1>&6 + +fi + +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for initscr in -lncurses""... $ac_c" 1>&6 +echo "configure:3303: checking for initscr in -lncurses" >&5 +ac_lib_var=`echo ncurses'_'initscr | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lncurses $LIBS" +cat > conftest.$ac_ext <<EOF +#line 3311 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr(); + +int main() { +initscr() +; return 0; } +EOF +if { (eval echo configure:3322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo ncurses | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <<EOF +#define $ac_tr_lib 1 +EOF + + LIBS="-lncurses $LIBS" + +else + echo "$ac_t""no" 1>&6 +fi + +fi + + +fi + + ;; +slang) + +if eval "test \"`echo '$''{'cf_cv_lib_termcap'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + +cf_cv_lib_termcap=none +# HP-UX 9.x terminfo has setupterm, but no tigetstr. +if test "$termlib" = none; then + echo $ac_n "checking for tigetstr in -ltermlib""... $ac_c" 1>&6 +echo "configure:3365: checking for tigetstr in -ltermlib" >&5 +ac_lib_var=`echo termlib'_'tigetstr | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ltermlib $LIBS" +cat > conftest.$ac_ext <<EOF +#line 3373 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tigetstr(); + +int main() { +tigetstr() +; return 0; } +EOF +if { (eval echo configure:3384: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="$LIBS -ltermlib" cf_cv_lib_termcap=terminfo +else + echo "$ac_t""no" 1>&6 +fi + +fi +if test "$cf_cv_lib_termcap" = none; then + echo $ac_n "checking for tgoto in -ltermlib""... $ac_c" 1>&6 +echo "configure:3407: checking for tgoto in -ltermlib" >&5 +ac_lib_var=`echo termlib'_'tgoto | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ltermlib $LIBS" +cat > conftest.$ac_ext <<EOF +#line 3415 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgoto(); + +int main() { +tgoto() +; return 0; } +EOF +if { (eval echo configure:3426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="$LIBS -ltermlib" cf_cv_lib_termcap=termcap +else + echo "$ac_t""no" 1>&6 +fi + +fi +if test "$cf_cv_lib_termcap" = none; then + # allow curses library for broken AIX system. + echo $ac_n "checking for initscr in -lcurses""... $ac_c" 1>&6 +echo "configure:3450: checking for initscr in -lcurses" >&5 +ac_lib_var=`echo curses'_'initscr | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lcurses $LIBS" +cat > conftest.$ac_ext <<EOF +#line 3458 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr(); + +int main() { +initscr() +; return 0; } +EOF +if { (eval echo configure:3469: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="$LIBS -lcurses" cf_cv_lib_termcap=termcap +else + echo "$ac_t""no" 1>&6 +fi + + echo $ac_n "checking for tgoto in -ltermcap""... $ac_c" 1>&6 +echo "configure:3490: checking for tgoto in -ltermcap" >&5 +ac_lib_var=`echo termcap'_'tgoto | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ltermcap $LIBS" +cat > conftest.$ac_ext <<EOF +#line 3498 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgoto(); + +int main() { +tgoto() +; return 0; } +EOF +if { (eval echo configure:3509: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="$LIBS -ltermcap" cf_cv_lib_termcap=termcap +else + echo "$ac_t""no" 1>&6 +fi + +fi +if test "$cf_cv_lib_termcap" = none; then + echo $ac_n "checking for tgoto in -ltermcap""... $ac_c" 1>&6 +echo "configure:3532: checking for tgoto in -ltermcap" >&5 +ac_lib_var=`echo termcap'_'tgoto | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ltermcap $LIBS" +cat > conftest.$ac_ext <<EOF +#line 3540 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgoto(); + +int main() { +tgoto() +; return 0; } +EOF +if { (eval echo configure:3551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="$LIBS -ltermcap" cf_cv_lib_termcap=termcap +else + echo "$ac_t""no" 1>&6 +fi + +fi +if test "$cf_cv_lib_termcap" = none; then + echo $ac_n "checking for tgoto in -lncurses""... $ac_c" 1>&6 +echo "configure:3574: checking for tgoto in -lncurses" >&5 +ac_lib_var=`echo ncurses'_'tgoto | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lncurses $LIBS" +cat > conftest.$ac_ext <<EOF +#line 3582 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char tgoto(); + +int main() { +tgoto() +; return 0; } +EOF +if { (eval echo configure:3593: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="$LIBS -lncurses" cf_cv_lib_termcap=ncurses +else + echo "$ac_t""no" 1>&6 +fi + +fi + +fi + +if test "$cf_cv_lib_termcap" = none; then + { echo "configure: error: Can't find -ltermlib, -lcurses, or -ltermcap" 1>&2; exit 1; } +fi + + +echo $ac_n "checking for slang header file""... $ac_c" 1>&6 +echo "configure:3623: checking for slang header file" >&5 +if eval "test \"`echo '$''{'cf_cv_slang_header'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cf_search="" +test "$prefix" != NONE && cf_search="$prefix/include $prefix/include/slang" +test "$prefix" != /usr/local && cf_search="$cf_search /usr/local/include /usr/local/include/slang" +test "$prefix" != /usr && cf_search="$cf_search /usr/include /usr/include/slang" + + for cf_incdir in $cf_search + do + for cf_header in \ + slang.h + do + if egrep "SLANG_VERSION" $cf_incdir/$cf_header >/dev/null 2>&1; then + cf_cv_slang_header=$cf_incdir/$cf_header + break + fi + done + test -n "$cf_cv_slang_header" && break + done + test -z "$cf_cv_slang_header" && { echo "configure: error: not found" 1>&2; exit 1; } + +fi + +echo "$ac_t""$cf_cv_slang_header" 1>&6 +cat >> confdefs.h <<\EOF +#define USE_SLANG 1 +EOF + +cf_incdir=`echo $cf_cv_slang_header | sed -e 's:/[^/]*$::'` + +for cf_add_incdir in $cf_incdir +do + while true + do + case $cf_add_incdir in + /usr/include) # (vi + ;; + /usr/local/include) # (vi + test -z "$GCC" && CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + ;; + *) # (vi + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + ;; + esac + cf_top_incdir=`echo $cf_add_incdir | sed -e 's:/include/.*$:/include:'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + done +done + + + + echo $ac_n "checking for SLtt_get_screen_size""... $ac_c" 1>&6 +echo "configure:3679: checking for SLtt_get_screen_size" >&5 +if eval "test \"`echo '$''{'ac_cv_func_SLtt_get_screen_size'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 3684 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char SLtt_get_screen_size(); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char SLtt_get_screen_size(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_SLtt_get_screen_size) || defined (__stub___SLtt_get_screen_size) +choke me +#else +SLtt_get_screen_size(); +#endif + +; return 0; } +EOF +if { (eval echo configure:3707: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_SLtt_get_screen_size=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_SLtt_get_screen_size=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'SLtt_get_screen_size`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 + + echo $ac_n "checking for SLtt_get_screen_size in -lslang""... $ac_c" 1>&6 +echo "configure:3726: checking for SLtt_get_screen_size in -lslang" >&5 +ac_lib_var=`echo slang'_'SLtt_get_screen_size | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lslang $LIBS" +cat > conftest.$ac_ext <<EOF +#line 3734 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char SLtt_get_screen_size(); + +int main() { +SLtt_get_screen_size() +; return 0; } +EOF +if { (eval echo configure:3745: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="-lslang $LIBS" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for SLtt_get_screen_size in -lslang""... $ac_c" 1>&6 +echo "configure:3764: checking for SLtt_get_screen_size in -lslang" >&5 +ac_lib_var=`echo slang'_'SLtt_get_screen_size | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lslang "-lm" $LIBS" +cat > conftest.$ac_ext <<EOF +#line 3772 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char SLtt_get_screen_size(); + +int main() { +SLtt_get_screen_size() +; return 0; } +EOF +if { (eval echo configure:3783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="-lslang -lm $LIBS" +else + echo "$ac_t""no" 1>&6 +{ echo "configure: error: cannot link -lslang" 1>&2; exit 1; } +fi + +fi + +fi + + + ;; +esac + + +echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 +echo "configure:3814: checking for ANSI C header files" >&5 +if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 3819 "configure" +#include "confdefs.h" +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:3827: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + ac_cv_header_stdc=yes +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +cat > conftest.$ac_ext <<EOF +#line 3844 "configure" +#include "confdefs.h" +#include <string.h> +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +cat > conftest.$ac_ext <<EOF +#line 3862 "configure" +#include "confdefs.h" +#include <stdlib.h> +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +if test "$cross_compiling" = yes; then + : +else + cat > conftest.$ac_ext <<EOF +#line 3883 "configure" +#include "confdefs.h" +#include <ctype.h> +#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int main () { int i; for (i = 0; i < 256; i++) +if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); +exit (0); } + +EOF +if { (eval echo configure:3894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_header_stdc=no +fi +rm -fr conftest* +fi + +fi +fi + +echo "$ac_t""$ac_cv_header_stdc" 1>&6 +if test $ac_cv_header_stdc = yes; then + cat >> confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF + +fi + +echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 +echo "configure:3918: checking whether time.h and sys/time.h may both be included" >&5 +if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 3923 "configure" +#include "confdefs.h" +#include <sys/types.h> +#include <sys/time.h> +#include <time.h> +int main() { +struct tm *tp; +; return 0; } +EOF +if { (eval echo configure:3932: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_header_time=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_time=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_header_time" 1>&6 +if test $ac_cv_header_time = yes; then + cat >> confdefs.h <<\EOF +#define TIME_WITH_SYS_TIME 1 +EOF + +fi + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6 +echo "configure:3957: checking for $ac_hdr that defines DIR" >&5 +if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 3962 "configure" +#include "confdefs.h" +#include <sys/types.h> +#include <$ac_hdr> +int main() { +DIR *dirp = 0; +; return 0; } +EOF +if { (eval echo configure:3970: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + eval "ac_cv_header_dirent_$ac_safe=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_dirent_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_dirent_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <<EOF +#define $ac_tr_hdr 1 +EOF + ac_header_dirent=$ac_hdr; break +else + echo "$ac_t""no" 1>&6 +fi +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then +echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6 +echo "configure:3995: checking for opendir in -ldir" >&5 +ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldir $LIBS" +cat > conftest.$ac_ext <<EOF +#line 4003 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir(); + +int main() { +opendir() +; return 0; } +EOF +if { (eval echo configure:4014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="$LIBS -ldir" +else + echo "$ac_t""no" 1>&6 +fi + +else +echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 +echo "configure:4036: checking for opendir in -lx" >&5 +ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lx $LIBS" +cat > conftest.$ac_ext <<EOF +#line 4044 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir(); + +int main() { +opendir() +; return 0; } +EOF +if { (eval echo configure:4055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="$LIBS -lx" +else + echo "$ac_t""no" 1>&6 +fi + +fi + +for ac_hdr in \ + fcntl.h \ + limits.h \ + string.h \ + sys/fcntl.h \ + sys/filio.h \ + sys/ioctl.h \ + sys/time.h \ + termio.h \ + termios.h \ + unistd.h \ + +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:4092: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 4097 "configure" +#include "confdefs.h" +#include <$ac_hdr> +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:4102: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <<EOF +#define $ac_tr_hdr 1 +EOF + +else + echo "$ac_t""no" 1>&6 +fi +done + + +echo $ac_n "checking termio.h and termios.h""... $ac_c" 1>&6 +echo "configure:4130: checking termio.h and termios.h" >&5 +if eval "test \"`echo '$''{'cf_cv_termio_and_termios'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext <<EOF +#line 4136 "configure" +#include "confdefs.h" + +#if HAVE_TERMIO_H +#include <termio.h> +#endif +#if HAVE_TERMIOS_H +#include <termios.h> +#endif +int main() { +putchar (0x0a) +; return 0; } +EOF +if { (eval echo configure:4149: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_termio_and_termios=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_cv_termio_and_termios=no +fi +rm -f conftest* +fi + +echo "$ac_t""$cf_cv_termio_and_termios" 1>&6 +test $cf_cv_termio_and_termios = no && cat >> confdefs.h <<\EOF +#define TERMIO_AND_TERMIOS 1 +EOF + + + + +echo $ac_n "checking for pid_t""... $ac_c" 1>&6 +echo "configure:4170: checking for pid_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 4175 "configure" +#include "confdefs.h" +#include <sys/types.h> +#if STDC_HEADERS +#include <stdlib.h> +#include <stddef.h> +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_pid_t=yes +else + rm -rf conftest* + ac_cv_type_pid_t=no +fi +rm -f conftest* + +fi +echo "$ac_t""$ac_cv_type_pid_t" 1>&6 +if test $ac_cv_type_pid_t = no; then + cat >> confdefs.h <<\EOF +#define pid_t int +EOF + +fi + +ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for vfork.h""... $ac_c" 1>&6 +echo "configure:4204: checking for vfork.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 4209 "configure" +#include "confdefs.h" +#include <vfork.h> +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:4214: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define HAVE_VFORK_H 1 +EOF + +else + echo "$ac_t""no" 1>&6 +fi + +echo $ac_n "checking for working vfork""... $ac_c" 1>&6 +echo "configure:4239: checking for working vfork" >&5 +if eval "test \"`echo '$''{'ac_cv_func_vfork_works'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + echo $ac_n "checking for vfork""... $ac_c" 1>&6 +echo "configure:4245: checking for vfork" >&5 +if eval "test \"`echo '$''{'ac_cv_func_vfork'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 4250 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char vfork(); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char vfork(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_vfork) || defined (__stub___vfork) +choke me +#else +vfork(); +#endif + +; return 0; } +EOF +if { (eval echo configure:4273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_vfork=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_vfork=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'vfork`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +fi + +else + cat > conftest.$ac_ext <<EOF +#line 4294 "configure" +#include "confdefs.h" +/* Thanks to Paul Eggert for this test. */ +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#ifdef HAVE_VFORK_H +#include <vfork.h> +#endif +/* On some sparc systems, changes by the child to local and incoming + argument registers are propagated back to the parent. + The compiler is told about this with #include <vfork.h>, + but some compilers (e.g. gcc -O) don't grok <vfork.h>. + Test for this by using a static variable whose address + is put into a register that is clobbered by the vfork. */ +static +#ifdef __cplusplus +sparc_address_test (int arg) +#else +sparc_address_test (arg) int arg; +#endif +{ + static pid_t child; + if (!child) { + child = vfork (); + if (child < 0) { + perror ("vfork"); + _exit(2); + } + if (!child) { + arg = getpid(); + write(-1, "", 0); + _exit (arg); + } + } +} +main() { + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (); + + child = vfork (); + + if (child == 0) { + /* Here is another test for sparc vfork register problems. + This test uses lots of local variables, at least + as many local variables as main has allocated so far + including compiler temporaries. 4 locals are enough for + gcc 1.40.3 on a Solaris 4.1.3 sparc, but we use 8 to be safe. + A buggy compiler should reuse the register of parent + for one of the local variables, since it will think that + parent can't possibly be used any more in this routine. + Assigning to the local variable will thus munge parent + in the parent process. */ + pid_t + p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), + p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); + /* Convince the compiler that p..p7 are live; otherwise, it might + use the same hardware register for all 8 local variables. */ + if (p != p1 || p != p2 || p != p3 || p != p4 + || p != p5 || p != p6 || p != p7) + _exit(1); + + /* On some systems (e.g. IRIX 3.3), + vfork doesn't separate parent from child file descriptors. + If the child closes a descriptor before it execs or exits, + this munges the parent's descriptor as well. + Test for this by closing stdout in the child. */ + _exit(close(fileno(stdout)) != 0); + } else { + int status; + struct stat st; + + while (wait(&status) != child) + ; + exit( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* Did the file descriptor bug occur? */ + || fstat(fileno(stdout), &st) != 0 + ); + } +} +EOF +if { (eval echo configure:4389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + ac_cv_func_vfork_works=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_func_vfork_works=no +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$ac_cv_func_vfork_works" 1>&6 +if test $ac_cv_func_vfork_works = no; then + cat >> confdefs.h <<\EOF +#define vfork fork +EOF + +fi + + +echo $ac_n "checking for broken/missing definition of remove""... $ac_c" 1>&6 +echo "configure:4413: checking for broken/missing definition of remove" >&5 +if eval "test \"`echo '$''{'cf_cv_baddef_remove'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + +cat > conftest.$ac_ext <<EOF +#line 4419 "configure" +#include "confdefs.h" +#include <stdio.h> +int main() { +remove("dummy") +; return 0; } +EOF +if { (eval echo configure:4426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + cf_cv_baddef_remove=no +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cat > conftest.$ac_ext <<EOF +#line 4434 "configure" +#include "confdefs.h" +#include <stdio.h> + int __unlink(name) { return unlink(name); } +int main() { +remove("dummy") +; return 0; } +EOF +if { (eval echo configure:4442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + cf_cv_baddef_remove=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_cv_baddef_remove=unknown +fi +rm -f conftest* + +fi +rm -f conftest* + +fi + +echo "$ac_t""$cf_cv_baddef_remove" 1>&6 +test "$cf_cv_baddef_remove" = yes && cat >> confdefs.h <<\EOF +#define NEED_REMOVE 1 +EOF + + +for ac_func in \ + cuserid \ + getcwd \ + putenv \ + +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:4471: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 4476 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func(); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:4499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <<EOF +#define $ac_tr_func 1 +EOF + +else + echo "$ac_t""no" 1>&6 +fi +done + + + + +echo $ac_n "checking for errno external decl""... $ac_c" 1>&6 +echo "configure:4527: checking for errno external decl" >&5 +if eval "test \"`echo '$''{'cf_cv_extern_errno'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext <<EOF +#line 4533 "configure" +#include "confdefs.h" + +#include <errno.h> +int main() { +int x = errno +; return 0; } +EOF +if { (eval echo configure:4541: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_extern_errno=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_cv_extern_errno=no +fi +rm -f conftest* +fi + +echo "$ac_t""$cf_cv_extern_errno" 1>&6 +test $cf_cv_extern_errno = no && cat >> confdefs.h <<\EOF +#define DECL_ERRNO 1 +EOF + + + +echo $ac_n "checking declaration of sys_errlist""... $ac_c" 1>&6 +echo "configure:4561: checking declaration of sys_errlist" >&5 +if eval "test \"`echo '$''{'cf_cv_dcl_sys_errlist'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext <<EOF +#line 4567 "configure" +#include "confdefs.h" + +#include <stdio.h> +#include <sys/types.h> +#include <errno.h> +int main() { +char *c = (char *) *sys_errlist +; return 0; } +EOF +if { (eval echo configure:4577: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_dcl_sys_errlist=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_cv_dcl_sys_errlist=no +fi +rm -f conftest* +fi + +echo "$ac_t""$cf_cv_dcl_sys_errlist" 1>&6 +test $cf_cv_dcl_sys_errlist = no && cat >> confdefs.h <<\EOF +#define DECL_SYS_ERRLIST 1 +EOF + + + +echo $ac_n "checking for setlocale()""... $ac_c" 1>&6 +echo "configure:4597: checking for setlocale()" >&5 +if eval "test \"`echo '$''{'cf_cv_locale'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + +cat > conftest.$ac_ext <<EOF +#line 4603 "configure" +#include "confdefs.h" +#include <locale.h> +int main() { +setlocale(LC_ALL, "") +; return 0; } +EOF +if { (eval echo configure:4610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + cf_cv_locale=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_cv_locale=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$cf_cv_locale" 1>&6 +test $cf_cv_locale = yes && cat >> confdefs.h <<\EOF +#define LOCALE 1 +EOF + + + +echo $ac_n "checking if struct utmp is declared""... $ac_c" 1>&6 +echo "configure:4631: checking if struct utmp is declared" >&5 +if eval "test \"`echo '$''{'cf_cv_have_utmp'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext <<EOF +#line 4637 "configure" +#include "confdefs.h" +#include <utmp.h> +int main() { +struct utmp x; char *y = &x.ut_host[0] +; return 0; } +EOF +if { (eval echo configure:4644: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_have_utmp=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cat > conftest.$ac_ext <<EOF +#line 4652 "configure" +#include "confdefs.h" +#include <utmpx.h> +int main() { +struct utmpx x; char *y = &x.ut_host[0] +; return 0; } +EOF +if { (eval echo configure:4659: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_have_utmp=utmpx +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_cv_have_utmp=no +fi +rm -f conftest* + +fi +rm -f conftest* + +fi + +echo "$ac_t""$cf_cv_have_utmp" 1>&6 +test $cf_cv_have_utmp != no && cat >> confdefs.h <<\EOF +#define HAVE_UTMP 1 +EOF + +test $cf_cv_have_utmp = utmpx && cat >> confdefs.h <<\EOF +#define UTMPX_FOR_UTMP 1 +EOF + + + +### These tests must be run after establishing the curses library. +if test $cf_cv_screen != slang ; then + +echo $ac_n "checking if curses supports alternate-character set""... $ac_c" 1>&6 +echo "configure:4690: checking if curses supports alternate-character set" >&5 +if eval "test \"`echo '$''{'cf_cv_alt_char_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext <<EOF +#line 4696 "configure" +#include "confdefs.h" + +#include <curses.h> + +int main() { + + chtype x = acs_map['l'] + +; return 0; } +EOF +if { (eval echo configure:4707: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + cf_cv_alt_char_set=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_cv_alt_char_set=no +fi +rm -f conftest* +fi + +echo "$ac_t""$cf_cv_alt_char_set" 1>&6 +test $cf_cv_alt_char_set = yes && cat >> confdefs.h <<\EOF +#define ALT_CHAR_SET 1 +EOF + + + +echo $ac_n "checking if curses supports fancy attributes""... $ac_c" 1>&6 +echo "configure:4727: checking if curses supports fancy attributes" >&5 +if eval "test \"`echo '$''{'cf_cv_fancy_curses'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext <<EOF +#line 4733 "configure" +#include "confdefs.h" + +#include <curses.h> + +int main() { +attrset(A_UNDERLINE|A_BOLD|A_REVERSE); + wattrset(stdscr, A_BLINK|A_DIM); + attroff(A_BOLD); + keypad(stdscr,TRUE); + +; return 0; } +EOF +if { (eval echo configure:4746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + cf_cv_fancy_curses=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_cv_fancy_curses=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$cf_cv_fancy_curses" 1>&6 +test $cf_cv_fancy_curses = yes && cat >> confdefs.h <<\EOF +#define FANCY_CURSES 1 +EOF + + + +echo $ac_n "checking if curses supports color attributes""... $ac_c" 1>&6 +echo "configure:4767: checking if curses supports color attributes" >&5 +if eval "test \"`echo '$''{'cf_cv_color_curses'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext <<EOF +#line 4773 "configure" +#include "confdefs.h" + +#include <curses.h> + +int main() { +has_colors(); + start_color(); + wbkgd(curscr, getbkgd(stdscr)); /* X/Open XPG4 aka SVr4 Curses */ + +; return 0; } +EOF +if { (eval echo configure:4785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + cf_cv_color_curses=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_cv_color_curses=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$cf_cv_color_curses" 1>&6 +test $cf_cv_color_curses = yes && cat >> confdefs.h <<\EOF +#define COLOR_CURSES 1 +EOF + + + +echo $ac_n "checking declaration of size-change""... $ac_c" 1>&6 +echo "configure:4806: checking declaration of size-change" >&5 +if eval "test \"`echo '$''{'cf_cv_sizechange'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cf_cv_sizechange=unknown + cf_save_CFLAGS="$CFLAGS" + +for cf_opts in "" "NEED_PTEM_H" +do + + CFLAGS="$cf_save_CFLAGS" + test -n "$cf_opts" && CFLAGS="$CFLAGS -D$cf_opts" + cat > conftest.$ac_ext <<EOF +#line 4820 "configure" +#include "confdefs.h" +#include <sys/types.h> +#if HAVE_TERMIOS_H +#include <termios.h> +#endif +#if NEED_PTEM_H +/* This is a workaround for SCO: they neglected to define struct winsize in + * termios.h -- it's only in termio.h and ptem.h + */ +#include <sys/stream.h> +#include <sys/ptem.h> +#endif +#if !defined(sun) || !defined(HAVE_TERMIOS_H) +#include <sys/ioctl.h> +#endif + +int main() { + +#ifdef TIOCGSIZE + struct ttysize win; /* FIXME: what system is this? */ + int y = win.ts_lines; + int x = win.ts_cols; +#else +#ifdef TIOCGWINSZ + struct winsize win; + int y = win.ws_row; + int x = win.ws_col; +#else + no TIOCGSIZE or TIOCGWINSZ +#endif /* TIOCGWINSZ */ +#endif /* TIOCGSIZE */ + +; return 0; } +EOF +if { (eval echo configure:4855: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cf_cv_sizechange=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_cv_sizechange=no +fi +rm -f conftest* + + CFLAGS="$cf_save_CFLAGS" + if test "$cf_cv_sizechange" = yes ; then + test -n "$cf_opts" && cat >> confdefs.h <<\EOF +#define $cf_opts 1 +EOF + + break + fi +done + +fi + +echo "$ac_t""$cf_cv_sizechange" 1>&6 +test $cf_cv_sizechange = no && cat >> confdefs.h <<\EOF +#define HAVE_SIZECHANGE 1 +EOF + + + +echo $ac_n "checking if ttytype is declared in curses library""... $ac_c" 1>&6 +echo "configure:4886: checking if ttytype is declared in curses library" >&5 +if eval "test \"`echo '$''{'cf_cv_have_ttytype'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext <<EOF +#line 4892 "configure" +#include "confdefs.h" +#include <curses.h> +int main() { +char *x = &ttytype[1] +; return 0; } +EOF +if { (eval echo configure:4899: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + cf_cv_have_ttytype=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + cf_cv_have_ttytype=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$cf_cv_have_ttytype" 1>&6 +test $cf_cv_have_ttytype = yes && cat >> confdefs.h <<\EOF +#define HAVE_TTYTYPE 1 +EOF + + + for ac_func in \ + cbreak \ + keypad \ + +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:4924: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 4929 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func(); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:4952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <<EOF +#define $ac_tr_func 1 +EOF + +else + echo "$ac_t""no" 1>&6 +fi +done + +fi + + +echo $ac_n "checking if parent-directory references are permitted""... $ac_c" 1>&6 +echo "configure:4980: checking if parent-directory references are permitted" >&5 +if eval "test \"`echo '$''{'cf_cv_parent_dir'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + +cf_cv_parent_dir=yes +# Check whether --enable-parent-dir-refs or --disable-parent-dir-refs was given. +if test "${enable_parent_dir_refs+set}" = set; then + enableval="$enable_parent_dir_refs" + test "$enableval" = no && cf_cv_parent_dir=no +fi + + +fi + +echo "$ac_t""$cf_cv_parent_dir" 1>&6 +test $cf_cv_parent_dir = no && cat >> confdefs.h <<\EOF +#define NO_PARENT_DIR_REFERENCE 1 +EOF + + + +echo $ac_n "checking if you want to see long compiling messages""... $ac_c" 1>&6 +echo "configure:5003: checking if you want to see long compiling messages" >&5 +# Check whether --enable-echo or --disable-echo was given. +if test "${enable_echo+set}" = set; then + enableval="$enable_echo" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + SHOW_CC=' @echo compiling $@' + ECHO_CC='@' + else + SHOW_CC='# compiling' + ECHO_CC='' + fi +else + enableval=yes + SHOW_CC='# compiling' + ECHO_CC='' + +fi + +echo "$ac_t""$enableval" 1>&6 + + + +echo $ac_n "checking if you want to check memory-leaks""... $ac_c" 1>&6 +echo "configure:5027: checking if you want to check memory-leaks" >&5 +# Check whether --enable-find-leaks or --disable-find-leaks was given. +if test "${enable_find_leaks+set}" = set; then + enableval="$enable_find_leaks" + test "$enableval" != yes && enableval=no + if test "$enableval" != "no" ; then + with_leak_checks=yes + else + with_leak_checks=no + fi +else + enableval=no + with_leak_checks=no + +fi + +echo "$ac_t""$with_leak_checks" 1>&6 +test "$with_leak_checks" = "yes" && cat >> confdefs.h <<\EOF +#define LY_FIND_LEAKS 1 +EOF + + +echo $ac_n "checking if you want to enable debug-code""... $ac_c" 1>&6 +echo "configure:5050: checking if you want to enable debug-code" >&5 +# Check whether --enable-debug or --disable-debug was given. +if test "${enable_debug+set}" = set; then + enableval="$enable_debug" + test "$enableval" != yes && enableval=no + if test "$enableval" != "no" ; then + with_debug=yes + else + with_debug=no + fi +else + enableval=no + with_debug=no + +fi + +echo "$ac_t""$with_debug" 1>&6 +test "$with_debug" = "yes" && cat >> confdefs.h <<\EOF +#define DEBUG 1 +EOF + + +if test -n "$GCC" +then +echo $ac_n "checking if you want to turn on gcc warnings""... $ac_c" 1>&6 +echo "configure:5075: checking if you want to turn on gcc warnings" >&5 +# Check whether --enable-warnings or --disable-warnings was given. +if test "${enable_warnings+set}" = set; then + enableval="$enable_warnings" + test "$enableval" != yes && enableval=no + if test "$enableval" != "no" ; then + with_warnings=yes + else + with_warnings=no + fi +else + enableval=no + with_warnings=no + +fi + +echo "$ac_t""$with_warnings" 1>&6 +if test "$with_warnings" = "yes" +then + EXTRA_CFLAGS="" +if test -n "$GCC" +then + cat > conftest.$ac_ext <<EOF +#line 5098 "configure" +int main(int argc, char *argv[]) { return argv[argc-1] == 0; } +EOF + echo "checking for gcc warning options" 1>&6 +echo "configure:5102: checking for gcc warning options" >&5 + cf_save_CFLAGS="$CFLAGS" + EXTRA_CFLAGS="-W -Wall" + for cf_opt in \ + Wbad-function-cast \ + Wcast-align \ + Winline \ + Wmissing-declarations \ + Wmissing-prototypes \ + Wnested-externs \ + Wpointer-arith \ + Wshadow \ + Wstrict-prototypes + do + CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" + if { (eval echo configure:5117: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + test -n "$verbose" && echo "$ac_t""... -$cf_opt" 1>&6 + EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" + fi + done + rm -f conftest* + CFLAGS="$cf_save_CFLAGS" +fi + +fi +fi + +### Finally, build config.h and the makefiles +CFLAGS="$CFLAGS $EXTRA_CFLAGS" +trap '' 1 2 15 +cat > confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +(set) 2>&1 | + case `(ac_space=' '; set) 2>&1 | grep '^ac_space='` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote substitution + # turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Any assignment to VPATH causes Sun make to only execute +# the first set of double-colon rules, so remove it if not needed. +# If there is a colon in the path, we need to keep it. +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' +fi + +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 + +DEFS=-DHAVE_CONFIG_H + +# Without the "./", some shells look in PATH for config.status. +: ${CONFIG_STATUS=./config.status} + +echo creating $CONFIG_STATUS +rm -f $CONFIG_STATUS +cat > $CONFIG_STATUS <<EOF +#! /bin/sh +# Generated automatically by configure. +# Run this file to recreate the current configuration. +# This directory was configured as follows, +# on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# +# $0 $ac_configure_args +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" +for ac_option +do + case "\$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" + exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "$CONFIG_STATUS generated by autoconf version 2.12.970309" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "\$ac_cs_usage"; exit 0 ;; + *) echo "\$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=$srcdir +ac_given_INSTALL="$INSTALL" + +trap 'rm -fr `echo "makefile \ + WWW/Library/unix/makefile \ + src/makefile \ + src/chrtrans/makefile \ + lynx_cfg.h:config.hin" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +EOF +cat >> $CONFIG_STATUS <<EOF + +# Protect against being on the right side of a sed subst in config.status. +sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g; + s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF +$ac_vpsub +$extrasub +s%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%g +s%@DEFS@%$DEFS%g +s%@LDFLAGS@%$LDFLAGS%g +s%@LIBS@%$LIBS%g +s%@exec_prefix@%$exec_prefix%g +s%@prefix@%$prefix%g +s%@program_transform_name@%$program_transform_name%g +s%@bindir@%$bindir%g +s%@sbindir@%$sbindir%g +s%@libexecdir@%$libexecdir%g +s%@datadir@%$datadir%g +s%@sysconfdir@%$sysconfdir%g +s%@sharedstatedir@%$sharedstatedir%g +s%@localstatedir@%$localstatedir%g +s%@libdir@%$libdir%g +s%@includedir@%$includedir%g +s%@oldincludedir@%$oldincludedir%g +s%@infodir@%$infodir%g +s%@mandir@%$mandir%g +s%@host@%$host%g +s%@host_alias@%$host_alias%g +s%@host_cpu@%$host_cpu%g +s%@host_vendor@%$host_vendor%g +s%@host_os@%$host_os%g +s%@CC@%$CC%g +s%@CPP@%$CPP%g +s%@RANLIB@%$RANLIB%g +s%@SET_MAKE@%$SET_MAKE%g +s%@make_include_left@%$make_include_left%g +s%@make_include_right@%$make_include_right%g +s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g +s%@INSTALL_DATA@%$INSTALL_DATA%g +s%@CHMOD@%$CHMOD%g +s%@COMPRESS@%$COMPRESS%g +s%@COPY@%$COPY%g +s%@GZIP@%$GZIP%g +s%@INSTALL@%$INSTALL%g +s%@MKDIR@%$MKDIR%g +s%@MV@%$MV%g +s%@RM@%$RM%g +s%@TAR@%$TAR%g +s%@TOUCH@%$TOUCH%g +s%@UNCOMPRESS@%$UNCOMPRESS%g +s%@UNZIP@%$UNZIP%g +s%@UUDECODE@%$UUDECODE%g +s%@ZCAT@%$ZCAT%g +s%@ZIP@%$ZIP%g +s%@SHOW_CC@%$SHOW_CC%g +s%@ECHO_CC@%$ECHO_CC%g + +CEOF +EOF + +cat >> $CONFIG_STATUS <<\EOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi +EOF + +cat >> $CONFIG_STATUS <<EOF + +CONFIG_FILES=\${CONFIG_FILES-"makefile \ + WWW/Library/unix/makefile \ + src/makefile \ + src/chrtrans/makefile \ + "} +EOF +cat >> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' +ac_dC='\3' +ac_dD='%g' +# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". +ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='\([ ]\)%\1#\2define\3' +ac_uC=' ' +ac_uD='\4%g' +# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_eB='$%\1#\2define\3' +ac_eC=' ' +ac_eD='%g' + +if test "${CONFIG_HEADERS+set}" != set; then +EOF +cat >> $CONFIG_STATUS <<EOF + CONFIG_HEADERS="lynx_cfg.h:config.hin" +EOF +cat >> $CONFIG_STATUS <<\EOF +fi +for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + echo creating $ac_file + + rm -f conftest.frag conftest.in conftest.out + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + cat $ac_file_inputs > conftest.in + +EOF + +# Transform confdefs.h into a sed script conftest.vals that substitutes +# the proper values into config.h.in to produce config.h. And first: +# Protect against being on the right side of a sed subst in config.status. +# Protect against being in an unquoted here document in config.status. +rm -f conftest.vals +cat > conftest.hdr <<\EOF +s/[\\&%]/\\&/g +s%[\\$`]%\\&%g +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp +s%ac_d%ac_u%gp +s%ac_u%ac_e%gp +EOF +sed -n -f conftest.hdr confdefs.h > conftest.vals +rm -f conftest.hdr + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >> conftest.vals <<\EOF +s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% +EOF + +# Break up conftest.vals because some shells have a limit on +# the size of here documents, and old seds have small limits too. + +rm -f conftest.tail +while : +do + ac_lines=`grep -c . conftest.vals` + # grep -c gives empty output for an empty file on some AIX systems. + if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi + # Write a limited-size here document to conftest.frag. + echo ' cat > conftest.frag <<CEOF' >> $CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS + echo 'CEOF + sed -f conftest.frag conftest.in > conftest.out + rm -f conftest.in + mv conftest.out conftest.in +' >> $CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail + rm -f conftest.vals + mv conftest.tail conftest.vals +done +rm -f conftest.vals + +cat >> $CONFIG_STATUS <<\EOF + rm -f conftest.frag conftest.h + echo "/* $ac_file. Generated automatically by configure. */" > conftest.h + cat conftest.in >> conftest.h + rm -f conftest.in + if cmp -s $ac_file conftest.h 2>/dev/null; then + echo "$ac_file is unchanged" + rm -f conftest.h + else + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + fi + rm -f $ac_file + mv conftest.h $ac_file + fi +fi; done + +EOF +cat >> $CONFIG_STATUS <<EOF + +EOF +cat >> $CONFIG_STATUS <<\EOF + +exit 0 +EOF +chmod +x $CONFIG_STATUS +rm -fr confdefs* $ac_clean_files +test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + diff --git a/configure.in b/configure.in new file mode 100644 index 00000000..790f82ed --- /dev/null +++ b/configure.in @@ -0,0 +1,234 @@ +dnl Process this file with autoconf to produce a configure script. +dnl written jan/1997 +dnl by T.E.Dickey <dickey@clark.net> +dnl and Jim Spath <jspath@mail.bcpl.lib.md.us> + +AC_PREREQ(2.12) +AC_INIT(userdefs.h) +AC_CONFIG_HEADER(lynx_cfg.h:config.hin) + +AC_PREFIX_DEFAULT(/usr/local) +AC_CANONICAL_HOST + +dnl -------------------------------------------------------------------------- +dnl Checks for location of programs +dnl -------------------------------------------------------------------------- + +AC_PROG_CC +AC_PROG_CPP +AC_PROG_RANLIB +AC_PROG_MAKE_SET +CF_MAKE_INCLUDE +AC_PROG_INSTALL + +AC_MSG_CHECKING(if you want full utility pathnames) +CF_ARG_DISABLE(full-paths, + [ --disable-full-paths control whether full utility pathnames are used], + [with_full_paths=no], + [with_full_paths=yes]) +AC_MSG_RESULT($with_full_paths) + +CF_DEFINE_PROG(system mailer, SYSTEM_MAIL, + /usr/mmdf/bin/submit \ + /usr/sbin/sendmail \ + /usr/lib/sendmail \ + ) +CF_SYSTEM_MAIL_FLAGS + +CF_PATH_PROG(CHMOD, chmod) +CF_PATH_PROG(COMPRESS, compress) +CF_PATH_PROG(COPY, cp) +CF_PATH_PROG(GZIP, gzip) +CF_PATH_PROG(INSTALL, install) +CF_PATH_PROG(MKDIR, mkdir) +CF_PATH_PROG(MV, mv) +CF_PATH_PROG(RM, rm) +CF_PATH_PROG(TAR, tar) +CF_PATH_PROG(TOUCH, touch) +CF_PATH_PROG(UNCOMPRESS,gunzip) +CF_PATH_PROG(UNZIP, unzip) +CF_PATH_PROG(UUDECODE, uudecode) +CF_PATH_PROG(ZCAT, zcat) +CF_PATH_PROG(ZIP, zip) + +dnl -------------------------------------------------------------------------- +dnl Checks for compiler & standard-library characteristics +dnl -------------------------------------------------------------------------- + +dnl If we're able to run this script, this is true! +AC_DEFINE(UNIX) + +AC_C_CONST + +case $host_os in +linux*) + CFLAGS="$CFLAGS -DLINUX" + ;; +ultrix*) + # Increase the maximum size of functions that will be optimized. + test -z "$GCC" && CFLAGS="$CFLAGS -O -Olimit 600" + CFLAGS="$CFLAGS -DULTRIX" + ;; +esac + +dnl -------------------------------------------------------------------------- +dnl Checks for library configuration (added right-to-left) +dnl -------------------------------------------------------------------------- + +CF_NETLIBS + +AC_MSG_CHECKING(for screen type) +AC_CACHE_VAL(cf_cv_screen,[ +AC_ARG_WITH(screen, +[ --with-screen=XXX select screen type + (XXX is curses (default), ncurses or slang)], + [ +case $withval in +curses|ncurses|slang) + cf_cv_screen=$withval + ;; +*) AC_ERROR(Unexpected value) + ;; +esac], + [cf_cv_screen=curses])]) +AC_MSG_RESULT($cf_cv_screen) + +case $cf_cv_screen in +curses) + CF_CURSES_LIBS + CF_CURS_PERFORMANCE + ;; +ncurses) + CF_NCURSES_CPPFLAGS + CF_NCURSES_LIBS + ;; +slang) + CF_TERMCAP_LIBS + CF_SLANG_CPPFLAGS + CF_SLANG_LIBS + ;; +esac + +dnl -------------------------------------------------------------------------- +dnl Checks for standard headers +dnl -------------------------------------------------------------------------- + +AC_HEADER_STDC +AC_HEADER_TIME +AC_HEADER_DIRENT +AC_CHECK_HEADERS( \ + fcntl.h \ + limits.h \ + string.h \ + sys/fcntl.h \ + sys/filio.h \ + sys/ioctl.h \ + sys/time.h \ + termio.h \ + termios.h \ + unistd.h \ +) +CF_TERMIO_AND_TERMIOS + +dnl -------------------------------------------------------------------------- +dnl Checks for library units +dnl -------------------------------------------------------------------------- + +AC_FUNC_VFORK +CF_REMOVE_BROKEN +AC_CHECK_FUNCS( \ + cuserid \ + getcwd \ + putenv \ +) + +dnl -------------------------------------------------------------------------- +dnl Checks for external-data +dnl -------------------------------------------------------------------------- + +CF_ERRNO +CF_SYS_ERRLIST +CF_LOCALE +CF_UTMP + +### These tests must be run after establishing the curses library. +if test $cf_cv_screen != slang ; then + CF_ALT_CHAR_SET + CF_FANCY_CURSES + CF_COLOR_CURSES + CF_SIZECHANGE + CF_TTYTYPE + AC_CHECK_FUNCS( \ + cbreak \ + keypad \ + ) +fi + +dnl -------------------------------------------------------------------------- +dnl Miscellaneous options that don't need to test system features +dnl -------------------------------------------------------------------------- + +AC_MSG_CHECKING(if parent-directory references are permitted) +AC_CACHE_VAL(cf_cv_parent_dir,[ +cf_cv_parent_dir=yes +AC_ARG_ENABLE(parent-dir-refs, +[ --disable-parent-dir-refs + disable \"Up-to\" parent-links in directory listings], + [test "$enableval" = no && cf_cv_parent_dir=no]) +]) +AC_MSG_RESULT($cf_cv_parent_dir) +test $cf_cv_parent_dir = no && AC_DEFINE(NO_PARENT_DIR_REFERENCE) + +dnl -------------------------------------------------------------------------- +dnl Debug/development/test +dnl -------------------------------------------------------------------------- + +AC_MSG_CHECKING(if you want to see long compiling messages) +CF_ARG_DISABLE(echo, + [ --disable-echo develop: display \"compiling\" commands], + [SHOW_CC=' @echo compiling $@' + ECHO_CC='@'], + [SHOW_CC='# compiling' + ECHO_CC='']) +AC_MSG_RESULT($enableval) +AC_SUBST(SHOW_CC) +AC_SUBST(ECHO_CC) + +AC_MSG_CHECKING(if you want to check memory-leaks) +CF_ARG_ENABLE(find-leaks, + [ --enable-find-leaks develop: logic for testing memory leaks], + [with_leak_checks=yes], + [with_leak_checks=no]) +AC_MSG_RESULT($with_leak_checks) +test "$with_leak_checks" = "yes" && AC_DEFINE(LY_FIND_LEAKS) + +AC_MSG_CHECKING(if you want to enable debug-code) +CF_ARG_ENABLE(debug, + [ --enable-debug develop: logic for testing memory leaks], + [with_debug=yes], + [with_debug=no]) +AC_MSG_RESULT($with_debug) +test "$with_debug" = "yes" && AC_DEFINE(DEBUG) + +if test -n "$GCC" +then +AC_MSG_CHECKING(if you want to turn on gcc warnings) +CF_ARG_ENABLE(warnings, + [ --enable-warnings develop: GCC compiler warnings], + [with_warnings=yes], + [with_warnings=no]) +AC_MSG_RESULT($with_warnings) +if test "$with_warnings" = "yes" +then + CF_GCC_WARNINGS +fi +fi + +### Finally, build config.h and the makefiles +CFLAGS="$CFLAGS $EXTRA_CFLAGS" +AC_OUTPUT( + makefile \ + WWW/Library/unix/makefile \ + src/makefile \ + src/chrtrans/makefile \ + ) diff --git a/install.sh b/install.sh new file mode 100755 index 00000000..ab74c882 --- /dev/null +++ b/install.sh @@ -0,0 +1,238 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. +# + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +tranformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/lynx.cfg b/lynx.cfg index a5db76c9..3ac662f5 100644 --- a/lynx.cfg +++ b/lynx.cfg @@ -526,6 +526,10 @@ CHARACTER_SET:ISO Latin 1 # #LYNX_SIG_FILE:.lynxsig +# If USE_MOUSE is set TRUE, Lynx (when configured with ncurses) will allow +# the user to click with button-1 on links to select them. +#USE_MOUSE: FALSE + # If USE_SELECT_POPUPS is set FALSE, Lynx will present a vertical list of # radio buttons for the OPTIONs in SELECT blocks which lack the MULTIPLE # attribute, instead of using a popup menu. Note that if the MULTIPLE @@ -1341,8 +1345,9 @@ MINIMAL_COMMENTS:TRUE # DIRED_MENU:type:suffix:link text:extra text:action # # type: TAG: list only when one or more files are tagged -# FILE: list only when the current selection is a file +# FILE: list only when the current selection is a regular file # DIR: list only when the current selection is a directory +# LINK: list only when the current selection is a symbolic link # # suffix: list only if the current selection ends in this pattern # @@ -1363,14 +1368,23 @@ MINIMAL_COMMENTS:TRUE # #DIRED_MENU:::New File:(in current directory):LYNXDIRED://NEW_FILE%d #DIRED_MENU:::New Directory:(in current directory):LYNXDIRED://NEW_FOLDER%d -#DIRED_MENU:::Install:(of current selection):LYNXDIRED://INSTALL_SRC%p -#DIRED_MENU:::Modify Name:(of current selection):LYNXDIRED://MODIFY_NAME%p + +#DIRED_MENU:FILE::Install:(of current selection):LYNXDIRED://INSTALL_SRC%p +#DIRED_MENU:DIR::Install:(of current selection):LYNXDIRED://INSTALL_SRC%p +#DIRED_MENU:FILE::Modify File Name:(of current selection):LYNXDIRED://MODIFY_NAME%p +#DIRED_MENU:DIR::Modify Directory Name:(of current selection):LYNXDIRED://MODIFY_NAME%p +#DIRED_MENU:LINK::Modify Name:(of selected symbolic link):LYNXDIRED://MODIFY_NAME%p # Following depends on OK_PERMIT -#DIRED_MENU:::Permit Name:(of current selection):LYNXDIRED://PERMIT_SRC%p +#DIRED_MENU:FILE::Modify File Permissions:(of current selection):LYNXDIRED://PERMIT_SRC%p +#DIRED_MENU:DIR::Modify Directory Permissions:(of current selection):LYNXDIRED://PERMIT_SRC%p -#DIRED_MENU:::Change Location:(of current selection):LYNXDIRED://MODIFY_LOCATION%p -#DIRED_MENU:::Remove:(current selection):LYNXDIRED://REMOVE_SINGLE%p +#DIRED_MENU:FILE::Change Location:(of selected file):LYNXDIRED://MODIFY_LOCATION%p +#DIRED_MENU:DIR::Change Location:(of selected directory):LYNXDIRED://MODIFY_LOCATION%p +#DIRED_MENU:LINK::Change Location:(of selected symbolic link):LYNXDIRED://MODIFY_LOCATION%p +#DIRED_MENU:FILE::Remove File:(current selection):LYNXDIRED://REMOVE_SINGLE%p +#DIRED_MENU:DIR::Remove Directory:(current selection):LYNXDIRED://REMOVE_SINGLE%p +#DIRED_MENU:LINK::Remove Symbolic Link:(current selection):LYNXDIRED://REMOVE_SINGLE%p # Following depends on OK_UUDECODE and !ARCHIVE_ONLY #DIRED_MENU:FILE::UUDecode:(current selection):LYNXDIRED://UUDECODE%p @@ -1415,7 +1429,7 @@ MINIMAL_COMMENTS:TRUE #DIRED_MENU:TAG::Remove all tagged files and directories.::LYNXDIRED://REMOVE_TAGGED #DIRED_MENU:TAG::Untag all tagged items.::LYNXDIRED://CLEAR_TAGGED -# COLORS (only available if compiled with slang) +# COLORS (only available if compiled with SVr4 curses or slang) # The line must be of the form: # COLOR:INTEGER:FOREGROUND:BACKGROUND # Here FOREGROUND and BACKGROUND must be one of: diff --git a/makefile.in b/makefile.in new file mode 100644 index 00000000..b5156b99 --- /dev/null +++ b/makefile.in @@ -0,0 +1,711 @@ +##makefile for lynx + +SHELL = /bin/sh +@SET_MAKE@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +srcdir = @srcdir@ +VPATH = $(srcdir) + +CC = @CC@ +CPPOPTS = @DEFS@ @CPPFLAGS@ +CFLAGS = $(CPPOPTS) @CFLAGS@ + +LIBS = @LIBS@ + +##this is the name of the directory the lynx source code is in. +##(e.g. lynx2-7, not the full path) +lynxname= lynx2-7 + +## Where you want lynx installed +bindir= @bindir@ + +## Where you want the lynx man file installed +mandir= @mandir@/man1 + +## Where you want the lynx.cfg file installed +libdir= @libdir@ + +installbin= @INSTALL@ -c -s -m 755 +installdoc= @INSTALL@ -c -m 444 + +##set the relative location of the WWW library Implementation directory, +##from this directory +##do not set this to be an absolute path!!! +WWWINC= WWW/Library/Implementation + +# !!!!!!!!!!! SUN resolv LIBRARY !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +# To include resolv in the LIBS="" list for SUN 3, 4 or Solaris OS, +# point RESOLVLIB to that library. You need this if you get the message +# "Alert!: Unable to connect to remote host" whenever you try to +# access a host other than localhost and have made Lynx without it. +# See the PROBLEMS file for more information. +#RESOLVLIB= -lresolv + +# !!!!!!!!!!! Alternate socket functions for SOCKS !!!!!!!!!!!!!!!!!! +# To make a SOCKSified lynx, include -DSOCKS in your SITE_LYDEFS and +# SITE_DEFS, below, and point SOCKSLIB to your SOCKS library. Note +# that you may have problems accessing FTP servers. Also, instead of +# SOCKSifying lynx for use behind a firewall, you are better off if +# you make it normally, and set it up to use a proxy server. You can +# SOCKSify the proxy server, and it will handle all clients, not just +# Lynx (see the INSTALLATION file in this distribution). If your SOCKS +# server was compiled to use the short version of Rbind, also include +# -DSHORTENED_RBIND in your SITE_LYDEFS and SITE_DEFS. If you do +# SOCKSify lynx, you can turn off SOCKS proxy usage via a -nosocks +# command line switch. +#SOCKSLIB= /usr/local/lib/libsocks.a + +# !!!!!!!!!!!!! DIRECT WAIS ACCESS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +# If you are adding direct wais access you must fill in the +# location of wais.a, client.a and the standard math library, libm.a. +# You can pick up the most current freeWAIS sources from +# ftp://ftp.cnidr.org/pub/NIDR.tools/freewais +# If you are using freeWAIS-0.202 or older, include -DDECLARE_WAIS_LOGFILES +# in your SITE_DEFS. +# Plese put an ABSOLUTE address here if you want it to work! +#WAISLIB= ../../freeWAIS-0.202/bin/client.a ../../freeWAIS-0.202/bin/wais.a /usr/lib/libm.a + +# !!!!!!!!!!!!! SLANG Support (For color version of Lynx). !!!!!!!!!!!!!!!! +# The slang library is an alternative to curses, developed by John E. Davis +# (davis@space.mit.edu). Version 0.99-27 or higher is available from +# ftp://space.mit.edu/pub/davis +# It provides color support for Lynx. + +# !!!!!!!!!!! Lynx Local Directory Listing Formats !!!!!!!!!!!!!!!!!!!!!!!!!!! +# Lynx supports "ls -l" format for local directory listings on Unix if the +# LONG_LIST compilation symbol is defined, and includes links to the parent +# directory if the compilation symbol NO_PARENT_DIR_REFERENCE is not defined. +# If "ls -l" format is enabled here, the listing format can be modifed via a +# LIST_FORMAT symbol in userdefs.h and/or lynx.cfg. Otherwise, only file and +# directory names will be included in the listings. +# +# If you are not including DirEd Support (see below) and wish to disable +# "ls -l" emulation in local directory listings, prepend "#" to this line: +DIR_LONG_LIST = -DLONG_LIST +# +# To disable "Up to" parent links in local directory listings, +# remove "#" from this line: +#DIR_PARENT = -DNO_PARENT_DIR_REFERENCE + +# !!!!!!!!!!! Lynx DirEd Support !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +# Lynx now supports directory editing (DirEd) for local directories. +# This allows users to do things like view, copy, & remove files using +# a tabular display of the directory & single-keystroke commands instead +# of using the command line. From inside Lynx, the keystroke sequence +# "g.<enter>" switches Lynx to DirEd mode on the current directory. +# If you're building a Lynx that is to be used as a kind of restricted +# shell for users who do not have access to the command line & should +# not have access to equivalent capabilities, you need to disable DirEd +# here. You can also disable some DirEd functions while allowing others. +# +# DirEd functions are disabled by inserting or removing "#" signs at +# the beginnings of lines that contain variable assignments here. +# All DirEd functions that were enabled on compilation can be disabled +# or modified at run time via DIRED_MENU symbols in lynx.cfg. +# +# To disable DirEd completely, prepend "#" to this line: +DIRED_SUPPORT = -DDIRED_SUPPORT +#(If you have disabled DirEd completely, you can ignore all the +#other DirEd stuff here.) +# +# To prevent DirEd from extracting files from an archive file, +# remove "#" from this line: +#DIRED_ARCHIVE = -DARCHIVE_ONLY +# +# To prevent DirEd from using the tar program, prepend "#" to this line: +DIRED_TAR = -DOK_TAR +# +# To prevent DirEd from using zip & unzip, prepend "#" to this line: +DIRED_ZIP = -DOK_ZIP +# +# To prevent DirEd from using gzip & gunzip, prepend "#" to this line: +DIRED_GZIP = -DOK_GZIP +# +# To prevent DirEd from using uudecode, prepend "#" to this line: +DIRED_UUDECODE = -DOK_UUDECODE +# +# Lynx users can customize their keymaps by creating private versions +# of lynx.cfg & modifying them, overriding the default keymap. +# To prevent DirEd keymap overriding, prepend "#" to this line: +DIRED_OVERRIDE = -DOK_OVERRIDE +# +# To prevent DirEd from changing the permissions on directories or files +# (i.e. from doing what the Unix chmod command or the DOS attrib command +# does), prepend "#" to this line: +DIRED_PERMIT = -DOK_PERMIT +# +# If you do not comment out the DIRED_PERMIT line, but want to restrict +# changes of the eXecute permission to directories (i.e., not allow it to +# be changed for files), remove "#" from this line (if you don't remove it, +# you can still block changes of the eXecute permission for files but not +# directories via the "change_exec_perms" command line restriction): +#DIRED_NOXPERMS = -DNO_CHANGE_EXECUTE_PERMS + +# !!!!!!!!!!! NOTE: NetBSD and FreeBSD !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +# On NetBSD 1.1 and earlier, as well as FreeBSD 2.0.5 and earlier, +# the system make program uses different syntax for including files +# than the GNU make program. If you get the following error -- +# * "Makefile", line 27: Need an operator * +# you have several choices to run GNU make: +# +# * Install GNU make as `/usr/bin/make', after moving /usr/bin/make +# to /usr/bin/old-make +# +# * Install GNU make in a different directory which is earlier in +# your search path. +# +# * Install GNU make as gmake, and change occurrences of `make' to +# `gmake' in any Makefile used by your install. You won't need to +# change all of the Makefiles, just the top-level one, and the one +# in WWW/Library/???bsd + +# !!!!!!!!!!! Lynx Wishful Thinking !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +# If you are on one of the supported systems (see all: list below) +# you should not have to modify anything from here down (but check +# it out for your system, anyway)! +# If you are not, then you should edit the generic: entry below. +# +# If you need ncurses, the latest version can always be found +# in ftp://ftp.clark.net/pub/dickey/ncurses/ +# or ftp://ftp.netcom.com/pub/zm/zmbenhal/ncurses/ +# +# Also be sure to check out the compilation symbols in userdefs.h +# before building Lynx! + +all: + @echo + @echo "Please run make with one of the following arguments" + @echo "aix4 -- for RS/6000 running AIX 4.n and some 3.2" + @echo "aix32 -- for RS/6000 running AIX 3.2" + @echo "apollo -- apollo systems (untested)" + @echo "bsdi -- BSD Interactive" + @echo "clix -- for Intergraph CLIX" + @echo "convex -- for Convex C-series" + @echo "dgux -- for DGUX " + @echo "freebsd -- for FreeBSD" + @echo "generic -- for generic UNIX" + @echo "isc -- for Interactive Machines (untested)" + @echo "linux -- for PC linux" + @echo "mips -- for MIPS, svr3/bsd flavour (untested)" + @echo "netbsd -- for NetBSD" + @echo "news -- for SONY NEWS-OS 4.2.1R" + @echo "next -- for NeXT OS" + @echo "osf -- for Alpha OSF/1" + @echo "ptx -- for Sequent's DYNIX/ptx, version 4, (current version)" + @echo "ptx -- for Sequent's DYNIX/ptx, current version" + @echo "ptx2 -- for Sequent's DYNIX/ptx, version 2" + @echo "riscos -- Control Data Unix machine running EP/IX" + @echo "sco -- for SCO machines" + @echo "sco5 -- for SCO OpenServer Release 5 machines" + @echo "sgi -- for SGI machines" + @echo "sun3 -- for SUN 3 OS with System V curses" + @echo "sun4 -- for SUN 4 OS" + @echo "svr4 -- for SVR4" + @echo "snake -- for HP-UX lt 9.01 (gcc)" + @echo "snake2 -- for HP-UX gte 9.01 (gcc)" + @echo "snake3 -- for HP-UX (purchased compiler)" + @echo "solaris -- for solaris 2.x" + @echo "ultrix -- for DEC Ultrix" + @echo "decstation -- for DEC Ultrix (same as ultrix)" + @echo "umaxv -- for Encore's UMAXV (SVR3.x) " + @echo "unixware -- for Novell's Unixware" + @echo "univell -- for Novell's Unixware" + @echo "clean -- removes all '.o' and 'core' files" + @echo "tar -- runs clean, removes executable, and tars the whole directory" + @echo "compress -- runs tar, then compresses the result" + @echo "zip -- runs clean, removes executable, and zips the whole directory" + @echo + +# Map some extra commands to existing ones +unix: generic +decstation: ultrix +univell: unixware + +DIR_LYDEFS = $(DIRED_SUPPORT) $(DIR_LONG_LIST) $(DIR_PARENT) + +DIR_DEFS = $(DIRED_SUPPORT) $(DIRED_ARCHIVE) $(DIRED_TAR) $(DIRED_ZIP) $(DIRED_GZIP) $(DIRED_UUDECODE) $(DIRED_OVERRIDE) $(DIRED_PERMIT) $(DIRED_NOXPERMS) + +# If you apply patches which require linking to site-specific libraries, +# uncomment the following and point SITE_LIBS to those libraries. +#SITE_LIBS= # Your libraries here (remove the "#") + +# Set SITE_LYDEFS to one or more of the defines for the WWW Library: +SITE_LYDEFS = $(DIR_LYDEFS) -DEXP_CHARTRANS # Your defines here + +# Set SITE_DEFS to one or more of the defines for lynx below: +SITE_DEFS = $(DIR_DEFS) -DEXP_CHARTRANS # Your defines here + +# if you are compiling on a previously unsupported system, modify +# this generic entry!! +# +# defines include: +# -DHP_TERMINAL For DIM workaround to REVERSE problems on HP terminals. +# -DIGNORE_CTRL_C Define if Control-C shouldn't exit lynx. +# -DNOPORT if you must use PASV instead of PORT for FTP +# -DNO_CPU_LIMIT Disables Max CPU timeout (includes CLOCKS_PER_SECOND) +# -DNSL_FORK For fork-based name server lookups that can be 'z'apped. +# -DSHORTENED_RBIND For a SOCKSified lynx with the short version of Rbind. +# -DSOCKS For making a SOCKSified lynx. +# -DUNDERLINE_LINKS Define if you want links underlined instead of bold. +# -DEXP_CHARTRANS enable chartrans support w/ new charsets, UTF8 mode etc. +# (needed in SITE_DEFS *and* SITE_LYDEFS !) +# -DEXP_CHARTRANS_AUTOSWITCH also let lynx switch term mode(Linux console only) +# -DSLANG_MBCS_HACK prevent cutoff lines when using UTF8 console (slang only) +# +# if you are linking to freeWAIS-0.202 or older, you should define this +# in MCFLAGS (SITE_DEFS) +# +# -DDECLARE_WAIS_LOGFILES +# +# if you have the reverse clear screen problem of some SUN4 systems you +# should define this in MCFLAGS (SITE_DEFS) +# +# -DREVERSE_CLEAR_SCREEN_PROBLEM +# +# if you have an SVR4 system with the "type any key" problem, try defining +# this in LYFLAGS (SITE_LYDEFS) and MCFLAGS (SITE_DEFS) +# +# -DSVR4_BSDSELECT +# +# Old Data General systems may need this in their SITE_LYDEFS +# for their inet_addr(host) calls. +# +# -DDGUX_OLD +# +# if you would like logging of client requests via syslog(), you should +# define this in MCFLAGS (SITE_DEFS) +# +# -DSYSLOG_REQUESTED_URLS +# +## if you would like to enable code to detect memory leaks define this in both +## LYFLAGS (SITE_LYDEFS) and MCFLAGS (SITE_DEFS) +## +## -DLY_FIND_LEAKS +# +# for installation of local execution links, please see the file userdefs.h + +#generic machines with original Berkeley curses +generic: # NOT-TESTED + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.." + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="" \ + LIBS="$(LIBS) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +# Contributed by Alex Matulich (matuli_a@marlin.navsea.navy.mil). +# Note that some of the online help files in this distribution need +# to be edited and renamed to conform with the Intergraph CLIX 14 +# character file name limit. +clix: # NOT-TESTED + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -DUSG -DCLIX" \ + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-DUSG -DCLIX" \ + LIBS="-lmalloc -lcurses -ltermcap -lbsd -lc_s \ + $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +# Tested on C3 series under ConvexOS 10.1, CC V5.0; +# Should work on other C-series +convex: # NOT-TESTED (replaces convex-curses, convex-ncurses) + cd WWW/Library/convex; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -D__STDC__ -Dunix" \ + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-D__STDC__ -Dunix" \ + LIBS="$(LIBS) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +dgux: # NOT-TESTED + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -DDGUX" + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-DDGUX" \ + LIBS="$(LIBS) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +mips: # NOT-TESTED + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -systype svr3 -I/svr3/usr/include/bsd" + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-systype svr3 -I/svr3/usr/include/bsd" \ + LIBS="-lcurses -lnsl -lbsd \ + $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +freebsd: # NOT-TESTED: replaces freebsd-curses, freebsd-ncurses, freebsd-slang + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.." + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="" \ + LIBS="$(LIBS) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +netbsd: # NOT-TESTED: replaces netbsd-curses, netbsd-ncurses, netbsd-slang + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.." + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="" \ + LIBS="$(LIBS) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +# Tested on DN 3500 & 4500's running Domain O/S 10.4 BSD +# -Acpu,mathchip may have to be changed on other machines - see man cpuhep +apollo: # NOT-TESTED + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -D_BUILTINS -W0,-opt,4" + cd src; $(MAKE) all CC="cc" \ + MCFLAGS="-D_BUILTINS -W0,-opt,4" \ + LIBS="-lcurses -ltermcap \ + $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a $(MYWWWLIB)" + +riscos: # NOT-TESTED + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.." + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-Dremove=unlink" \ + LIBS="-lcurses -ltermcap \ + $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +# aka HP-UX +snake: # NOT-TESTED + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.." + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-DSNAKE" \ + LIBS="-lcurses -ltermcap \ + $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +snake2: # NOT-TESTED + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. \ + -D_INCLUDE_HPUX_SOURCE \ + -D_INCLUDE_POSIX_SOURCE \ + -D_INCLUDE_AES_SOURCE \ + -D_INCLUDE_XOPEN_SOURCE" + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-DSNAKE \ + -D_INCLUDE_HPUX_SOURCE \ + -D_INCLUDE_POSIX_SOURCE \ + -D_INCLUDE_AES_SOURCE \ + -D_INCLUDE_XOPEN_SOURCE" \ + LIBS="$(LIBS) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +# Lynx will compile with the purchased cc compiler added to HP-UX. +# contributed by Andy Finkenstadt (genie@panix.com) +# Note that initial releases of HP/UX 10.10 have a broken select() in +# libcurses.a and will malfunction with Lynx. See the PROBLEMS file. +snake3: # NOT-TESTED (replaces snake3-curses, snake3-slang) + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -Ae" + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-Ae -DSNAKE" \ + LIBS="$(LIBS) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +svr4: # NOT-TESTED + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -DSVR4_BSDSELECT -DSVR4" + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-DSVR4_BSDSELECT -DTRUE=1 -DFALSE=0" \ + LIBS="$(LIBS) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +# aka SEQUENT +ptx: # NOT-TESTED (replaces ptx-curses, ptx-slang) + cd WWW/Library/unix; $(MAKE) $(MFLAGS) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -DSVR4_BSDSELECT -DNO_IOCTL -DUSE_FCNTL" + cd src; $(MAKE) $(MFLAGS) all CC="$(CC)" \ + MCFLAGS="" \ + LIBS="$(LIBS) -lsocket -linet -lnsl \ + $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +ptx2: # NOT-TESTED + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -DPTX2 -DNOPORT -DSVR4_BSDSELECT $(SITE_LYDEFS)" + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-DPTX2" \ + LIBS="$(LIBS) -lsocket -linet -lnsl \ + $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +# Contributed by Thanh Ma (tma@encore.com). +umaxv: # NOT-TESTED (replaces umaxv-curses, umaxv-slang) + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -D_SYSV3" + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-D_SYSV3" \ + LIBS="$(LIBS) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +unixware: # NOT-TESTED (replaces unixware-curses, unixware-slang) + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -DUNIXWARE" + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-DTRUE=1 -DFALSE=0 -DUNIXWARE" \ + LIBS="$(LIBS) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +# has a const/volatile bug in its native cc compiler. (don't use it ;) +sco: # NOT-TESTED + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -DSCO -DSVR4" + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-s -DSCO" \ + LIBS="$(LIBS) -lmalloc $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +sco5: # NOT-TESTED + cd WWW/Library/unix; $(MAKE) CC="cc -belf" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -DSCO -DSVR4" + cd src; $(MAKE) all CC="cc -belf" \ + MCFLAGS="-s -DSCO" \ + LIBS="$(LIBS) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +bsdi: # TESTED(97/4/15 dickey): replaces bsdi-curses, bsdi-ncurses + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -DBSDI" + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="" \ + LIBS="$(LIBS) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +solaris: # TESTED(97/2/17 dickey) replaces solaris2 solaris2cc solaris2-slang solaris2-slangcc + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -DNGROUPS=16 -Dd_namlen=d_reclen -DSOLARIS2 -DSVR4" + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="" \ + LIBS="$(LIBS) $(RESOLVLIB) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +osf: # NOT-TESTED: replaces osf-curses, osf-slang + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -Olimit 2000 -DSYS5" + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-Olimit 4000" \ + LIBS="$(LIBS) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +sgi: # TESTED(97/2/17 dickey) curses, ncurses, slang + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -cckr" + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-cckr" \ + LIBS="$(LIBS) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +linux: # TESTED(97/2/16 dickey): curses, ncurses, slang + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.." + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="" \ + LIBS="$(LIBS) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +##Various AIX environments +aix: + @echo "Run make again and use \"make aix4\" or \"make aix32\"" + +# For AIX 4.n, and AIX 3.2.5 with POWER2 architectures, L2 caches, +# and APAR#IX58890 +aix4: # NOT-TESTED + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -D_BSD=44" + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-DAIX4 -D_BSD=44" \ + LIBS="$(LIBS) -lbsd $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +aix32: # NOT-TESTED + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.." + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="" \ + LIBS="$(LIBS) -lbsd $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +##ultrix - DEC Ultrix +ultrix: # NOT-TESTED (replaces ultrix-curses, ultrix-slang) + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.." + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="" \ + LIBS="$(LIBS) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +##Various SunOS environments +sun: + @echo "Run make again and use \"make sun3\" or \"make sun4\"" + +# define RESOLVLIB (above) for the "LIBS" entry if needed +sun3: # NOT-TESTED + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.." + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-DSUN" \ + LIBS="$(LIBS) $(RESOLVLIB) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +# define RESOLVLIB (above) for the "LIBS" entry if needed +sun4: # TESTED(97/2/17 dickey) replaces sun4-curses, sun4-ncurses, sun4-slang + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.." + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-DSUN -DSUN4" \ + LIBS="$(LIBS) $(RESOLVLIB) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +# news - SONY NEWS-OS 4.2.1R +news: # NOT-TESTED (replaces news-curses, news-ncurses, news-slang) + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.." + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="" \ + LIBS="$(LIBS) $(WAISLIB) $(SOCKSLIB)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +# next - Nextstep +next: # NOT-TESTED: replaces next-curses, next-ncurses, next-slang + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -DXMOSAIC_HACK" + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-DNEXT" \ + LIBS="$(LIBS) $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +# isc - Interactive Unix for i386 and i486 machines +# According to Robert Salter (salter1@mster.nsbf.nasa.gov), +# cc should be used instead of gcc. +# According to Walter Skorski (walt@clyde.jmp.tju.edu), +# -DPOSIX_JC is necessary, else LYBookmark.c never finds out +# what a mode_t is. +isc: # NOT-TESTED + cd WWW/Library/unix; $(MAKE) CC="$(CC)" \ + LYFLAGS="$(SITE_LYDEFS) -I../../.. -DISC" + cd src; $(MAKE) all CC="$(CC)" \ + MCFLAGS="-DISC -DPOSIX_JC" \ + LIBS="$(LIBS) -linet -lnsl_s -lcposix $(WAISLIB) $(SOCKSLIB) $(SITE_LIBS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + WWWINC=$(WWWINC) \ + WWWLIB="../WWW/Library/unix/libwww.a" + +##Miscellaneous actions +clean: + rm -f WWW/Library/*/*.[aob] + rm -f WWW/Library/*/.created + cd src; $(MAKE) clean + rm -f *.b src/lynx core Lynx.leaks + +distclean: clean + -rm -f WWW/Library/unix/makefile src/makefile src/chrtrans/makefile + -rm -f WWW/Library/*/*~ + -rm -f WWW/Library/*/*.bak + -rm -rf src/obsolete + -cd src; $(MAKE) clean + -cd src/chrtrans; $(MAKE) distclean + -rm -f *~ *.bak *.sav .*_aux + -rm -f makefile lynx_cfg.h config.status config.log config.cache + -rm -f lynx + +maintainer-clean: distclean + -rm -rf WWW/Library/*/obsolete + -rm -f Lynx.prj + +tar: clean + rm -f lynx + $(MAKE) save + +turnover: clean + $(MAKE) save + +zipcompress: compress zip + echo "done!" + +zip: clean + rm -f src/lynx + rm -f lynx + rm -f src/a.out + rm -f ../$(lynxname).zip + cd ..; rm -f $(lynxname).zip; zip -r $(lynxname).zip $(lynxdir) + +save: + cd ..; rm -f $(lynxname).tar; tar -cf - $(lynxdir) > $(lynxname).tar + +compress: tar + cd ..; rm -f $(lynxname).tar.Z; compress -f -v $(lynxname).tar + +install: + -mv -f $(bindir)/lynx $(bindir)/lynx.old + -mv -f $(libdir)/lynx.cfg $(libdir)/lynx.oldcfg + $(installbin) lynx $(bindir)/lynx + $(installdoc) lynx.man $(mandir)/lynx.1 + $(installdoc) lynx.cfg $(libdir)/lynx.cfg diff --git a/newfiles.chartrans b/newfiles.chartrans new file mode 100644 index 00000000..033d5514 --- /dev/null +++ b/newfiles.chartrans @@ -0,0 +1,37 @@ +lynx2-7-1/README.chartrans +lynx2-7-1/CHANGES.chartrans +lynx2-7-1/newfiles.chartrans +lynx2-7-1/WWW/Library/Implementation/UCAux.h +lynx2-7-1/WWW/Library/Implementation/UCDefs.h +lynx2-7-1/WWW/Library/Implementation/UCMap.h +lynx2-7-1/src/chrtrans/README.format +lynx2-7-1/src/chrtrans/README.tables +lynx2-7-1/src/chrtrans/Makefile +lynx2-7-1/src/chrtrans/UCkd.h +lynx2-7-1/src/chrtrans/makeuctb.c +lynx2-7-1/src/chrtrans/def7_uni.tbl +lynx2-7-1/src/chrtrans/cp850_uni.tbl +lynx2-7-1/src/chrtrans/iso01_uni.tbl +lynx2-7-1/src/chrtrans/iso02_uni.tbl +lynx2-7-1/src/chrtrans/iso03_uni.tbl +lynx2-7-1/src/chrtrans/iso04_uni.tbl +lynx2-7-1/src/chrtrans/iso06_uni.tbl +lynx2-7-1/src/chrtrans/iso07_uni.tbl +lynx2-7-1/src/chrtrans/iso08_uni.tbl +lynx2-7-1/src/chrtrans/iso09_uni.tbl +lynx2-7-1/src/chrtrans/iso10_uni.tbl +lynx2-7-1/src/chrtrans/koi8r_uni.tbl +lynx2-7-1/src/chrtrans/rfc_suni.tbl +lynx2-7-1/src/chrtrans/cp1252_uni.tbl +lynx2-7-1/src/chrtrans/cp437_uni.tbl +lynx2-7-1/src/chrtrans/iso05_uni.tbl +lynx2-7-1/src/chrtrans/utf8_uni.tbl +lynx2-7-1/src/chrtrans/mnem_suni.tbl +lynx2-7-1/src/chrtrans/mnemonic_suni.tbl +lynx2-7-1/src/chrtrans/cp852_uni.tbl +lynx2-7-1/src/chrtrans/cp1250_uni.tbl +lynx2-7-1/src/UCAuto.c +lynx2-7-1/src/UCAuto.h +lynx2-7-1/src/UCAux.c +lynx2-7-1/src/UCdomap.c +lynx2-7-1/src/UCdomap.h diff --git a/newfiles.configure b/newfiles.configure new file mode 100644 index 00000000..8c9c4de3 --- /dev/null +++ b/newfiles.configure @@ -0,0 +1,11 @@ +lynx2-7-1/WWW/Library/unix/makefile.in +lynx2-7-1/aclocal.m4 +lynx2-7-1/config.guess +lynx2-7-1/config.hin +lynx2-7-1/config.sub +lynx2-7-1/configure +lynx2-7-1/configure.in +lynx2-7-1/install.sh +lynx2-7-1/makefile.in +lynx2-7-1/src/chrtrans/makefile.in +lynx2-7-1/src/makefile.in diff --git a/samples/lynx.cfg b/samples/lynx.cfg index a5db76c9..3ac662f5 100644 --- a/samples/lynx.cfg +++ b/samples/lynx.cfg @@ -526,6 +526,10 @@ CHARACTER_SET:ISO Latin 1 # #LYNX_SIG_FILE:.lynxsig +# If USE_MOUSE is set TRUE, Lynx (when configured with ncurses) will allow +# the user to click with button-1 on links to select them. +#USE_MOUSE: FALSE + # If USE_SELECT_POPUPS is set FALSE, Lynx will present a vertical list of # radio buttons for the OPTIONs in SELECT blocks which lack the MULTIPLE # attribute, instead of using a popup menu. Note that if the MULTIPLE @@ -1341,8 +1345,9 @@ MINIMAL_COMMENTS:TRUE # DIRED_MENU:type:suffix:link text:extra text:action # # type: TAG: list only when one or more files are tagged -# FILE: list only when the current selection is a file +# FILE: list only when the current selection is a regular file # DIR: list only when the current selection is a directory +# LINK: list only when the current selection is a symbolic link # # suffix: list only if the current selection ends in this pattern # @@ -1363,14 +1368,23 @@ MINIMAL_COMMENTS:TRUE # #DIRED_MENU:::New File:(in current directory):LYNXDIRED://NEW_FILE%d #DIRED_MENU:::New Directory:(in current directory):LYNXDIRED://NEW_FOLDER%d -#DIRED_MENU:::Install:(of current selection):LYNXDIRED://INSTALL_SRC%p -#DIRED_MENU:::Modify Name:(of current selection):LYNXDIRED://MODIFY_NAME%p + +#DIRED_MENU:FILE::Install:(of current selection):LYNXDIRED://INSTALL_SRC%p +#DIRED_MENU:DIR::Install:(of current selection):LYNXDIRED://INSTALL_SRC%p +#DIRED_MENU:FILE::Modify File Name:(of current selection):LYNXDIRED://MODIFY_NAME%p +#DIRED_MENU:DIR::Modify Directory Name:(of current selection):LYNXDIRED://MODIFY_NAME%p +#DIRED_MENU:LINK::Modify Name:(of selected symbolic link):LYNXDIRED://MODIFY_NAME%p # Following depends on OK_PERMIT -#DIRED_MENU:::Permit Name:(of current selection):LYNXDIRED://PERMIT_SRC%p +#DIRED_MENU:FILE::Modify File Permissions:(of current selection):LYNXDIRED://PERMIT_SRC%p +#DIRED_MENU:DIR::Modify Directory Permissions:(of current selection):LYNXDIRED://PERMIT_SRC%p -#DIRED_MENU:::Change Location:(of current selection):LYNXDIRED://MODIFY_LOCATION%p -#DIRED_MENU:::Remove:(current selection):LYNXDIRED://REMOVE_SINGLE%p +#DIRED_MENU:FILE::Change Location:(of selected file):LYNXDIRED://MODIFY_LOCATION%p +#DIRED_MENU:DIR::Change Location:(of selected directory):LYNXDIRED://MODIFY_LOCATION%p +#DIRED_MENU:LINK::Change Location:(of selected symbolic link):LYNXDIRED://MODIFY_LOCATION%p +#DIRED_MENU:FILE::Remove File:(current selection):LYNXDIRED://REMOVE_SINGLE%p +#DIRED_MENU:DIR::Remove Directory:(current selection):LYNXDIRED://REMOVE_SINGLE%p +#DIRED_MENU:LINK::Remove Symbolic Link:(current selection):LYNXDIRED://REMOVE_SINGLE%p # Following depends on OK_UUDECODE and !ARCHIVE_ONLY #DIRED_MENU:FILE::UUDecode:(current selection):LYNXDIRED://UUDECODE%p @@ -1415,7 +1429,7 @@ MINIMAL_COMMENTS:TRUE #DIRED_MENU:TAG::Remove all tagged files and directories.::LYNXDIRED://REMOVE_TAGGED #DIRED_MENU:TAG::Untag all tagged items.::LYNXDIRED://CLEAR_TAGGED -# COLORS (only available if compiled with slang) +# COLORS (only available if compiled with SVr4 curses or slang) # The line must be of the form: # COLOR:INTEGER:FOREGROUND:BACKGROUND # Here FOREGROUND and BACKGROUND must be one of: diff --git a/src/GridText.c b/src/GridText.c index 28f23420..ef0c7de5 100644 --- a/src/GridText.c +++ b/src/GridText.c @@ -28,6 +28,13 @@ #include "LYMail.h" #include "LYList.h" #include "LYCharSets.h" +#ifdef EXP_CHARTRANS +#include "UCDefs.h" +#include "UCAux.h" +#ifdef EXP_CHARTRANS_AUTOSWITCH +#include "UCAuto.h" +#endif /* EXP_CHARTRANS_AUTOSWITCH */ +#endif /* EXP_CHARTRANS */ #include "LYexit.h" #include "LYLeaks.h" @@ -153,6 +160,11 @@ struct _HText { HTStream* target; /* Output stream */ HTStreamClass targetClass; /* Output routines */ +#ifdef EXP_CHARTRANS + LYUCcharset * UCI; /* pointer to node_anchor's UCInfo */ + int UCLYhndl; /* tells us what charset we are fed */ + UCTransParams T; +#endif }; /* @@ -182,7 +194,22 @@ PRIVATE HTStyle default_style = PRIVATE HTList * loaded_texts = NULL; /* A list of all those in memory */ PUBLIC HTList * search_queries = NULL; /* isindex and whereis queries */ PRIVATE void free_all_texts NOARGS; -PRIVATE int HText_TrueLineSize PARAMS((HTLine *line)); +PRIVATE int HText_TrueLineSize PARAMS((HTLine *line, HText *text)); + +#ifdef EXP_CHARTRANS +PRIVATE void htext_get_chartrans_info ARGS1(HText *, me) +{ + me->UCLYhndl = HTAnchor_getUCLYhndl(me->node_anchor,UCT_STAGE_HTEXT); + if (me->UCLYhndl < 0) { + int chndl = current_char_set; + HTAnchor_setUCInfoStage(me->node_anchor, chndl, UCT_STAGE_HTEXT, + UCT_SETBY_STRUCTURED); + me->UCLYhndl = HTAnchor_getUCLYhndl(me->node_anchor, + UCT_STAGE_HTEXT); + } + me->UCI = HTAnchor_getUCInfoStage(me->node_anchor,UCT_STAGE_HTEXT); +} +#endif /* EXP_CHARTRANS */ /* Creation Method ** --------------- @@ -276,6 +303,14 @@ PUBLIC HText * HText_new ARGS1( self->kanji_buf = '\0'; self->in_sjis = 0; +#ifdef EXP_CHARTRANS + htext_get_chartrans_info(self); + UCSetTransParams(&self->T, + self->UCLYhndl, self->UCI, + current_char_set, + &LYCharSet_UC[current_char_set]); +#endif /* EXP_CHARTRANS */ + /* * Check the kcode setting if the anchor has a charset element. - FM */ @@ -289,7 +324,6 @@ PUBLIC HText * HText_new ARGS1( * if the underline is not filled with dots. */ if (underscore_string[0] != '.') { - char *p; /* * Create and array of dots for the UNDERSCORES macro. - FM */ @@ -427,6 +461,12 @@ PUBLIC void HText_free ARGS1( * if it is not a destination of other links. - FM */ if (self->node_anchor) { +#ifdef EXP_CHARTRANS + HTAnchor_resetUCInfoStage(self->node_anchor, -1, UCT_STAGE_STRUCTURED, + UCT_SETBY_NONE); + HTAnchor_resetUCInfoStage(self->node_anchor, -1, UCT_STAGE_HTEXT, + UCT_SETBY_NONE); +#endif /* EXP_CHARTRANS */ HTAnchor_delete(self->node_anchor); } @@ -441,12 +481,16 @@ PUBLIC void HText_free ARGS1( /* Output a line ** ------------- */ -PRIVATE int display_line ARGS1( - HTLine *, line) +PRIVATE int display_line ARGS2( + HTLine *, line, + HText *, text) { register int i,j; - char buffer[3]; + char buffer[7]; char *data; +#ifdef EXP_CHARTRANS + int utf_extra = 0; +#endif buffer[0] = buffer[1] = buffer[2] = '\0'; clrtoeol(); @@ -517,6 +561,33 @@ PRIVATE int display_line ARGS1( } default: +#ifdef EXP_CHARTRANS + if (text->T.output_utf8 && !isascii(buffer[0])) { + if ((*buffer & 0xe0) == 0xc0) { + utf_extra = 1; + } else if ((*buffer & 0xf0) == 0xe0) { + utf_extra = 2; + } else if ((*buffer & 0xf8) == 0xf0) { + utf_extra = 3; + } else if ((*buffer & 0xfc) == 0xf8) { + utf_extra = 4; + } else if ((*buffer & 0xfe) == 0xfc) { + utf_extra = 5; + } else { /* garbage */ + utf_extra = 0; + } + if (strlen(data) < utf_extra) + utf_extra = 0; /* shouldn't happen */ + } + if (utf_extra) { + strncpy(&buffer[1], data, utf_extra); + buffer[utf_extra+1] = '\0'; + addstr(buffer); + buffer[1] = '\0'; + data += utf_extra; + utf_extra = 0; + } else +#endif /* EXP_CHARTRANS */ /* For CJK strings, by Masanobu Kimura */ if (HTCJK != NOCJK && !isascii(buffer[0])) { buffer[1] = *data; @@ -652,13 +723,17 @@ PRIVATE void display_page ARGS3( { HTLine * line = NULL; int i; - char *cp, tmp[3]; + char *cp, tmp[7]; int last_screen; TextAnchor *Anchor_ptr = NULL; FormInfo *FormInfo_ptr; BOOL display_flag = FALSE; HTAnchor *link_dest; static int last_nlinks = 0; +#ifdef EXP_CHARTRANS + int utf_found = 0; + static int charset_last_displayed = -1; +#endif /* EXP_CHARTRANS */ lynx_mode = NORMAL_LYNX_MODE; @@ -698,6 +773,25 @@ PRIVATE void display_page ARGS3( i++, line = line->next) /* Loop */ assert(line->next != NULL); +#ifdef EXP_CHARTRANS +#ifdef EXP_CHARTRANS_AUTOSWITCH +#ifdef LINUX + if (LYlowest_eightbit[current_char_set] <= 255 && + (current_char_set != charset_last_displayed) && + /* current_char_set has changed since last invocation, + and it's not just 7-bit. + Also we don't want to do this for -dump and -source etc. */ + LYCursesON) { + charset_last_displayed = current_char_set; + stop_curses(); + UCChangeTerminalCodepage(current_char_set, + &LYCharSet_UC[current_char_set]); + start_curses(); + } +#endif /* LINUX */ +#endif /* EXP_CHARTRANS_AUTOSWITCH */ +#endif /* EXP_CHARTRANS */ + /* * Check whether to force a screen clear to enable scrollback, * or as a hack to fix a reverse clear screen problem for some @@ -718,25 +812,45 @@ PRIVATE void display_page ARGS3( */ if (line) { for (i = 0; i < (display_lines); i++) { +#ifdef EXP_CHARTRANS + int len_needed; +#endif /* EXP_CHARTRANS */ assert(line != NULL); - display_line(line); + display_line(line, text); /* * If the target is on this line, underline it. */ if (strlen(target) > 0 && +#ifdef EXP_CHARTRANS + (case_sensitive ? + (cp = LYno_attr_mbcs_strstr(line->data, target, + text->T.output_utf8, + &len_needed)) != NULL : + (cp = LYno_attr_mbcs_case_strstr(line->data, target, + text->T.output_utf8, + &len_needed)) != NULL) && + ((int)line->offset + len_needed) < LYcols +#else (case_sensitive ? (cp = LYno_attr_char_strstr(line->data, target)) != NULL : (cp = LYno_attr_char_case_strstr(line->data, target)) != NULL) && ((int)(cp - (char *)line->data) + - (int)line->offset + strlen(target)) < LYcols) { + (int)line->offset + strlen(target)) < LYcols +#endif /* EXP_CHARTRANS */ + ) { int itmp = 0; int written = 0; int x_pos=(int)line->offset + (int)(cp - line->data); int len = strlen(target); +#ifdef EXP_CHARTRANS + int utf_extra = 0; +#endif /* EXP_CHARTRANS */ + start_bold(); + start_reverse(); start_underline(); /* underline string */ for (; written < len && (tmp[0] = line->data[itmp]) != '\0'; @@ -748,6 +862,35 @@ PRIVATE void display_page ARGS3( } else if (cp == &line->data[itmp]) { /* first character of target */ move(i+1, x_pos); +#ifdef EXP_CHARTRANS + if (text->T.output_utf8 && !isascii(tmp[0])) { + if ((*tmp & 0xe0) == 0xc0) { + utf_extra = 1; + } else if ((*tmp & 0xf0) == 0xe0) { + utf_extra = 2; + } else if ((*tmp & 0xf8) == 0xf0) { + utf_extra = 3; + } else if ((*tmp & 0xfc) == 0xf8) { + utf_extra = 4; + } else if ((*tmp & 0xfe) == 0xfc) { + utf_extra = 5; + } else { /* garbage */ + utf_extra = 0; + } + if (strlen(&line->data[1]) < utf_extra) + utf_extra = 0; /* shouldn't happen */ + } + if (utf_extra) { + strncpy(&tmp[1], &line->data[itmp+1], utf_extra); + tmp[utf_extra+1] = '\0'; + itmp += utf_extra; + addstr(tmp); + tmp[1] = '\0'; + written = written + utf_extra + 1; + utf_extra = 0; + utf_found++; + } else +#endif /* EXP_CHARTRANS */ if (HTCJK != NOCJK && !isascii(tmp[0])) { /* For CJK strings, by Masanobu Kimura */ tmp[1] = line->data[++itmp]; @@ -761,6 +904,35 @@ PRIVATE void display_page ARGS3( } else if (&line->data[itmp] > cp) { /* print all the other target chars */ +#ifdef EXP_CHARTRANS + if (text->T.output_utf8 && !isascii(tmp[0])) { + if ((*tmp & 0xe0) == 0xc0) { + utf_extra = 1; + } else if ((*tmp & 0xf0) == 0xe0) { + utf_extra = 2; + } else if ((*tmp & 0xf8) == 0xf0) { + utf_extra = 3; + } else if ((*tmp & 0xfc) == 0xf8) { + utf_extra = 4; + } else if ((*tmp & 0xfe) == 0xfc) { + utf_extra = 5; + } else { /* garbage */ + utf_extra = 0; + } + if (strlen(&line->data[1]) < utf_extra) + utf_extra = 0; /* shouldn't happen */ + } + if (utf_extra) { + strncpy(&tmp[1], &line->data[itmp+1], utf_extra); + tmp[utf_extra+1] = '\0'; + itmp += utf_extra; + addstr(tmp); + tmp[1] = '\0'; + written = written + utf_extra + 1; + utf_extra = 0; + utf_found++; + } else +#endif /* EXP_CHARTRANS */ if (HTCJK != NOCJK && !isascii(tmp[0])) { /* For CJK strings, by Masanobu Kimura */ tmp[1] = line->data[++itmp]; @@ -775,6 +947,8 @@ PRIVATE void display_page ARGS3( } stop_underline(); + stop_reverse(); + stop_bold(); move(i+2, 0); } @@ -945,7 +1119,12 @@ PRIVATE void display_page ARGS3( if (!display_flag) /* nothing on the page */ addstr("\n Document is empty"); - if (HTCJK != NOCJK || TRACE) { + + if (HTCJK != NOCJK || +#ifdef EXP_CHARTRANS + text->T.output_utf8 || +#endif /* EXP_CHARTRANS */ + TRACE) { /* for non-multibyte curses ;_; */ clearok(curscr, TRUE); } @@ -1144,6 +1323,10 @@ PRIVATE void split_line ARGS2( for (i = (plen - 1); i >= 0; i--) { if (p[i] == LY_BOLD_START_CHAR || p[i] == LY_BOLD_END_CHAR || +#ifdef EXP_CHARTRANS +#define IS_UTFEXTRA(ch) (text->T.output_utf8 && ((unsigned char)(ch)&0xc0) == 0x80) + IS_UTFEXTRA(p[i]) || +#endif /* EXP_CHARTRANS */ p[i] == LY_SOFT_HYPHEN) { ctrl_chars_on_this_line++; } @@ -1194,6 +1377,9 @@ PRIVATE void split_line ARGS2( *cp == LY_UNDERLINE_END_CHAR || *cp == LY_BOLD_START_CHAR || *cp == LY_BOLD_END_CHAR || +#ifdef EXP_CHARTRANS + IS_UTFEXTRA(*cp) || +#endif /* EXP_CHARTRANS */ *cp == LY_SOFT_HYPHEN) ctrl_chars_on_previous_line++; } @@ -1236,9 +1422,8 @@ PRIVATE void blank_lines ARGS2( if (!HText_LastLineSize(text)) { /* No text on current line */ HTLine * line = text->last_line->prev; while ((line != text->last_line) && - (HText_TrueLineSize(line) == 0)) { - if (newlines == 0) - break; + (HText_TrueLineSize(line, text) == 0)) { + if (newlines == 0) break; newlines--; /* Don't bother: already blank */ line = line->prev; } @@ -1319,6 +1504,10 @@ PUBLIC void HText_appendCharacter ARGS2( return; if ((unsigned char)ch == 155 && HTCJK == NOCJK) { /* octal 233 */ if (!HTPassHighCtrlRaw && +#ifdef EXP_CHARTRANS + !text->T.transp && !text->T.output_utf8 && + (155 < LYlowest_eightbit[current_char_set]) && +#endif /* EXP_CHARTRANS */ strncmp(LYchar_set_names[current_char_set], "IBM PC character set", 20) && strncmp(LYchar_set_names[current_char_set], @@ -1473,6 +1662,14 @@ PUBLIC void HText_appendCharacter ARGS2( } } +#ifdef EXP_CHARTRANS + if (IS_UTFEXTRA(ch)) { + line->data[line->size++] = ch; + line->data[line->size] = '\0'; + ctrl_chars_on_this_line++; + return; + } +#endif /* EXP_CHARTRANS */ /* * New Line. @@ -1984,6 +2181,11 @@ re_parse: if (anchor_ptr->line_pos > 0) { register int offset = 0, i = 0; for (; i < anchor_ptr->line_pos; i++) +#ifdef EXP_CHARTRANS + if (IS_UTFEXTRA(line_ptr->data[i])) + offset++; + else +#endif /* EXP_CHARTRANS */ if (IsSpecialAttrChar(line_ptr->data[i])) offset++; anchor_ptr->line_pos -= offset; @@ -3135,7 +3337,7 @@ PUBLIC int HText_LastLineSize ARGS1( { if (!text || !text->last_line || !text->last_line->size) return 0; - return HText_TrueLineSize(text->last_line); + return HText_TrueLineSize(text->last_line, text); } PUBLIC int HText_PreviousLineSize ARGS1( @@ -3147,11 +3349,10 @@ PUBLIC int HText_PreviousLineSize ARGS1( return 0; if (!(line = text->last_line->prev)) return 0; - return HText_TrueLineSize(line); + return HText_TrueLineSize(line, text); } -PRIVATE int HText_TrueLineSize ARGS1( - HTLine *, line) +PRIVATE int HText_TrueLineSize ARGS2(HTLine *,line, HText *,text) { int i, true_size = 0; @@ -3160,6 +3361,10 @@ PRIVATE int HText_TrueLineSize ARGS1( for (i = 0; i < line->size; i++) { if (!IsSpecialAttrChar(line->data[i])) { +#ifdef EXP_CHARTRANS + if (!text->T.output_utf8 || (unsigned char)line->data[i] < 128 || + ((unsigned char)(line->data[i] & 0xc0) == 0xc0)) +#endif /* EXP_CHARTRANS */ true_size++; } } @@ -3683,7 +3888,7 @@ PUBLIC int HText_beginInput ARGS2( I->checked = TRUE; } else { TextAnchor * b = text->first_anchor; - int i = 0; + int i2 = 0; while (b) { if (b->link_type == INPUT_ANCHOR && b->input_field->type == F_RADIO_TYPE && @@ -3694,11 +3899,11 @@ PUBLIC int HText_beginInput ARGS2( StrAllocCopy(b->input_field->orig_value, "0"); break; } - i++; + i2++; } } if (b == text->last_anchor) { - if (i == 0) + if (i2 == 0) I->checked = TRUE; break; } diff --git a/src/HTAlert.c b/src/HTAlert.c index 2d40ea51..246716e3 100644 --- a/src/HTAlert.c +++ b/src/HTAlert.c @@ -254,7 +254,6 @@ PUBLIC BOOL HTConfirmCookie ARGS6( CONST char *, value) { char message[256]; - HTList *hl; domain_entry *de; int ch, namelen, valuelen, space_free; diff --git a/src/HTFWriter.c b/src/HTFWriter.c index 58baaa9f..55e5d932 100644 --- a/src/HTFWriter.c +++ b/src/HTFWriter.c @@ -12,8 +12,12 @@ #include "tcp.h" #include "LYCurses.h" #include "HTFWriter.h" +#include "HTSaveToFile.h" #include "HTFormat.h" +#ifdef EXP_CHARTRANS +#include "UCDefs.h" +#endif /* EXP_CHARTRANS */ #include "HTAlert.h" #include "HTFile.h" #include "HTPlain.h" @@ -21,6 +25,9 @@ #ifdef VMS #include "HTVMSUtils.h" #endif /* VMS */ +#ifdef DOSPATH +#include "HTDOS.h" +#endif #include "LYStrings.h" #include "LYUtils.h" @@ -37,7 +44,8 @@ PUBLIC char * WWW_Download_File=NULL; /* contains the name of the temp file */ PUBLIC char LYCancelDownload=FALSE; /* exported to HTFormat.c in libWWW */ -extern char dump_output_immediately; /* if true dump to stdout and quit */ +/* Type mismatch found here - char != BOOLEAN - WSB */ +extern BOOLEAN dump_output_immediately; /* if true dump to stdout and quit */ #ifdef VMS extern BOOLEAN HadVMSInterrupt; /* flag from cleanup_sig() */ @@ -201,14 +209,28 @@ PRIVATE void HTFWriter_free ARGS1(HTStream *, me) * HTLoadFile() to handle it. - FM */ StrAllocCopy(addr, "file://localhost"); +#ifdef DOSPATH + StrAllocCat(addr, "/"); + StrAllocCat(addr, HTDOS_wwwName(path)); +#else #ifdef VMS StrAllocCat(addr, HTVMS_wwwName(path)); #else StrAllocCat(addr, path); #endif /* VMS */ +#endif /* DOSPATH */ StrAllocCopy(me->anchor->FileCache, path); FREE(path); FREE(me->anchor->content_encoding); +#ifdef EXP_CHARTRANS + /* lock the chartrans info we may possibly have, + so HTCharSetFormat will not apply the default for + local files */ + HTAnchor_copyUCInfoStage(me->anchor, + UCT_STAGE_PARSER, + UCT_STAGE_MIME, + UCT_SETBY_PARSER); +#endif status = HTLoadFile(addr, me->anchor, me->output_format, @@ -271,7 +293,9 @@ PRIVATE void HTFWriter_free ARGS1(HTStream *, me) if (me->anchor->FileCache) remove(me->anchor->FileCache); FREE(me); +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -761,7 +785,7 @@ PUBLIC HTStream* HTCompressed ARGS3( char fnam[256]; CONST char *suffix; char *uncompress_mask = NULL; - char *compress_suffix; + char *compress_suffix = ""; char *cp; FILE *fp = NULL; diff --git a/src/HTInit.c b/src/HTInit.c index e5dff4e1..adc9a64e 100644 --- a/src/HTInit.c +++ b/src/HTInit.c @@ -594,7 +594,9 @@ PRIVATE int ExitWithError ARGS1(char *,txt) { if (txt) fprintf(stderr, "metamail: %s\n", txt); +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); diff --git a/src/HTML.c b/src/HTML.c index b8aa4e0f..81cb1894 100644 --- a/src/HTML.c +++ b/src/HTML.c @@ -28,6 +28,11 @@ #include "LYGlobalDefs.h" #include "LYCharUtils.h" #include "LYCharSets.h" +#ifdef EXP_CHARTRANS +#include "UCMap.h" +#include "UCDefs.h" +#include "UCAux.h" +#endif #include "HTAlert.h" #include "HTFont.h" @@ -107,6 +112,13 @@ a sequence of styles. PRIVATE void actually_set_style ARGS1(HTStructured *, me) { if (!me->text) { /* First time through */ +#ifdef EXP_CHARTRANS + html_get_chartrans_info(me); + UCSetTransParams(&me->T, + me->UCLYhndl, me->UCI, + HTAnchor_getUCLYhndl(me->node_anchor,UCT_STAGE_HTEXT), + HTAnchor_getUCInfoStage(me->node_anchor,UCT_STAGE_HTEXT)); +#endif /* EXP_CHARTRANS */ me->text = HText_new2(me->node_anchor, me->target); HText_beginAppend(me->text); HText_setStyle(me->text, me->new_style); @@ -459,6 +471,9 @@ PRIVATE void HTML_start_element ARGS5( char *map_href = NULL; char *title = NULL; char *temp = NULL; +#ifdef EXP_CHARTRANS + int dest_char_set = -1; +#endif static BOOLEAN first_option = TRUE; /* is this the first option tag? */ HTParentAnchor *dest = NULL; /* an anchor's destination */ BOOL dest_ismap = FALSE; /* is dest an image map script? */ @@ -810,9 +825,9 @@ PRIVATE void HTML_start_element ARGS5( NULL, /* Tag */ href, /* Addresss */ (void *)0); /* Type */ - if (dest = HTAnchor_parent( + if ((dest = HTAnchor_parent( HTAnchor_followMainLink((HTAnchor*)me->CurrentA) - )) { + )) != 0) { if (!HTAnchor_title(dest)) HTAnchor_setTitle(dest, title); dest = NULL; @@ -1399,8 +1414,7 @@ PRIVATE void HTML_start_element ARGS5( * The INDENT value is in "en" (enval per column) units. * Divide it by enval, rounding odd values up. - FM */ - target = - (int)((((float)atoi(value[HTML_TAB_INDENT]))/enval)+(0.5)); + target = ((1.0 * atoi(value[HTML_TAB_INDENT])) / enval) + 0.5; } /* * If we are being directed to a column too far to the left @@ -2115,7 +2129,7 @@ PRIVATE void HTML_start_element ARGS5( (present && present[HTML_A_TYPE] && value[HTML_A_TYPE]) ? - (HTLinkType*)HTAtom_for(value[HTML_A_TYPE]) : (HTLinkType*)0); /* Type */ + (HTLinkType*)HTAtom_for(value[HTML_A_TYPE]) : (HTLinkType *)0); /* Type */ /* * Get rid of href since no longer needed. @@ -2143,7 +2157,17 @@ PRIVATE void HTML_start_element ARGS5( } if (present[HTML_A_ISMAP]) dest_ismap = TRUE; +#ifdef EXP_CHARTRANS + if (present[HTML_A_CHARSET] && + value[HTML_A_CHARSET] && *value[HTML_A_CHARSET] != '\0') { + dest_char_set = UCGetLYhndl_byMIME(value[HTML_A_CHARSET]); + if (dest_char_set < 0) + dest_char_set = UCLYhndl_for_unrec; + } + if (title != NULL || dest_ismap == TRUE || dest_char_set >= 0) +#else if (title != NULL || dest_ismap == TRUE) +#endif /* EXP_CHARTRANS */ dest = HTAnchor_parent( HTAnchor_followMainLink((HTAnchor*)me->CurrentA) ); @@ -2151,6 +2175,13 @@ PRIVATE void HTML_start_element ARGS5( HTAnchor_setTitle(dest, title); if (dest && dest_ismap) dest->isISMAPScript = TRUE; +#ifdef EXP_CHARTRANS + if (dest && dest_char_set >= 0) + HTAnchor_setUCInfoStage(dest, dest_char_set, + UCT_STAGE_PARSER, + UCT_SETBY_DEFAULT); + dest_char_set = -1; +#endif /* EXP_CHARTRANS */ dest = NULL; dest_ismap = FALSE; FREE(title); @@ -2170,9 +2201,9 @@ PRIVATE void HTML_start_element ARGS5( * which typically returns the image's default. - FM */ if (me->inA && me->CurrentA) { - if (dest = HTAnchor_parent( + if ((dest = HTAnchor_parent( HTAnchor_followMainLink((HTAnchor*)me->CurrentA) - )) { + )) != 0) { if (dest->isISMAPScript == TRUE) { dest_ismap = TRUE; if (TRACE) @@ -2405,11 +2436,11 @@ PRIVATE void HTML_start_element ARGS5( HText_endAnchor(me->text); HText_appendCharacter(me->text, '-'); if (id_string) { - if (ID_A = HTAnchor_findChildAndLink( + if ((ID_A = HTAnchor_findChildAndLink( me->node_anchor, /* Parent */ id_string, /* Tag */ NULL, /* Addresss */ - (void *)0)) { /* Type */ + (void *)0)) != 0) { /* Type */ HText_beginAnchor(me->text, ID_A); HText_endAnchor(me->text); } @@ -2420,9 +2451,9 @@ PRIVATE void HTML_start_element ARGS5( map_href, /* Addresss */ (void *)0); /* Type */ if (me->CurrentA && title) { - if (dest = HTAnchor_parent( + if ((dest = HTAnchor_parent( HTAnchor_followMainLink((HTAnchor*)me->CurrentA) - )) { + )) != 0) { if (!HTAnchor_title(dest)) HTAnchor_setTitle(dest, title); } @@ -2446,11 +2477,11 @@ PRIVATE void HTML_start_element ARGS5( ((map_href || dest_ismap) ? "(IMAGE)" : "(OBJECT)") : "[IMAGE]")); if (id_string && !map_href) { - if (ID_A = HTAnchor_findChildAndLink( + if ((ID_A = HTAnchor_findChildAndLink( me->node_anchor, /* Parent */ id_string, /* Tag */ NULL, /* Addresss */ - (void *)0)) { /* Type */ + (void *)0)) != 0) { /* Type */ HText_beginAnchor(me->text, ID_A); HText_endAnchor(me->text); } @@ -2459,11 +2490,11 @@ PRIVATE void HTML_start_element ARGS5( HTML_put_character(me, ' '); /* space char may be ignored */ me->in_word = NO; if (id_string) { - if (ID_A = HTAnchor_findChildAndLink( + if ((ID_A = HTAnchor_findChildAndLink( me->node_anchor, /* Parent */ id_string, /* Tag */ NULL, /* Addresss */ - (void *)0)) { /* Type */ + (void *)0)) != 0) { /* Type */ HText_beginAnchor(me->text, ID_A); HText_endAnchor(me->text); } @@ -2474,9 +2505,9 @@ PRIVATE void HTML_start_element ARGS5( map_href, /* Addresss */ (void *)0); /* Type */ if (me->CurrentA && title) { - if (dest = HTAnchor_parent( + if ((dest = HTAnchor_parent( HTAnchor_followMainLink((HTAnchor*)me->CurrentA) - )) { + )) != 0) { if (!HTAnchor_title(dest)) HTAnchor_setTitle(dest, title); } @@ -2500,11 +2531,11 @@ PRIVATE void HTML_start_element ARGS5( HTML_put_character(me, ' '); /* space char may be ignored */ me->in_word = NO; if (id_string) { - if (ID_A = HTAnchor_findChildAndLink( + if ((ID_A = HTAnchor_findChildAndLink( me->node_anchor, /* Parent */ id_string, /* Tag */ NULL, /* Addresss */ - (void *)0)) { /* Type */ + (void *)0)) != 0) { /* Type */ HText_beginAnchor(me->text, ID_A); HText_endAnchor(me->text); } @@ -2539,9 +2570,7 @@ PRIVATE void HTML_start_element ARGS5( * We're in an anchor and have a USEMAP, so end the anchor * and start a new one for the client-side MAP. - FM */ - if (dest_ismap || (present && present[HTML_IMG_ISMAP])) { - HTML_put_string(me, "[ISMAP]"); - } else { + if (!(dest_ismap || (present && present[HTML_IMG_ISMAP]))) { HTML_put_string(me, "[LINK]"); } if (me->inBoldA == TRUE && me->inBoldH == FALSE) { @@ -2549,7 +2578,8 @@ PRIVATE void HTML_start_element ARGS5( } me->inBoldA = FALSE; HText_endAnchor(me->text); - HText_appendCharacter(me->text, '-'); + if (!(dest_ismap || (present && present[HTML_IMG_ISMAP]))) + HText_appendCharacter(me->text, '-'); } else { HTML_put_character(me, ' '); me->in_word = NO; @@ -2560,9 +2590,9 @@ PRIVATE void HTML_start_element ARGS5( map_href, /* Addresss */ (void *)0); /* Type */ if (me->CurrentA && title) { - if (dest = HTAnchor_parent( + if ((dest = HTAnchor_parent( HTAnchor_followMainLink((HTAnchor*)me->CurrentA) - )) { + )) != 0) { if (!HTAnchor_title(dest)) HTAnchor_setTitle(dest, title); } @@ -2591,11 +2621,11 @@ PRIVATE void HTML_start_element ARGS5( me->in_word = NO; } if (id_string) { - if (ID_A = HTAnchor_findChildAndLink( + if ((ID_A = HTAnchor_findChildAndLink( me->node_anchor, /* Parent */ id_string, /* Tag */ NULL, /* Addresss */ - (void *)0)) { /* Type */ + (void *)0)) != 0) { /* Type */ HText_beginAnchor(me->text, ID_A); HText_endAnchor(me->text); } @@ -3402,11 +3432,27 @@ PRIVATE void HTML_start_element ARGS5( HTChildAnchor * source; HTAnchor *link_dest; + UPDATE_STYLE; /* - * Set to know we are in a form. + * FORM was declared SGML_EMPTY in HTMLDTD.c, and + * SGML_character() in SGML.c checks for a FORM end + * tag to call HTML_end_element() directly (with a + * check in that to bypass decrementing of the HTML + * parser's stack), so if we have an open FORM, close + * that one now. - FM + */ + if (me->inFORM) { + if (TRACE) { + fprintf(stderr, + "HTML: Missing FORM end tag. Faking it!\n"); + } + HTML_end_element(me, HTML_FORM, (char **)&include); + } + + /* + * Set to know we are in a new form. */ me->inFORM = TRUE; - UPDATE_STYLE; if (present && present[HTML_FORM_ACTION] && value[HTML_FORM_ACTION]) { @@ -3451,7 +3497,7 @@ PRIVATE void HTML_start_element ARGS5( NULL, action, (void *)0); - if (link_dest = HTAnchor_followMainLink((HTAnchor *)source)) { + if ((link_dest = HTAnchor_followMainLink((HTAnchor *)source)) != 0) { /* * Memory leak fixed. * 05-28-94 Lynx 2-3-1 Garrett Arch Blythe @@ -3562,7 +3608,7 @@ PRIVATE void HTML_start_element ARGS5( /* Check for unclosed TEXTAREA */ if (me->inTEXTAREA) { if (TRACE) { - fprintf(stderr, "HTML: Missing TEXTAREA end tag\n"); + fprintf(stderr, "HTML: Missing TEXTAREA end tag.\n"); } else if (!me->inBadHTML) { _statusline(BAD_HTML_USE_TRACE); me->inBadHTML = TRUE; @@ -4109,11 +4155,11 @@ PRIVATE void HTML_start_element ARGS5( if (present && present[HTML_OPTION_ID] && value[HTML_OPTION_ID] && *value[HTML_OPTION_ID]) { - if (ID_A = HTAnchor_findChildAndLink( + if ((ID_A = HTAnchor_findChildAndLink( me->node_anchor, /* Parent */ value[HTML_OPTION_ID], /* Tag */ NULL, /* Addresss */ - (void *)0)) { /* Type */ + (void *)0)) != 0) { /* Type */ HText_beginAnchor(me->text, ID_A); HText_endAnchor(me->text); I.id = (char *)value[HTML_OPTION_ID]; @@ -4270,7 +4316,8 @@ PRIVATE void HTML_end_element ARGS3( char *temp = NULL, *cp = NULL; #ifdef CAREFUL /* parser assumed to produce good nesting */ - if (element_number != me->sp[0].tag_number) { + if (element_number != me->sp[0].tag_number && + HTML_dtd.tags[element_number].contents != SGML_EMPTY) { fprintf(stderr, "HTMLText: end of element %s when expecting end of %s\n", HTML_dtd.tags[element_number].name, @@ -4290,18 +4337,20 @@ PRIVATE void HTML_end_element ARGS3( } /* - * Pop state off stack. + * Pop state off stack if it's not a FORM end tag. - FM */ - if (me->sp < me->stack + MAX_NESTING+1) { - (me->sp)++; - if (TRACE) - fprintf(stderr, - "HTML:end_element: Popped style off stack - %s\n", - me->sp->style->name); - } else { - if (TRACE) - fprintf(stderr, + if (HTML_dtd.tags[element_number].contents != SGML_EMPTY) { + if (me->sp < me->stack + MAX_NESTING+1) { + (me->sp)++; + if (TRACE) + fprintf(stderr, + "HTML:end_element: Popped style off stack - %s\n", + me->sp->style->name); + } else { + if (TRACE) + fprintf(stderr, "Stack underflow error! Tried to pop off more styles than exist in stack\n"); + } } /* @@ -4725,11 +4774,10 @@ PRIVATE void HTML_end_element ARGS3( * Finish the data off. */ { - int s = 0, e = 0, n = 0; + int s = 0, e = 0; char *start = NULL, *first_end = NULL; BOOL have_param = FALSE; char *data = NULL; - HTPresentation *Pres; HTChunkTerminate(&me->object); data = me->object.data; @@ -4910,7 +4958,7 @@ PRIVATE void HTML_end_element ARGS3( if (TRACE) fprintf(stderr, "HTML: OBJECT has USEMAP. Converting to IMG.\n"); -Object_as_IMG: + StrAllocCat(*include, "<IMG ISOBJECT"); if (me->object_id != NULL) { /* @@ -5058,7 +5106,12 @@ End_Object: break; case HTML_FORM: - /* Make sure we had a form start tag. */ + /* + * Check if we had a FORM start tag, and issue a + * message if not, but fall through to ensure that + * the FORM-related globals in GridText.c are + * initialized. - FM + */ if (!me->inFORM) { if (TRACE) { fprintf(stderr, "HTML: Unmatched FORM end tag\n"); @@ -5067,12 +5120,6 @@ End_Object: me->inBadHTML = TRUE; sleep(MessageSecs); } - /* - * We probably did start a form, for which bad HTML - * caused a substitution, so we'll try to end. - * - break; - */ } /* @@ -5348,9 +5395,34 @@ End_Object: */ /* (In fact, they all shrink!) */ -PUBLIC void HTML_put_entity ARGS2(HTStructured *, me, int, entity_number) +PUBLIC int HTML_put_entity ARGS2(HTStructured *, me, int, entity_number) { - HTML_put_string(me, p_entity_values[entity_number]); + int nent = HTML_dtd.number_of_entities; + + if (entity_number < nent) { + HTML_put_string(me, p_entity_values[entity_number]); + return HT_OK; +#ifdef EXP_CHARTRANS + } else if (me->UCLYhndl < 0) { + return HT_CANNOT_TRANSLATE; + } else { + UCode_t uni = HTML_dtd.extra_entity_info[entity_number-nent].code; + int c_out = UCTransUniChar(uni, me->UCLYhndl); + if (c_out > 0) { + HTML_put_character(me, (char)c_out); + return HT_OK; + } else if (c_out==UCTRANS_NOTFOUND) { + char buf[21]; + int c_out2 = UCTransUniCharStr(buf,20, uni, me->UCLYhndl, NO); + if (c_out2 >= 0) { + HTML_put_string(me, buf); + return HT_OK; + } + } + return HT_CANNOT_TRANSLATE; +#endif /* EXP_CHARTRANS */ + } + return HT_OK; } /* Free an HTML object @@ -5364,16 +5436,40 @@ PUBLIC void HTML_put_entity ARGS2(HTStructured *, me, int, entity_number) ** If non-interactive, everything is freed off. No: crashes -listrefs ** Otherwise, the interactive object is left. */ -PUBLIC void HTML_free ARGS1(HTStructured *, me) +PRIVATE void HTML_free ARGS1(HTStructured *, me) { + char *include = NULL; + UPDATE_STYLE; /* Creates empty document here! */ if (me->comment_end) HTML_put_string(me, me->comment_end); if (me->text) { + /* + * Emphasis containers should have been closed via + * the SGML_free() wind-down, but let's play it + * safe. - FM + */ if (me->inUnderline) { HText_appendCharacter(me->text, LY_UNDERLINE_END_CHAR); me->inUnderline = FALSE; } + + /* + * FORM was declared SGML_EMPTY in HTMLDTD.c, and + * SGML_character() in SGML.c checks for a FORM end + * tag to call HTML_end_element() directly (with a + * check in that to bypass decrementing of the HTML + * parser's stack), so if we still have an open FORM, + * close it now. - FM + */ + if (me->inFORM) { + HTML_end_element(me, HTML_FORM, (char **)&include); + me->inFORM = FALSE; + } + + /* + * Now call the cleanup function. - FM + */ HText_endAppend(me->text); } @@ -5401,9 +5497,28 @@ PUBLIC void HTML_free ARGS1(HTStructured *, me) PRIVATE void HTML_abort ARGS2(HTStructured *, me, HTError, e) { + char *include = NULL; + if (me->text) { - if (me->inUnderline) + /* + * If we have an open emphasis container, close it now. - FM + */ + if (me->inUnderline) { HText_appendCharacter(me->text, LY_UNDERLINE_END_CHAR); + me->inUnderline = FALSE; + } + + /* + * If we have an open FORM container, close it now. - FM + */ + if (me->inFORM) { + HTML_end_element(me, HTML_FORM, (char **)&include); + me->inFORM = FALSE; + } + + /* + * Now call the cleanup function. - FM + */ HText_endAppend(me->text); } @@ -5542,7 +5657,9 @@ PUBLIC HTStructured* HTML_new ARGS3( return HTMLGenerator(intermediate); fprintf(stderr, "\n** Internal error: can't parse HTML to %s\n", HTAtom_name(format_out)); +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -5676,6 +5793,11 @@ PUBLIC HTStructured* HTML_new ARGS3( me->comment_start = NULL; me->comment_end = NULL; +#ifdef EXP_CHARTRANS + html_get_chartrans_info(me); + + UCTransParams_clear(&me->T); +#endif /* EXP_CHARTRANS */ me->target = stream; if (stream) @@ -5694,7 +5816,7 @@ PUBLIC HTStream* HTMLToPlain ARGS3( HTParentAnchor *, anchor, HTStream *, sink) { - return SGML_new(&HTML_dtd, HTML_new(anchor, pres->rep_out, sink)); + return SGML_new(&HTML_dtd, anchor, HTML_new(anchor, pres->rep_out, sink)); } /* HTConverter for HTML to C code @@ -5716,7 +5838,7 @@ PUBLIC HTStream* HTMLToC ARGS3( html->comment_start = "/* "; html->comment_end = " */\n"; /* Must start in col 1 for cpp */ /* HTML_put_string(html,html->comment_start); */ - return SGML_new(&HTML_dtd, html); + return SGML_new(&HTML_dtd, anchor, html); } /* Presenter for HTML @@ -5732,7 +5854,7 @@ PUBLIC HTStream* HTMLPresent ARGS3( HTParentAnchor *, anchor, HTStream *, sink) { - return SGML_new(&HTML_dtd, HTML_new(anchor, WWW_PRESENT, NULL)); + return SGML_new(&HTML_dtd, anchor, HTML_new(anchor, WWW_PRESENT, NULL)); } #endif /* !GUI */ diff --git a/src/HTML.h b/src/HTML.h index c4bd3caf..ed3aefee 100644 --- a/src/HTML.h +++ b/src/HTML.h @@ -7,6 +7,11 @@ #ifndef HTML_H #define HTML_H +#ifdef EXP_CHARTRANS +#include "UCDefs.h" +#include "UCAux.h" +#endif + #ifndef HTUTILS_H #include "HTUtils.h" #endif /* HTUTILS_H */ @@ -132,6 +137,12 @@ struct _HTStructured { BOOL inUnderline; BOOL needBoldH; + +#ifdef EXP_CHARTRANS + LYUCcharset * UCI; /* pointer to node_anchor's UCInfo */ + int UCLYhndl; /* tells us what charset we are fed */ + UCTransParams T; +#endif }; struct _HTStream { @@ -145,7 +156,7 @@ struct _HTStream { extern void HTML_put_character PARAMS((HTStructured *me, char c)); extern void HTML_put_string PARAMS((HTStructured *me, CONST char *s)); extern void HTML_write PARAMS((HTStructured *me, CONST char *s, int l)); -extern void HTML_put_entity PARAMS((HTStructured *me, int entity_number)); +extern int HTML_put_entity PARAMS((HTStructured *me, int entity_number)); #endif /* Lynx_HTML_Handler */ /* P U B L I C diff --git a/src/LYBookmark.c b/src/LYBookmark.c index de1b8d07..79e61df9 100644 --- a/src/LYBookmark.c +++ b/src/LYBookmark.c @@ -12,6 +12,9 @@ #include "LYCurses.h" #include "GridText.h" +#ifdef DOSPATH +#include "HTDOS.h" +#endif #ifdef VMS #include "HTVMSUtils.h" #include <nam.h> @@ -46,9 +49,6 @@ PUBLIC char * get_bookmark_filename ARGS1( char string_buffer[256]; FILE *fp; int MBM_tmp; -#ifndef VMS - int len; -#endif /* !VMS */ /* * Multi_Bookmarks support. - FMG & FM @@ -115,21 +115,31 @@ success: is_mosaic_hotlist = TRUE; fclose(fp); newname = convert_mosaic_bookmark_file(filename_buffer); +#ifdef DOSPATH + sprintf(URL_buffer,"file://localhost/%s", + HTDOS_wwwName((char *)newname)); +#else #ifdef VMS sprintf(URL_buffer,"file://localhost%s", HTVMS_wwwName((char *)newname)); #else sprintf(URL_buffer,"file://localhost%s", newname); #endif /* VMS */ +#endif /* DOSPATH */ } else { fclose(fp); is_mosaic_hotlist = FALSE; +#ifdef DOSPATH + sprintf(URL_buffer,"file://localhost/%s", + HTDOS_wwwName((char *)filename_buffer)); +#else #ifdef VMS sprintf(URL_buffer,"file://localhost%s", HTVMS_wwwName((char *)filename_buffer)); #else sprintf(URL_buffer,"file://localhost%s", filename_buffer); #endif /* VMS */ +#endif /* DOSPATH */ } StrAllocCopy(*URL, URL_buffer); @@ -524,7 +534,9 @@ PUBLIC void remove_bookmark_link ARGS2( fp = NULL; fclose(nfp); nfp = NULL; - +#ifdef DOSPATH + remove(filename_buffer); +#endif /* DOSPATH */ if (rename(newfile, filename_buffer) != -1) { #ifdef VMS char VMSfilename[256]; @@ -548,7 +560,11 @@ PUBLIC void remove_bookmark_link ARGS2( * Check if this is the case and do something appropriate. * Used to be ODD_RENAME */ +#ifdef _WINDOWS + if (errno == ENOTSAM) { +#else if (errno == EXDEV) { +#endif /* WINDOWS */ char buffer[2048]; sprintf(buffer, "%s %s %s", MV_PATH, newfile, filename_buffer); system(buffer); @@ -663,12 +679,10 @@ get_advanced_choice: */ PUBLIC int select_menu_multi_bookmarks NOARGS { - FILE *fp; - int c, MBM_counter, MBM_tmp_count, MBM_allow; + int c, MBM_tmp_count, MBM_allow; int MBM_screens, MBM_from, MBM_to, MBM_current; char string_buffer[256]; char shead_buffer[256]; - char *cp, *cp1; /* * If not enabled, pick the "default" (0). diff --git a/src/LYBookmark.h b/src/LYBookmark.h index a776a81a..ee642be2 100644 --- a/src/LYBookmark.h +++ b/src/LYBookmark.h @@ -14,15 +14,5 @@ extern int select_menu_multi_bookmarks NOPARAMS; extern BOOLEAN LYHaveSubBookmarks NOPARAMS; extern void LYMBM_statusline PARAMS((char *text)); -#define BOOKMARK_TITLE "Bookmark file" -#define MOSAIC_BOOKMARK_TITLE "Converted Mosaic Hotlist" -#define MBM_V_MAXFILES 25 /* Max number of sub-bookmark files */ -/* - * Arrays that holds the names of sub-bookmark files - * and their descriptions. - */ -char *MBM_A_subbookmark[MBM_V_MAXFILES+1]; -char *MBM_A_subdescript[MBM_V_MAXFILES+1]; - #endif /* LYBOOKMARK_H */ diff --git a/src/LYCgi.c b/src/LYCgi.c index de6293ec..fce4596a 100644 --- a/src/LYCgi.c +++ b/src/LYCgi.c @@ -117,7 +117,7 @@ PUBLIC void add_lynxcgi_environment ARGS1( } } -PUBLIC int LYLoadCGI ARGS4( +PRIVATE int LYLoadCGI ARGS4( CONST char *, arg, HTParentAnchor *, anAnchor, HTFormat, format_out, diff --git a/src/LYCharSets.c b/src/LYCharSets.c index 5b243f35..6f3b7123 100644 --- a/src/LYCharSets.c +++ b/src/LYCharSets.c @@ -5,6 +5,9 @@ #include "LYGlobalDefs.h" #include "LYCharSets.h" #include "LYCharUtils.h" +#ifdef EXP_CHARTRANS +#include "UCMap.h" +#endif /* EXP_CHARTRANS */ #include "HTFont.h" #include "GridText.h" #include "LYCurses.h" @@ -20,6 +23,18 @@ extern HTCJKlang HTCJK; PUBLIC HTkcode kanji_code = NOKANJI; PUBLIC BOOLEAN LYHaveCJKCharacterSet = FALSE; +#ifdef EXP_CHARTRANS +extern void UCInit NOARGS; +extern int UCInitialized; +#else +#ifndef MAX_CHARSETS +#define MAX_CHARSETS +#endif +#ifndef MAX_CHARSETSP +#define MAX_CHARSETSP +#endif +#endif /* EXP_CHARTRANS */ + /* INSTRUCTIONS for adding new character sets !!!! * * Make up a character set and add it in the same @@ -47,7 +62,7 @@ PRIVATE char * ISO_Latin1[] = { "\303", /* capital A, tilde - Atilde */ "\304", /* capital A, dieresis or umlaut mark - Auml */ "\307", /* capital C, cedilla - Ccedil */ - "\320", /* capital Eth, Icelandic - Dstrok */ + "\320", /* capital Eth or D with stroke - Dstrok */ "\320", /* capital Eth, Icelandic - ETH */ "\311", /* capital E, acute accent - Eacute */ "\312", /* capital E, circumflex accent - Ecirc */ @@ -166,8 +181,8 @@ PRIVATE char * ISO_Latin2[] = { "A", /* capital A, tilde - Atilde */ "\304", /* capital A, dieresis or umlaut mark - Auml */ "\307", /* capital C, cedilla - Ccedil */ - "DH", /* capital Eth, Icelandic - Dstrok */ - "DH", /* capital Eth, Icelandic - ETH */ + "\320", /* capital Eth or D with stroke - Dstrok */ + "\320", /* capital Eth, Icelandic - ETH */ "\311", /* capital E, acute accent - Eacute */ "E", /* capital E, circumflex accent - Ecirc */ "E", /* capital E, grave accent - Egrave */ @@ -289,7 +304,7 @@ PRIVATE char * ISO_LatinN[] = { "A", /* capital A, dieresis or umlaut mark - Auml*/ #endif /* LY_UMLAUT */ "C", /* capital C, cedilla - Ccedil */ - "DH", /* capital Eth, Icelandic - Dstrok */ + "Dj", /* capital D with stroke - Dstrok */ "DH", /* capital Eth, Icelandic - ETH */ "E", /* capital E, acute accent - Eacute */ "E", /* capital E, circumflex accent - Ecirc */ @@ -350,7 +365,7 @@ PRIVATE char * ISO_LatinN[] = { "\002", /* emsp NEVER CHANGE THIS - emsp */ "-", /* dash the width of ensp - endash */ "\002", /* ensp NEVER CHANGE THIS - ensp */ - "e", /* small eth, Icelandic eth */ + "dh", /* small eth, Icelandic eth */ "e", /* small e, dieresis or umlaut mark - euml */ " 1/2", /* fraction 1/2 (½) - frac12 */ " 1/4", /* fraction 1/4 (¼) - frac14 */ @@ -428,7 +443,7 @@ PRIVATE char * DEC_Multinational[] = { "\303", /* capital A, tilde - Atilde */ "\304", /* capital A, dieresis or umlaut mark - Auml */ "\307", /* capital C, cedilla - Ccedil */ - "DH", /* capital Eth, Icelandic - Dstrok */ + "Dj", /* capital D with stroke - Dstrok */ "DH", /* capital Eth, Icelandic - ETH */ "\311", /* capital E, acute accent - Eacute */ "\312", /* capital E, circumflex accent - Ecirc */ @@ -550,7 +565,7 @@ PRIVATE char * PC_charset[] = { "A", /* capital A, tilde - Atilde */ "\216", /* capital A, dieresis or umlaut mark - Auml */ "\200", /* capital C, cedilla - Ccedil */ - "DH", /* capital Eth, Icelandic - Dstrok */ + "Dj", /* capital D with stroke - Dstrok */ "DH", /* capital Eth, Icelandic - ETH */ "\220", /* capital E, acute accent - Eacute */ "E", /* capital E, circumflex accent - Ecirc */ @@ -599,7 +614,7 @@ PRIVATE char * PC_charset[] = { "\002", /* emsp NEVER CHANGE THIS - emsp */ "-", /* dash the width of ensp - endash */ "\002", /* ensp NEVER CHANGE THIS - ensp */ - "e", /* small eth, Icelandic - eth */ + "dh", /* small eth, Icelandic - eth */ "\211", /* small e, dieresis or umlaut mark - euml */ "\253", /* fraction 1/2 (½) - frac12 */ "\254", /* fraction 1/4 (¼) - frac14 */ @@ -672,7 +687,7 @@ PRIVATE char * PC_850_charset[] = { "\307", /* capital A, tilde - Atilde */ "\216", /* capital A, dieresis or umlaut mark - Auml */ "\200", /* capital C, cedilla - Ccedil */ - "\321", /* capital Eth, Icelandic - Dstrok */ + "\321", /* capital Eth or D with stroke - Dstrok */ "\321", /* capital Eth, Icelandic - ETH */ "\220", /* capital E, acute accent - Eacute */ "\322", /* capital E, circumflex accent - Ecirc */ @@ -793,7 +808,7 @@ PRIVATE char * Macintosh[] = { "\314", /* capital A, tilde - Atilde */ "\200", /* capital A, dieresis or umlaut mark - Auml */ "\202", /* capital C, cedilla - Ccedil */ - "DH", /* capital Eth, Icelandic - Dstrok */ + "Dj", /* capital D with stroke - Dstrok */ "DH", /* capital Eth, Icelandic - ETH */ "\203", /* capital E, acute accent - Eacute */ "\346", /* capital E, circumflex accent - Ecirc */ @@ -912,7 +927,7 @@ PRIVATE char * NeXT_Step[] = { "\204", /* capital A, tilde - Atilde */ "\205", /* capital A, dieresis or umlaut mark - Auml */ "\207", /* capital C, cedilla - Ccedil */ - "\220", /* capital Eth, Icelandic - Dstrok */ + "\220", /* capital Eth or D with stroke - Dstrok */ "\220", /* capital Eth, Icelandic - ETH */ "\211", /* capital E, acute accent - Eacute */ "\212", /* capital E, circumflex accent - Ecirc */ @@ -1036,7 +1051,7 @@ PRIVATE char * KOI8_R[] = { "A", /* capital A, dieresis or umlaut mark - Auml*/ #endif /* LY_UMLAUT */ "C", /* capital C, cedilla - Ccedil */ - "DH", /* capital Eth, Icelandic - Dstrok */ + "Dj", /* capital D with stroke - Dstrok */ "DH", /* capital Eth, Icelandic - ETH */ "E", /* capital E, acute accent - Eacute */ "E", /* capital E, circumflex accent - Ecirc */ @@ -1097,7 +1112,7 @@ PRIVATE char * KOI8_R[] = { "\002", /* emsp NEVER CHANGE THIS - emsp */ "-", /* dash the width of ensp - endash */ "\002", /* ensp NEVER CHANGE THIS - ensp */ - "e", /* small eth, Icelandic eth */ + "dh", /* small eth, Icelandic eth */ "\243", /* small e, dieresis or umlaut mark - euml */ " 1/2", /* fraction 1/2 (½) - frac12 */ " 1/4", /* fraction 1/4 (¼) - frac14 */ @@ -1179,7 +1194,7 @@ PRIVATE char * Chinese[] = { "A", /* capital A, dieresis or umlaut mark - Auml*/ #endif /* LY_UMLAUT */ "C", /* capital C, cedilla - Ccedil */ - "DH", /* capital Eth, Icelandic - Dstrok */ + "Dj", /* capital D with stroke - Dstrok */ "DH", /* capital Eth, Icelandic - ETH */ "E", /* capital E, acute accent - Eacute */ "E", /* capital E, circumflex accent - Ecirc */ @@ -1240,7 +1255,7 @@ PRIVATE char * Chinese[] = { "\002", /* emsp NEVER CHANGE THIS - emsp */ "-", /* dash the width of ensp - endash */ "\002", /* ensp NEVER CHANGE THIS - ensp */ - "e", /* small eth, Icelandic eth */ + "dh", /* small eth, Icelandic eth */ "e", /* small e, dieresis or umlaut mark - euml */ " 1/2", /* fraction 1/2 (½) - frac12 */ " 1/4", /* fraction 1/4 (¼) - frac14 */ @@ -1322,7 +1337,7 @@ PRIVATE char * EUC_JP[] = { "A", /* capital A, dieresis or umlaut mark - Auml*/ #endif /* LY_UMLAUT */ "C", /* capital C, cedilla - Ccedil */ - "DH", /* capital Eth, Icelandic - Dstrok */ + "Dj", /* capital D with stroke - Dstrok */ "DH", /* capital Eth, Icelandic - ETH */ "E", /* capital E, acute accent - Eacute */ "E", /* capital E, circumflex accent - Ecirc */ @@ -1383,7 +1398,7 @@ PRIVATE char * EUC_JP[] = { "\002", /* emsp NEVER CHANGE THIS - emsp */ "-", /* dash the width of ensp - endash */ "\002", /* ensp NEVER CHANGE THIS - ensp */ - "e", /* small eth, Icelandic eth */ + "dh", /* small eth, Icelandic eth */ "e", /* small e, dieresis or umlaut mark - euml */ " 1/2", /* fraction 1/2 (½) - frac12 */ " 1/4", /* fraction 1/4 (¼) - frac14 */ @@ -1465,7 +1480,7 @@ PRIVATE char * Shift_JIS[] = { "A", /* capital A, dieresis or umlaut mark - Auml*/ #endif /* LY_UMLAUT */ "C", /* capital C, cedilla - Ccedil */ - "DH", /* capital Eth, Icelandic - Dstrok */ + "Dj", /* capital D with stroke - Dstrok */ "DH", /* capital Eth, Icelandic - ETH */ "E", /* capital E, acute accent - Eacute */ "E", /* capital E, circumflex accent - Ecirc */ @@ -1526,7 +1541,7 @@ PRIVATE char * Shift_JIS[] = { "\002", /* emsp NEVER CHANGE THIS - emsp */ "-", /* dash the width of ensp - endash */ "\002", /* ensp NEVER CHANGE THIS - ensp */ - "e", /* small eth, Icelandic eth */ + "dh", /* small eth, Icelandic eth */ "e", /* small e, dieresis or umlaut mark - euml */ " 1/2", /* fraction 1/2 (½) - frac12 */ " 1/4", /* fraction 1/4 (¼) - frac14 */ @@ -1608,7 +1623,7 @@ PRIVATE char * Korean[] = { "A", /* capital A, dieresis or umlaut mark - Auml*/ #endif /* LY_UMLAUT */ "C", /* capital C, cedilla - Ccedil */ - "DH", /* capital Eth, Icelandic - Dstrok */ + "Dj", /* capital D with stroke - Dstrok */ "DH", /* capital Eth, Icelandic - ETH */ "E", /* capital E, acute accent - Eacute */ "E", /* capital E, circumflex accent - Ecirc */ @@ -1669,7 +1684,7 @@ PRIVATE char * Korean[] = { "\002", /* emsp NEVER CHANGE THIS - emsp */ "-", /* dash the width of ensp - endash */ "\002", /* ensp NEVER CHANGE THIS - ensp */ - "e", /* small eth, Icelandic eth */ + "dh", /* small eth, Icelandic eth */ "e", /* small e, dieresis or umlaut mark - euml */ " 1/2", /* fraction 1/2 (½) - frac12 */ " 1/4", /* fraction 1/4 (¼) - frac14 */ @@ -1751,7 +1766,7 @@ PRIVATE char * Taipei[] = { "A", /* capital A, dieresis or umlaut mark - Auml*/ #endif /* LY_UMLAUT */ "C", /* capital C, cedilla - Ccedil */ - "DH", /* capital Eth, Icelandic - Dstrok */ + "Dj", /* capital D with stroke - Dstrok */ "DH", /* capital Eth, Icelandic - ETH */ "E", /* capital E, acute accent - Eacute */ "E", /* capital E, circumflex accent - Ecirc */ @@ -1812,7 +1827,7 @@ PRIVATE char * Taipei[] = { "\002", /* emsp NEVER CHANGE THIS - emsp */ "-", /* dash the width of ensp - endash */ "\002", /* ensp NEVER CHANGE THIS - ensp */ - "e", /* small eth, Icelandic eth */ + "dh", /* small eth, Icelandic eth */ "e", /* small e, dieresis or umlaut mark - euml */ " 1/2", /* fraction 1/2 (½) - frac12 */ " 1/4", /* fraction 1/4 (¼) - frac14 */ @@ -1881,7 +1896,7 @@ PRIVATE char * Taipei[] = { ** ** This MUST match exactly the table referred to in the DTD! */ -PRIVATE char * SevenBitApproximations[] = { +PUBLIC char * SevenBitApproximations[] = { "AE", /* capital AE diphthong (ligature) - AElig */ "A", /* capital A, acute accent - Aacute */ "A", /* capital A, circumflex accent - Acirc */ @@ -1894,7 +1909,7 @@ PRIVATE char * SevenBitApproximations[] = { "A", /* capital A, dieresis or umlaut mark - Auml*/ #endif /* LY_UMLAUT */ "C", /* capital C, cedilla - Ccedil */ - "DH", /* capital Eth, Icelandic - Dstrok */ + "Dj", /* capital D with stroke - Dstrok */ "DH", /* capital Eth, Icelandic - ETH */ "E", /* capital E, acute accent - Eacute */ "E", /* capital E, circumflex accent - Ecirc */ @@ -1955,7 +1970,7 @@ PRIVATE char * SevenBitApproximations[] = { "\002", /* emsp NEVER CHANGE THIS - emsp */ "-", /* dash the width of ensp - endash */ "\002", /* ensp NEVER CHANGE THIS - ensp */ - "e", /* small eth, Icelandic eth */ + "dh", /* small eth, Icelandic eth */ "e", /* small e, dieresis or umlaut mark - euml */ " 1/2", /* fraction 1/2 (½) - frac12 */ " 1/4", /* fraction 1/4 (¼) - frac14 */ @@ -2029,7 +2044,7 @@ PRIVATE char * SevenBitApproximations[] = { /* * Add the array name to LYCharSets */ -PUBLIC char ** LYCharSets[]={ +PUBLIC char ** LYCharSets[MAX_CHARSETS]={ ISO_Latin1, ISO_Latin2, ISO_LatinN, @@ -2044,14 +2059,15 @@ PUBLIC char ** LYCharSets[]={ Shift_JIS, Korean, Taipei, - SevenBitApproximations + SevenBitApproximations, + ISO_Latin1 /* maybe... - kw */ }; /* * Add the name that the user will see below. * The order of LYCharSets and char_set_names MUST be the same */ -PUBLIC char * LYchar_set_names[]={ +PUBLIC char * LYchar_set_names[MAX_CHARSETSP]={ "ISO Latin 1 ", "ISO Latin 2 ", "Other ISO Latin ", @@ -2067,17 +2083,63 @@ PUBLIC char * LYchar_set_names[]={ "Korean ", "Taipei (Big5) ", "7 bit approximations", + "Transparent ", (char *) 0 }; +#ifdef EXP_CHARTRANS -#ifdef USE_SLANG +PUBLIC int LYNumCharsets = 0; /* will be initialized later by UC_Register... */ + +#include <UCDefs.h> +/* + * Associate additional pieces of info with each of the charsets listed + * above. + * Will be automatically modified (and extended) by charset translations + * which are loaded using the EXP_CHARTRANS mechanism. + * Most important piece of info to put here is a MIME charset name. + * Used for EXP_CHARTRANS. + * The order of LYCharSets and LYCharSet_UC MUST be the same. + * + * Note that most of the charsets added by the new mechanism in src/chrtrans + * don't show up here at all. They don't have to. + */ +PUBLIC LYUCcharset LYCharSet_UC[MAX_CHARSETS]= +{ + {-1,"iso-8859-1", UCT_ENC_8BIT,UCT_REP_IS_LAT1,UCT_CP_IS_LAT1,UCT_R_LAT1, + UCT_R_LAT1}, + {-1,"iso-8859-2", UCT_ENC_8BIT,0,0, UCT_R_LAT1,UCT_R_8859S}, + {-1,"x-iso-8859-other",UCT_ENC_8BIT,0,0, UCT_R_LAT1,UCT_R_8859S}, + {-1,"dec-mcs", UCT_ENC_8BIT,0,0, UCT_R_LAT1,UCT_R_8859S}, + {-1,"cp437", UCT_ENC_8BIT,0,0, UCT_R_8BIT,UCT_R_ASCII}, + {-1,"cp850", UCT_ENC_8BIT,UCT_REP_SUPERSETOF_LAT1,0, + UCT_R_8BIT,UCT_R_ASCII}, + {-1,"macintosh", UCT_ENC_8BIT,0,0, UCT_R_8BIT,UCT_R_ASCII}, + {-1,"x-next", UCT_ENC_8BIT,0,0, UCT_R_8BIT,UCT_R_ASCII}, + {-1,"koi8-r", UCT_ENC_8BIT,0,0, UCT_R_8BIT,UCT_R_ASCII}, +/* There is no strict correlation for the next five, since the tranfer + * charset gets decoded into Display Char Set by the CJK code (separate + * from EXP_CHARTRANS mechanism). For now, just put something there for + * MIME charset name. */ + {-1,"iso-2022-cn", UCT_ENC_CJK,0,0, UCT_R_8BIT,UCT_R_ASCII}, + {-1,"euc-jp", UCT_ENC_CJK,0,0, UCT_R_8BIT,UCT_R_ASCII}, + {-1,"shift_jis", UCT_ENC_CJK,0,0, UCT_R_8BIT,UCT_R_ASCII}, + {-1,"iso-2022-kr", UCT_ENC_CJK,0,0, UCT_R_8BIT,UCT_R_ASCII}, + {-1,"big5", UCT_ENC_CJK,0,0, UCT_R_8BIT,UCT_R_ASCII}, + {-1,"us-ascii", UCT_ENC_7BIT,UCT_REP_SUBSETOF_LAT1, + UCT_CP_SUBSETOF_LAT1, + UCT_R_ASCII,UCT_R_ASCII}, + {-1,"x-transparent", UCT_ENC_8BIT,0,0, UCT_R_8BIT,UCT_R_ASCII} +}; +#endif + +#if defined(USE_SLANG) || defined(EXP_CHARTRANS) /* * Add the code of the the lowest character with the high bit set * that can be directly displayed. - * Currently only used by SLANG. + * Used by SLANG and for EXP_CHARTRANS. * The order of LYCharSets and LYlowest_eightbit MUST be the same. */ -PUBLIC int LYlowest_eightbit[]={ +PUBLIC int LYlowest_eightbit[MAX_CHARSETS]={ 160, /* ISO Latin 1 */ 160, /* ISO Latin 2 */ 160, /* Other ISO Latin */ @@ -2092,9 +2154,10 @@ PUBLIC int LYlowest_eightbit[]={ 128, /* Japanese (SJIS) */ 128, /* Korean */ 128, /* Taipei (Big5) */ - 999 /* 7 bit approximations */ + 999, /* 7 bit approximations */ + 128 /* Transparent (???) */ }; -#endif /* USE_SLANG */ +#endif /* USE_SLANG || EXP_CHARTRANS */ /* @@ -2186,8 +2249,29 @@ PUBLIC void HTMLSetCharacterHandling ARGS1(int,i) HTPassHighCtrlNum = FALSE; } +#ifdef EXP_CHARTRANS + if (LYCharSet_UC[i].enc != UCT_ENC_CJK) { + + if (LYRawMode) { + UCLYhndl_for_unspec = i; + } else { + int chndl = 0; + if (UCAssume_MIMEcharset) + chndl = UCGetLYhndl_byMIME(UCAssume_MIMEcharset); + if (chndl != i || chndl != UCLYhndl_for_unspec) + UCLYhndl_for_unspec = chndl < 0 ? 0 : chndl; + else + UCLYhndl_for_unspec = 0; + } + } +#endif /* EXP_CHARTRANS */ + #ifdef USE_SLANG - SLsmg_Display_Eight_Bit = LYlowest_eightbit[i]; + if (LYlowest_eightbit[i] > 191) + /* higher than this may output cntrl chars to screen - kw */ + SLsmg_Display_Eight_Bit = 191; + else + SLsmg_Display_Eight_Bit = LYlowest_eightbit[i]; #endif /* USE_SLANG */ return; @@ -2314,7 +2398,7 @@ PUBLIC CONST char * LYEntityNames[] = { "Iacute", /* 205, capital I, acute accent */ "Icirc", /* 206, capital I, circumflex accent */ "Iuml", /* 207, capital I, dieresis or umlaut mark */ - "ETH", /* 208, capital Eth, Icelandic (Dstrok) */ + "ETH", /* 208, capital Eth, Icelandic (or Latin2 Dstrok) */ "Ntilde", /* 209, capital N, tilde */ "Ograve", /* 210, capital O, grave accent */ "Oacute", /* 211, capital O, acute accent */ @@ -2381,6 +2465,10 @@ PUBLIC CONST char * HTMLGetEntityName ARGS1(int,i) * 173, but keeps our substitutions for * characters that are not part of the * ISO-8859-1 charset. - FM + * + * Return '\0' to signal that there isn't a one-character + * equivalent. Caller must check! and do whatever additional + * processing it wants to do instead. - kw */ PUBLIC char HTMLGetLatinOneValue ARGS1(int,i) { @@ -2400,6 +2488,8 @@ PUBLIC char HTMLGetLatinOneValue ARGS1(int,i) break; default: + if (ch && ISO_Latin1[i][1]) /* Got a string longer than 1 char */ + return '\0'; break; } @@ -2417,4 +2507,33 @@ PUBLIC void HTMLUseCharacterSet ARGS1(int,i) HTMLSetHaveCJKCharacterSet(i); return; } +/* + * Initializer, calls initialization function for the + * CHARTRANS handling if compiled in. - kw + * (Also to ensure this module is linked + * if the external model is common block, and the + * module is ever placed in a library. - FM) ?? + */ +PUBLIC int LYCharSetsDeclared NOPARAMS +{ + int status = 1; + +#ifdef EXP_CHARTRANS + UCInit(); + status = UCInitialized; + + if (UCAssume_MIMEcharset && *UCAssume_MIMEcharset) + UCLYhndl_for_unspec = UCGetLYhndl_byMIME(UCAssume_MIMEcharset); + else + UCLYhndl_for_unspec = 0; + if (UCAssume_localMIMEcharset && *UCAssume_localMIMEcharset) + UCLYhndl_HTFile_for_unspec = + UCGetLYhndl_byMIME(UCAssume_localMIMEcharset); + if (UCAssume_unrecMIMEcharset && *UCAssume_unrecMIMEcharset) + UCLYhndl_for_unrec = + UCGetLYhndl_byMIME(UCAssume_unrecMIMEcharset); +#endif + + return status; +} diff --git a/src/LYCharSets.h b/src/LYCharSets.h index 97fe9b10..f6e0f8a5 100644 --- a/src/LYCharSets.h +++ b/src/LYCharSets.h @@ -8,10 +8,20 @@ extern char *LYchar_set_names[]; extern char ** LYCharSets[]; +extern char * SevenBitApproximations[]; /* made public. -kw */ extern char ** p_entity_values; -#ifdef USE_SLANG +#if defined(USE_SLANG) || defined(EXP_CHARTRANS) extern int LYlowest_eightbit[]; -#endif /* USE_SLANG */ +#endif /* USE_SLANG || EXP_CHARTRANS */ + +#ifdef EXP_CHARTRANS +extern int LYNumCharsets; +extern LYUCcharset LYCharSet_UC[]; +#endif /* EXP_CHARTRANS */ + +/* Initializer for LYCharSets.c */ +extern int LYCharSetsDeclared NOPARAMS; + extern void HTMLSetCharacterHandling PARAMS((int i)); extern void HTMLSetRawModeDefault PARAMS((int i)); extern void HTMLSetUseDefaultRawMode PARAMS((int i, BOOLEAN modeflag)); diff --git a/src/LYCharUtils.c b/src/LYCharUtils.c index 26f33cc1..6a3a3858 100644 --- a/src/LYCharUtils.c +++ b/src/LYCharUtils.c @@ -20,6 +20,12 @@ #include "LYCharUtils.h" #include "LYCharSets.h" +#ifdef EXP_CHARTRANS +#include "UCMap.h" +#include "UCDefs.h" +#include "UCAux.h" +#endif + #include "HTAlert.h" #include "HTFont.h" #include "HTForms.h" @@ -34,6 +40,9 @@ #include "LYCurses.h" #include "HTVMSUtils.h" #endif /* VMS */ +#ifdef DOSPATH +#include "HTDOS.h" +#endif #include "LYexit.h" #include "LYLeaks.h" @@ -330,39 +339,25 @@ PUBLIC char * LYUnEscapeEntities ARGS3( continue; /* ** For 8482 (trade) use the character reference if it's - ** a hidden INPUT, otherwise handle as named entify. - FM + ** a hidden INPUT, otherwise use whatever the tables have + ** for ™. - FM, kw */ - } else if (value == 8482) { - if (hidden) { + } else if (value == 8482 && hidden) { *q++ = '&'; *q++ = '#'; if (cpe != '\0') *(p-1) = cpe; p = cp; continue; - } else { - if (cpe != '\0') { - p--; - *p = cpe; - } - cp = (p - 6); - *cp++ = '&'; - *cp++ = 't'; - *cp++ = 'r'; - *cp++ = 'a'; - *cp++ = 'd'; - *cp++ = 'e'; - p -= 6; - continue; - } /* ** If it's ASCII, or is 8-bit but HTPassEightBitNum ** is set or the character set is "ISO Latin 1", ** use it's value. - FM */ - } else if (value < 161 || HTPassEightBitNum || + } else if (value < 161 || + (value < 256 && (HTPassEightBitNum || !strncmp(LYchar_set_names[current_char_set], - "ISO Latin 1", 11)) { + "ISO Latin 1", 11)))) { /* ** No conversion needed. */ @@ -378,8 +373,12 @@ PUBLIC char * LYUnEscapeEntities ARGS3( */ } else { CONST char * name; - value -= 160; - name = HTMLGetEntityName(value); + if (value == 8482) { /* trade mark sign falls through to here -kw */ + name = "trade"; + } else { + value -= 160; + name = HTMLGetEntityName(value); + } for(low = 0, high = HTML_dtd.number_of_entities; high > low; diff < 0 ? (low = i+1) : (high = i)) { @@ -761,7 +760,30 @@ PUBLIC void LYUnEscapeToLatinOne ARGS2( ** is set and it's 8-bit. - FM */ buf[0] = HTMLGetLatinOneValue(i); - if ((unsigned char)buf[0] > 159 && isURL == TRUE) { + if (buf[0] == '\0') { + /* + ** The entity does not have an 8859-1 representation + ** of exactly one char length. Try to deal with it + ** anyway - either HTEscape the whole mess, or pass + ** through raw. So make sure the ISO_Latin1 table, + ** which is the first table in LYCharSets, has resonable + ** substitution strings! (if it really must have any + ** longer than one char..) -kw + */ + if (!LYCharSets[0][i][0]) /* totally empty, skip - kw */ + /* do nothing */ ; + else if (isURL) { + /* *All* will be HTEscape'd - kw */ + esc = HTEscape(LYCharSets[0][i], URL_XALPHAS); + for (e = 0; esc[e]; e++) + *q++ = esc[e]; + FREE(esc); + } else { + /* *Nothing* will be HTEscape'd - kw */ + for (e = 0; LYCharSets[0][i][e]; e++) + *q++ = (unsigned char)(LYCharSets[0][i][e]); + } + } else if ((unsigned char)buf[0] > 159 && isURL == TRUE) { esc = HTEscape(buf, URL_XALPHAS); for (e = 0; esc[e]; e++) *q++ = esc[e]; @@ -1186,12 +1208,16 @@ PUBLIC void LYFillLocalFileURL ARGS2( StrAllocCat(*href, HTVMS_wwwName(getenv("PATH"))); #else char curdir[DIRNAMESIZE]; -#ifdef NO_GETCWD - getwd (curdir); -#else +#if HAVE_GETCWD getcwd (curdir, DIRNAMESIZE); +#else + getwd (curdir); #endif /* NO_GETCWD */ +#ifdef DOSPATH + StrAllocCat(*href, HTDOS_wwwName(curdir)); +#else StrAllocCat(*href, curdir); +#endif /* DOSPATH */ #endif /* VMS */ } @@ -1562,6 +1588,29 @@ PUBLIC void LYZero_OL_Counter ARGS1( return; } +#ifdef EXP_CHARTRANS +/* +** This function is used by the HTML Structured object. - kw +*/ +PUBLIC void html_get_chartrans_info ARGS1(HTStructured *, me) +{ + me->UCLYhndl = HTAnchor_getUCLYhndl(me->node_anchor,UCT_STAGE_STRUCTURED); + if (me->UCLYhndl < 0) { + int chndl = HTAnchor_getUCLYhndl(me->node_anchor, UCT_STAGE_HTEXT); + if (chndl < 0) { + chndl = current_char_set; + HTAnchor_setUCInfoStage(me->node_anchor, chndl, UCT_STAGE_HTEXT, + UCT_SETBY_STRUCTURED); + } + HTAnchor_setUCInfoStage(me->node_anchor, chndl, + UCT_STAGE_STRUCTURED, UCT_SETBY_STRUCTURED); + me->UCLYhndl = HTAnchor_getUCLYhndl(me->node_anchor, + UCT_STAGE_STRUCTURED); + } + me->UCI = HTAnchor_getUCInfoStage(me->node_anchor,UCT_STAGE_STRUCTURED); +} +#endif /* EXP_CHARTRANS */ + /* ** This function processes META tags in HTML streams. - FM */ @@ -1573,7 +1622,7 @@ PUBLIC void LYHandleMETA ARGS4( { char *http_equiv = NULL, *name = NULL, *content = NULL; char *href = NULL, *id_string = NULL, *temp = NULL; - char *cp, *cp0, *cp1; + char *cp, *cp0, *cp1 = 0; int url_type = 0, i; if (!me || !present) @@ -1643,8 +1692,8 @@ PUBLIC void LYHandleMETA ARGS4( * Check for a no-cache Pragma * or Cache-Control directive. - FM */ - if (!strcasecomp((name ? name : http_equiv), "Pragma") || - !strcasecomp((name ? name : http_equiv), "Cache-Control")) { + if (!strcasecomp((http_equiv ? http_equiv : name), "Pragma") || + !strcasecomp((http_equiv ? http_equiv : name), "Cache-Control")) { LYUnEscapeToLatinOne(&content, FALSE); LYTrimHead(content); LYTrimTail(content); @@ -1661,7 +1710,7 @@ PUBLIC void LYHandleMETA ARGS4( * should. - FM */ if ((!me->node_anchor->cache_control) && - !strcasecomp((name ? name : http_equiv), "Cache-Control")) { + !strcasecomp((http_equiv ? http_equiv : name), "Cache-Control")) { for (i = 0; content[i]; i++) content[i] = TOLOWER(content[i]); StrAllocCopy(me->node_anchor->cache_control, content); @@ -1708,7 +1757,7 @@ PUBLIC void LYHandleMETA ARGS4( /* * Check for an Expires directive. - FM */ - } else if (!strcasecomp((name ? name : http_equiv), "Expires")) { + } else if (!strcasecomp((http_equiv ? http_equiv : name), "Expires")) { /* * If we didn't get a Expires MIME header, * store it in the anchor element, and if we @@ -1733,7 +1782,7 @@ PUBLIC void LYHandleMETA ARGS4( * the charset via a server's header. - AAC & FM */ } else if (!(me->node_anchor->charset && *me->node_anchor->charset) && - !strcasecomp((name ? name : http_equiv), "Content-Type")) { + !strcasecomp((http_equiv ? http_equiv : name), "Content-Type")) { LYUnEscapeToLatinOne(&content, FALSE); LYTrimHead(content); LYTrimTail(content); @@ -1746,10 +1795,90 @@ PUBLIC void LYHandleMETA ARGS4( if ((cp = strstr(content, "text/html;")) != NULL && (cp1 = strstr(content, "charset")) != NULL && cp1 > cp) { + BOOL chartrans_ok = NO; + char *cp3 = NULL, *cp4; + int chndl; + cp1 += 7; - while (*cp1 == ' ' || *cp1 == '=') + while (*cp1 == ' ' || *cp1 == '=' || *cp1 == '"') cp1++; - +#ifdef EXP_CHARTRANS + StrAllocCopy(cp3, cp1); /* copy to mutilate more */ + for (cp4=cp3; (*cp4 != '\0' && *cp4 != '"' && + *cp4 != ';' && *cp4 != ':' && + !WHITE(*cp4)); cp4++) + /* nothing */ ; + *cp4 = '\0'; + cp4 = cp3; + chndl = UCGetLYhndl_byMIME(cp3); + if (chndl < 0) { + if (0==strcmp(cp4, "cn-big5")) { + cp4 += 3; + chndl = UCGetLYhndl_byMIME(cp4); + } + else if (0==strncmp(cp4, "cn-gb", 5)) { + StrAllocCopy(cp3, "gb2312"); + cp4 = cp3; + chndl = UCGetLYhndl_byMIME(cp4); + } + } + if (UCCanTranslateFromTo(chndl, current_char_set)) + { + chartrans_ok = YES; + StrAllocCopy(me->node_anchor->charset, cp4); + HTAnchor_setUCInfoStage(me->node_anchor, chndl, + UCT_STAGE_PARSER, UCT_SETBY_STRUCTURED); + } + else if (chndl < 0) {/* got something but we don't + recognize it */ + chndl = UCLYhndl_for_unrec; + if (UCCanTranslateFromTo(chndl, + current_char_set)) + { + chartrans_ok = YES; + HTAnchor_setUCInfoStage(me->node_anchor, + chndl, + UCT_STAGE_PARSER, UCT_SETBY_STRUCTURED); + } + } + FREE(cp3); + if (chartrans_ok) { + LYUCcharset * p_in = + HTAnchor_getUCInfoStage(me->node_anchor, + UCT_STAGE_PARSER); + LYUCcharset * p_out = + HTAnchor_setUCInfoStage(me->node_anchor, + current_char_set, + UCT_STAGE_HTEXT, UCT_SETBY_DEFAULT); + if (!p_out) /* try again */ + p_out = + HTAnchor_getUCInfoStage(me->node_anchor, + UCT_STAGE_HTEXT); + if (0==strcmp(p_in->MIMEname,"x-transparent")) + { + HTPassEightBitRaw = TRUE; + HTAnchor_setUCInfoStage(me->node_anchor, + HTAnchor_getUCLYhndl(me->node_anchor, + UCT_STAGE_HTEXT), + UCT_STAGE_PARSER, UCT_SETBY_DEFAULT); + } + if (0==strcmp(p_out->MIMEname,"x-transparent")) + { + HTPassEightBitRaw = TRUE; + HTAnchor_setUCInfoStage(me->node_anchor, + HTAnchor_getUCLYhndl(me->node_anchor, + UCT_STAGE_PARSER), + UCT_STAGE_HTEXT, UCT_SETBY_DEFAULT); + } + if (!(p_in->enc & UCT_ENC_CJK) && + (p_in->codepoints & UCT_CP_SUBSETOF_LAT1)){ + HTCJK = NOCJK; + } else if (chndl == current_char_set) { + HTPassEightBitRaw = TRUE; + } + html_get_chartrans_info(me); + } else /* Fall through to old behavior */ +#endif /* EXP_CHARTRANS */ if (!strncmp(cp1, "us-ascii", 8) || !strncmp(cp1, "iso-8859-1", 10)) { StrAllocCopy(me->node_anchor->charset, "iso-8859-1"); @@ -1829,7 +1958,7 @@ PUBLIC void LYHandleMETA ARGS4( /* * Check for a Refresh directive. - FM */ - } else if (!strcasecomp((name ? name : http_equiv), "Refresh")) { + } else if (!strcasecomp((http_equiv ? http_equiv : name), "Refresh")) { char *Seconds = NULL; /* @@ -1957,8 +2086,8 @@ PUBLIC void LYHandleMETA ARGS4( * via a server header. - FM */ } else if (!(me->node_anchor->SugFname && *me->node_anchor->SugFname) && - !strcasecomp((name ? - name : http_equiv), "Content-Disposition")) { + !strcasecomp((http_equiv ? + http_equiv : name), "Content-Disposition")) { cp = content; while (*cp != '\0' && strncasecomp(cp, "file;", 5)) cp++; @@ -1983,7 +2112,7 @@ PUBLIC void LYHandleMETA ARGS4( /* * Check for a Set-Cookie directive. - AK */ - } else if (!strcasecomp((name ? name : http_equiv), "Set-Cookie")) { + } else if (!strcasecomp((http_equiv ? http_equiv : name), "Set-Cookie")) { /* * We're using the Request-URI as the second argument, * regardless of whether a Content-Base header or BASE @@ -2183,11 +2312,11 @@ PUBLIC void LYHandleID ARGS2( /* * Create the link if we still have a non-zero-length string. - FM */ - if (ID_A = HTAnchor_findChildAndLink( + if ((ID_A = HTAnchor_findChildAndLink( me->node_anchor, /* Parent */ id, /* Tag */ NULL, /* Addresss */ - (void *)0)) { /* Type */ + (void *)0)) != 0) { /* Type */ HText_beginAnchor(me->text, ID_A); HText_endAnchor(me->text); } diff --git a/src/LYCharUtils.h b/src/LYCharUtils.h index 94c5e1fd..8c71b5c0 100644 --- a/src/LYCharUtils.h +++ b/src/LYCharUtils.h @@ -41,6 +41,7 @@ extern char *LYUppercaseI_OL_String PARAMS(( int seqnum)); extern char *LYLowercaseI_OL_String PARAMS(( int seqnum)); +extern void html_get_chartrans_info PARAMS((HTStructured * me)); extern void LYHandleMETA PARAMS(( HTStructured * me, CONST BOOL* present, diff --git a/src/LYClean.c b/src/LYClean.c index 2d97a386..bfdaa98f 100644 --- a/src/LYClean.c +++ b/src/LYClean.c @@ -70,7 +70,9 @@ PUBLIC void cleanup_sig ARGS1( /* * Ignore further interrupts. - mhc: 11/2/91 */ +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_IGN); +#endif /* NOSIGHUP */ #ifdef VMS /* @@ -86,7 +88,10 @@ PUBLIC void cleanup_sig ARGS1( if (traversal) dump_traversal_history(); +#ifndef NOSIGHUP if (sig != SIGHUP) { +#endif /* NOSIGHUP */ + if (!dump_output_immediately) { /* * cleanup() also calls cleanup_files(). @@ -97,11 +102,15 @@ PUBLIC void cleanup_sig ARGS1( printf("\r\nExiting via interrupt: %d\r\n", sig); fflush(stdout); } +#ifndef NOSIGHUP } else { cleanup_files(); } +#endif /* NOSIGHUP */ - (void) signal(SIGHUP, SIG_DFL); +#ifndef NOSIGHUP + (void) signal(SIGHUP, SIG_IGN); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -140,7 +149,9 @@ PUBLIC void cleanup NOARGS * Cleanup signals - just in case. * Ignore further interrupts. - mhc: 11/2/91 */ - (void) signal (SIGHUP, SIG_IGN); +#ifndef NOSIGHUP + (void) signal(SIGHUP, SIG_IGN); +#endif /* NOSIGHUP */ (void) signal (SIGTERM, SIG_IGN); #ifndef VMS /* use ttclose() from cleanup() for VMS */ diff --git a/src/LYCookie.c b/src/LYCookie.c index 14f2ecfc..17690dc0 100644 --- a/src/LYCookie.c +++ b/src/LYCookie.c @@ -211,7 +211,7 @@ PRIVATE void store_cookie ARGS3( HTList *hl, *next; cookie *c2; time_t now = time(NULL); - int pathlen, pos; + int pos; CONST char *ptr; domain_entry *de = NULL; diff --git a/src/LYCurses.c b/src/LYCurses.c index d4bda6f1..cc3f423d 100644 --- a/src/LYCurses.c +++ b/src/LYCurses.c @@ -39,11 +39,17 @@ extern int _NOSHARE(COLS); PRIVATE int dumbterm PARAMS((char *terminal)); BOOLEAN LYCursesON = FALSE; +#if defined(USE_SLANG) || defined(COLOR_CURSES) +PRIVATE int Current_Attr; +#endif + #ifdef USE_SLANG PUBLIC unsigned int Lynx_Color_Flags = 0; -PRIVATE int Current_Attr; PUBLIC BOOLEAN FullRefresh = FALSE; PUBLIC int curscr = 0; +#ifdef SLANG_MBCS_HACK +PUBLIC int PHYSICAL_SLtt_Screen_Cols = 10;/* will be set by size_change - kw */ +#endif /* SLANG_MBCS_HACK */ PUBLIC void LY_SLrefresh NOARGS { @@ -65,14 +71,14 @@ PUBLIC void VTHome NOARGS } #endif /* VMS */ -PUBLIC void sl_add_attr ARGS1( +PUBLIC void lynx_add_attr ARGS1( int, a) { Current_Attr |= a; SLsmg_set_color(Current_Attr); } -PUBLIC void sl_sub_attr ARGS1( +PUBLIC void lynx_sub_attr ARGS1( int, a) { Current_Attr &= ~a; @@ -122,7 +128,9 @@ PRIVATE void sl_suspend ARGS1( SLang_init_tty(3, 0, 1); #endif /* SLANG_VERSION > 9929 */ signal(SIGTSTP, sl_suspend); +#ifndef _WINDOWS SLtty_set_suspend_state(1); +#endif if (sig == SIGTSTP) SLsmg_resume_smg(); /* @@ -141,6 +149,232 @@ PRIVATE void sl_suspend ARGS1( #endif /* USE_SLANG */ +#ifdef COLOR_CURSES +/* + * This block of code is designed to produce the same color effects using SVr4 + * curses as the slang library's implementation in this module. That maps the + * SGR codes into a 0-7 index into the color table, with special treatment for + * backgrounds. There's a bit of convoluted (but necessary) code handling the + * special case of initialization before 'initscr()' is called. + * 1997/1/19 - T.E.Dickey <dickey@clark.net> + */ +PRIVATE int lynx_uses_color; +PRIVATE int lynx_called_initscr; + +PRIVATE struct { + int fg, bg; + chtype attr; +} lynx_color_cfg[] = { + /*0*/ { COLOR_BLACK, COLOR_WHITE, A_NORMAL}, /* A_NORMAL */ + /*1*/ { COLOR_BLUE, COLOR_WHITE, A_NORMAL}, /* A_BOLD */ + /*2*/ { COLOR_YELLOW, COLOR_BLUE, A_BOLD}, /* A_REVERSE */ + /*3*/ { COLOR_GREEN, COLOR_WHITE, A_NORMAL}, /* A_REVERSE | A_BOLD */ + /*4*/ { COLOR_MAGENTA, COLOR_WHITE, A_NORMAL}, /* A_UNDERLINE */ + /*5*/ { COLOR_BLUE, COLOR_WHITE, A_NORMAL}, /* A_UNDERLINE | A_BOLD */ + /*6*/ { COLOR_RED, COLOR_WHITE, A_NORMAL}, /* A_UNDERLINE | A_REVERSE */ + /*7*/ { COLOR_MAGENTA, COLOR_CYAN, A_NORMAL} /* A_UNDERLINE | A_BOLD | A_REVERSE */ +}; + +/* + * Hold the codes for color-pairs here until 'initscr()' is called. + */ +PRIVATE struct { + int fg; + int bg; +} lynx_color_pairs[25]; + +/* + * Map the SGR attributes (0-7) into ANSI colors, modified with the actual BOLD + * attribute we'll get 16 colors. + */ +PRIVATE void lynx_set_wattr ARGS1(WINDOW *, win) +{ + if (lynx_uses_color) { + int code = 0; + int attr = A_NORMAL; + int offs = 1; + static int have_underline = -1; + static int no_color_video = -1; + + if (have_underline < 0) { +#ifndef DOSPATH + have_underline = tigetstr("smul") != 0; +#else + have_underline = 1; +#endif /* DOSPATH */ + } + + if (no_color_video < 0) { + no_color_video = tigetnum("ncv"); + } + + if (Current_Attr & A_BOLD) + code |= 1; + if (Current_Attr & A_REVERSE) + code |= 2; + if (Current_Attr & A_UNDERLINE) + code |= 4; + attr = lynx_color_cfg[code].attr; + + /* + * FIXME: no_color_video isn't implemented (97/4/14) in ncurses 4.x, + * but may be in SVr4 (which would make this redundant for the latter). + */ + if ((Current_Attr & A_BOLD) && !(no_color_video & 33)) { + attr |= A_BOLD; + offs = 17; + } + + if ((Current_Attr & A_UNDERLINE) && !(no_color_video & 2)) { + attr |= A_UNDERLINE; + offs = 17; + } + + attr |= COLOR_PAIR(code+offs); + + wattrset(win, attr); + } else { + wattrset(win, Current_Attr); + } +} + +PRIVATE void lynx_map_color ARGS1(int, n) +{ + int m; + + lynx_color_pairs[n+1].fg = lynx_color_cfg[n].fg; + lynx_color_pairs[n+1].bg = lynx_color_cfg[n].bg; + + lynx_color_pairs[n+9].fg = lynx_color_cfg[n].fg; + lynx_color_pairs[n+9].bg = lynx_color_cfg[0].bg; + + lynx_color_pairs[n+17].fg = lynx_color_cfg[n].bg; + lynx_color_pairs[n+17].bg = lynx_color_cfg[n].bg; + + if (lynx_called_initscr) { + for (m = 0; m <= 16; m += 8) { + init_pair(n+m+1, + lynx_color_pairs[n+m+1].fg, + lynx_color_pairs[n+m+1].bg); + } + if (n == 0) + bkgd(COLOR_PAIR(9)); + } +} + +PUBLIC int lynx_chg_color ARGS3( + int, color, + int, fg, + int, bg + ) +{ + if (color >= 0 && color < 8 + && fg >= 0 && fg < 16 + && bg >= 0 && bg < 16) { + lynx_color_cfg[color].fg = fg & 7; + lynx_color_cfg[color].bg = bg & 7; + lynx_color_cfg[color].attr = (fg & 8) ? A_BOLD : A_NORMAL; + lynx_map_color(color); + } else { + return -1; + } + return 0; +} + +PUBLIC void lynx_set_color ARGS1(int, a) +{ + if (lynx_uses_color) { + attrset(lynx_color_cfg[a].attr | COLOR_PAIR(a+1)); + } +} + +PUBLIC void lynx_standout ARGS1(int, flag) +{ + if (flag) + lynx_add_attr(A_REVERSE); + else + lynx_sub_attr(A_REVERSE); +} + +PUBLIC void lynx_add_wattr ARGS2(WINDOW *, win, int, a) +{ + Current_Attr |= a; + lynx_set_wattr(win); +} + +PUBLIC void lynx_add_attr ARGS1(int, a) +{ + lynx_add_wattr (stdscr, a); +} + +PUBLIC void lynx_sub_wattr ARGS2(WINDOW *, win, int, a) +{ + Current_Attr &= ~a; + lynx_set_wattr(win); +} + +PUBLIC void lynx_sub_attr ARGS1(int, a) +{ + lynx_sub_wattr (stdscr, a); +} + +PRIVATE void lynx_init_colors NOARGS +{ + lynx_uses_color = FALSE; + + if (has_colors()) { + int n, m; + + lynx_uses_color = TRUE; + start_color(); + + for (n = 0; n < sizeof(lynx_color_cfg)/sizeof(lynx_color_cfg[0]); n++) { + for (m = 0; m <= 16; m += 8) { + init_pair(n+m+1, + lynx_color_pairs[n+m+1].fg, + lynx_color_pairs[n+m+1].bg); + } + if (n == 0) + bkgd(COLOR_PAIR(9)); + } + } +} + +PUBLIC void lynx_setup_colors NOARGS +{ + int n; + for (n = 0; n < 8; n++) + lynx_map_color(n); +} +#endif /* COLOR_CURSES */ + +#if defined (DJGPP) && !defined (SLANG) +/* + * Sorry about making a completely new function, + * but the real one is messy! WB + */ +PUBLIC void start_curses NOARGS +{ + static BOOLEAN first_time = TRUE; + + if(first_time) + { + initscr(); /* start curses */ + first_time = FALSE; + cbreak(); + noecho(); + keypad(stdscr, TRUE); + fflush(stdin); + fflush(stdout); + lynx_init_colors(); + lynx_called_initscr = TRUE; + } else sock_init(); + + LYCursesON = TRUE; + clear(); + +} +#else PUBLIC void start_curses NOARGS { #ifdef USE_SLANG @@ -177,10 +411,14 @@ PUBLIC void start_curses NOARGS #endif /* !VMS */ SLsmg_init_smg(); SLsmg_Display_Eight_Bit = LYlowest_eightbit[current_char_set]; + if (SLsmg_Display_Eight_Bit > 191) + SLsmg_Display_Eight_Bit = 191; /* may print ctrl chars otherwise - kw */ SLsmg_Newline_Moves = -1; SLsmg_Backspace_Moves = 1; #ifndef VMS +#ifndef _WINDOWS SLtty_set_suspend_state(1); +#endif /* _WINDOWS */ #ifdef SIGTSTP signal(SIGTSTP, sl_suspend); #endif /* SIGTSTP */ @@ -191,7 +429,7 @@ PUBLIC void start_curses NOARGS #ifdef VMS /* - * If we are VMS then do initsrc() everytime start_curses() + * If we are VMS then do initscr() everytime start_curses() * is called! */ initscr(); /* start curses */ @@ -206,7 +444,9 @@ PUBLIC void start_curses NOARGS if (initscr() == NULL) { /* start curses */ fprintf(stderr, "Terminal initialisation failed - unknown terminal type?\n"); +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); (void) signal(SIGINT, SIG_DFL); #ifdef SIGTSTP @@ -216,6 +456,10 @@ PUBLIC void start_curses NOARGS exit (-1); } first_time = FALSE; +#if defined(COLOR_CURSES) + lynx_init_colors(); + lynx_called_initscr = TRUE; +#endif /* USE_SLANG */ } #endif /* VMS */ @@ -225,41 +469,67 @@ PUBLIC void start_curses NOARGS crmode(); raw(); #else -#ifdef NO_CBREAK - crmode(); -#else +#if HAVE_CBREAK cbreak(); -#endif /* NO_CBREAK */ +#else + crmode(); +#endif /* HAVE_CBREAK */ signal(SIGINT, cleanup_sig); #endif /* VMS */ noecho(); -#if !defined(VMS) && !defined(NO_KEYPAD) +#if defined(HAVE_KEYPAD) keypad(stdscr,TRUE); -#endif /* !VMS && !NO_KEYPAD */ +#endif /* HAVE_KEYPAD */ + +#ifdef NCURSES_MOUSE_VERSION + /* Inform ncurses that we're interested in knowing when mouse + button 1 is clicked */ + if (LYUseMouse) + mousemask(BUTTON1_CLICKED, NULL); +#endif /* NCURSES_MOUSE_VERSION */ fflush(stdin); fflush(stdout); #endif /* USE_SLANG */ +#ifdef _WINDOWS + clear(); +#endif + LYCursesON = TRUE; } +#endif /* defined (DJGPP) && !defined (SLANG) */ PUBLIC void stop_curses NOARGS { echo(); +#ifdef DJGPP + sock_exit(); +#endif +#if defined (DOSPATH) && !defined (SLANG) + clrscr(); +/* + clear(); + refresh(); +*/ +#else /* * Fixed for better dumb terminal support. * 05-28-94 Lynx 2-3-1 Garrett Arch Blythe */ if(LYCursesON == TRUE) { +#ifdef NCURSES_MOUSE_VERSION + mousemask(0, NULL); +#endif endwin(); /* stop curses */ } fflush(stdout); +#endif /* DJGPP */ LYCursesON = FALSE; @@ -300,8 +570,6 @@ PUBLIC BOOLEAN setup ARGS1( * Some yoyo used these under conditions which require * -dump, so force that mode here. - FM */ - extern int mainloop(); - dump_output_immediately = TRUE; LYcols = 80; keypad_mode = LINKS_ARE_NUMBERED; @@ -389,14 +657,14 @@ PUBLIC BOOLEAN setup ARGS1( start_curses(); -#ifndef NO_TTYTYPE +#if HAVE_TTYTYPE /* * Get terminal type (strip 'dec-' from vms style types). */ if (strncmp((CONST char*)ttytype, "dec-vt", 6) == 0) { (void) setterm(ttytype + 4); } -#endif /* !NO_TTYTYPE */ +#endif /* HAVE_TTYTYPE */ LYlines = LINES; LYcols = COLS; diff --git a/src/LYCurses.h b/src/LYCurses.h index d18cd6e3..ea4d3b82 100644 --- a/src/LYCurses.h +++ b/src/LYCurses.h @@ -31,7 +31,19 @@ #define REDEFINE_CR #endif /* CR */ +#ifdef DOSPATH +# include "curses.h" +#else #ifdef NCURSES +# ifdef HAVE_CONFIG_H +# ifdef NCURSESHEADER +# include <ncurses.h> +# else +# include <curses.h> +# endif +extern void LYsubwindow PARAMS((WINDOW * param)); + +# else /* FIXME: remove this after configure script is complete */ # ifndef NCURSESHEADER # include <ncurses/curses.h> # else @@ -40,26 +52,25 @@ # else # include <ncurses.h> # endif /* __NetBSD__ */ -# endif /* NCURSESINCDIR */ +# endif /* HAVE_CONFIG_H */ +# endif /* NCURSESHEADER */ + #else # ifdef ULTRIX # include <cursesX.h> /* ultrix */ # else -# if defined(SUN) || defined(sun) || defined(SGI) || defined(SCO) || defined(ISC) || defined(PTX2) -# include "curses.h" +# if defined(VMS) && defined(__GNUC__) +# include "LYGCurses.h" # else -# if defined(VMS) && defined(__GNUC__) -# include "LYGCurses.h" +# if defined(sony_news) +# include "/usr/sony/include/jcurses.h" /* sony_news */ # else -# if defined(sony_news) -# include "/usr/sony/include/jcurses.h" /* sony_news */ -# else -# include <curses.h> /* everything else */ -# endif /* sony_news */ -# endif /* VMS && __GNUC__ */ -# endif /* SUN || sun || SGI || SCO || ISC || PTX2 */ +# include <curses.h> /* everything else */ +# endif /* sony_news */ +# endif /* VMS && __GNUC__ */ # endif /* ULTRIX */ #endif /* NCURSES */ +#endif /* DOSPATH */ #endif /* USE_SLANG */ @@ -97,36 +108,35 @@ extern void VMSbox PARAMS((WINDOW *win, int height, int width)); #endif /* !USE_SLANG */ #endif /* VMS */ - -#ifdef USE_SLANG -extern void sl_add_attr PARAMS((int a)); -extern void sl_sub_attr PARAMS((int a)); +#if defined(USE_SLANG) || defined(COLOR_CURSES) +extern void lynx_add_attr PARAMS((int a)); +extern void lynx_sub_attr PARAMS((int a)); extern void lynx_setup_colors NOPARAMS; - -#define start_bold() sl_add_attr(1) -#define start_reverse() sl_add_attr(2) -#define start_underline() sl_add_attr(4) -#define stop_bold() sl_sub_attr(1) -#define stop_reverse() sl_sub_attr(2) -#define stop_underline() sl_sub_attr(4) - extern unsigned int Lynx_Color_Flags; +#endif + +#ifdef USE_SLANG #define SL_LYNX_USE_COLOR 1 #define SL_LYNX_USE_BLINK 2 +#define start_bold() lynx_add_attr(1) +#define start_reverse() lynx_add_attr(2) +#define start_underline() lynx_add_attr(4) +#define stop_bold() lynx_sub_attr(1) +#define stop_reverse() lynx_sub_attr(2) +#define stop_underline() lynx_sub_attr(4) #ifdef FANCY_CURSES #undef FANCY_CURSES #endif /* FANCY_CURSES */ -#ifndef NO_KEYPAD -#define NO_KEYPAD -#endif /* !NO_KEYPAD */ -#ifndef NO_TTYTYPE -#define NO_TTYTYPE -#endif /* !NO_TTYTYPE */ /* Map some curses functions to slang functions. */ #define stdscr NULL +#ifdef SLANG_MBCS_HACK +extern int PHYSICAL_SLtt_Screen_Cols; +#define COLS PHYSICAL_SLtt_Screen_Cols +#else #define COLS SLtt_Screen_Cols +#endif /* SLANG_MBCS_HACK */ #define LINES SLtt_Screen_Rows #define move SLsmg_gotorc #define addstr SLsmg_write_string @@ -182,38 +192,55 @@ extern void VTHome NOPARAMS; #else /* NOT VMS: */ +#ifdef COLOR_CURSES +extern void lynx_add_wattr PARAMS((WINDOW *, int)); +extern void lynx_sub_wattr PARAMS((WINDOW *, int)); +extern void lynx_set_color PARAMS((int)); +extern void lynx_standout PARAMS((int)); +extern int lynx_chg_color PARAMS((int, int, int)); +#undef standout +#define standout() lynx_standout(TRUE) +#undef standend +#define standend() lynx_standout(FALSE) +#else +#define lynx_add_attr attrset +#define lynx_add_wattr wattrset +#define lynx_sub_attr attroff +#define lynx_sub_wattr wattroff +#endif + #ifdef UNDERLINE_LINKS -#define start_bold() attrset(A_UNDERLINE) -#define stop_bold() attroff(A_UNDERLINE) -#define start_underline() attrset(A_BOLD) -#define stop_underline() attroff(A_BOLD) +#define start_bold() lynx_add_attr(A_UNDERLINE) +#define stop_bold() lynx_sub_attr(A_UNDERLINE) +#define start_underline() lynx_add_attr(A_BOLD) +#define stop_underline() lynx_sub_attr(A_BOLD) #else /* not UNDERLINE_LINKS: */ -#define start_bold() attrset(A_BOLD) -#define stop_bold() attroff(A_BOLD) -#define start_underline() attrset(A_UNDERLINE) -#define stop_underline() attroff(A_UNDERLINE) +#define start_bold() lynx_add_attr(A_BOLD) +#define stop_bold() lynx_sub_attr(A_BOLD) +#define start_underline() lynx_add_attr(A_UNDERLINE) +#define stop_underline() lynx_sub_attr(A_UNDERLINE) #endif /* UNDERLINE_LINKS */ #if defined(SNAKE) && defined(HP_TERMINAL) -#define start_reverse() wattrset(stdscr,A_DIM) -#define wstart_reverse(a) wattrset(a,A_DIM) -#define stop_reverse() wattroff(stdscr,A_DIM) -#define wstop_reverse(a) wattroff(a,A_DIM) +#define start_reverse() lynx_add_wattr(stdscr,A_DIM) +#define wstart_reverse(a) lynx_add_wattr(a,A_DIM) +#define stop_reverse() lynx_sub_wattr(stdscr,A_DIM) +#define wstop_reverse(a) lynx_sub_wattr(a,A_DIM) #else -#define start_reverse() attrset(A_REVERSE) -#define wstart_reverse(a) wattrset(a,A_REVERSE) -#define stop_reverse() attroff(A_REVERSE) -#define wstop_reverse(a) wattroff(a,A_REVERSE) +#define start_reverse() lynx_add_attr(A_REVERSE) +#define wstart_reverse(a) lynx_add_wattr(a,A_REVERSE) +#define stop_reverse() lynx_sub_attr(A_REVERSE) +#define wstop_reverse(a) lynx_sub_wattr(a,A_REVERSE) #endif /* SNAKE && HP_TERMINAL */ #endif /* VMS */ #else /* Not FANCY_CURSES: */ #define start_bold() standout() -#define start_underline() 1 /* nothing */ +#define start_underline() /* nothing */ #define start_reverse() standout() #define wstart_reverse(a) wstandout(a) #define stop_bold() standend() -#define stop_underline() 1 /* nothing */ +#define stop_underline() /* nothing */ #define stop_reverse() standend() #define wstop_reverse(a) wstandend(a) diff --git a/src/LYDownload.c b/src/LYDownload.c index 89fcf61a..92dba795 100644 --- a/src/LYDownload.c +++ b/src/LYDownload.c @@ -15,6 +15,9 @@ #ifdef VMS #include "HTVMSUtils.h" #endif /* VMS */ +#ifdef DOSPATH +#include "HTDOS.h" +#endif #include "LYexit.h" #include "LYLeaks.h" @@ -197,11 +200,15 @@ check_recall: strcpy(command, buffer); if ((len=strlen(command)) > 0 && command[len-1] == '/') command[len-1] = '\0'; +#ifdef DOSPATH + strcat(command, HTDOS_wwwName((char *)Home_Dir())); +#else #ifdef VMS strcat(command, HTVMS_wwwName((char *)Home_Dir())); #else strcat(command, Home_Dir()); #endif /* VMS */ +#endif /* DOSPATH */ strcat(command, cp); strcpy(buffer, command); } @@ -224,7 +231,11 @@ check_recall: cp = NULL; if (cp) { sprintf(command,"%s/%s", cp, buffer); +#ifdef DOSPATH + strcpy(buffer, HTDOS_name(command)); +#else strcpy(buffer, command); +#endif } #endif /* VMS */ @@ -532,7 +543,7 @@ PUBLIC int LYdownload_options ARGS2(char **,newfile, char *,data_file) } /* make the file a URL now */ -#ifdef VMS +#if defined (VMS) || defined (DOSPATH) sprintf(download_filename,"file://localhost/%s",tempfile); #else sprintf(download_filename,"file://localhost%s",tempfile); diff --git a/src/LYEdit.c b/src/LYEdit.c index 2f01982d..98940c4e 100644 --- a/src/LYEdit.c +++ b/src/LYEdit.c @@ -14,6 +14,9 @@ #include <unixio.h> #include "HTVMSUtils.h" #endif /* VMS */ +#ifdef DOSPATH +#include "HTDOS.h" +#endif #include "LYLeaks.h" @@ -54,7 +57,7 @@ PUBLIC int edit_current_file ARGS3(char *,newfile, int,cur, int,lineno) * * On VMS, only try the path. */ -#ifndef VMS +#if !defined (VMS) && !defined (DOSPATH) colon = strchr(newfile,':'); StrAllocCopy(filename, colon+1); HTUnEscape(filename); @@ -63,31 +66,40 @@ PUBLIC int edit_current_file ARGS3(char *,newfile, int,cur, int,lineno) #endif /* !VMS */ filename = HTParse(newfile,"",PARSE_PATH+PARSE_PUNCTUATION); HTUnEscape(filename); +#ifdef DOSPATH + if (strlen(filename)>1) filename++; +#endif +#ifdef DOSPATH + if ((fp = fopen(HTDOS_name(filename),"r")) == NULL) { +#else #ifdef VMS if ((fp = fopen(HTVMS_name("",filename),"r")) == NULL) { #else if ((fp = fopen(filename,"r")) == NULL) { - #endif /* VMS */ +#endif /* DOSPATH */ HTAlert(COULD_NOT_ACCESS_FILE); FREE(filename); goto failure; } -#ifndef VMS +#if !defined (VMS) && !defined (DOSPATH) } #endif /* !VMS */ fclose(fp); - #if defined(VMS) || defined(CANT_EDIT_UNWRITABLE_FILES) /* * Don't allow editing if user lacks append access. */ +#ifdef DOSPATH + if ((fp = fopen(HTDOS_name("",filename),"a")) == NULL) { +#else #ifdef VMS if ((fp = fopen(HTVMS_name("",filename),"a")) == NULL) { #else if ((fp = fopen(filename,"a")) == NULL) { #endif /* VMS */ +#endif /* DOSPATH */ _statusline(NOAUTH_TO_EDIT_FILE); sleep(MessageSecs); goto failure; @@ -102,9 +114,18 @@ PUBLIC int edit_current_file ARGS3(char *,newfile, int,cur, int,lineno) strstr(editor, "pico") || strstr(editor,"jove") || strstr(editor, "jed")) sprintf(command,"%s +%d \"%s\"",editor, lineno+links[cur].ly, +#ifdef DOSPATH + HTDOS_name(filename)); +#else filename); +#endif /* DOSPATH */ else - sprintf(command,"%s \"%s\"",editor, filename); + sprintf(command,"%s \"%s\"",editor, +#ifdef DOSPATH + HTDOS_name(filename)); +#else + filename); +#endif /* DOSPATH */ #endif /* VMS */ if (TRACE) { fprintf(stderr, "LYEdit: %s\n",command); diff --git a/src/LYForms.c b/src/LYForms.c index 8474dc12..6385fc02 100644 --- a/src/LYForms.c +++ b/src/LYForms.c @@ -14,6 +14,11 @@ #include "LYLeaks.h" +#ifdef ALT_CHAR_SET +#define BOXVERT 0 /* use alt char set for popup window vertical borders */ +#define BOXHORI 0 /* use alt char set for popup window vertical borders */ +#endif + #ifndef BOXVERT #define BOXVERT '*' /* character for popup window vertical borders */ #endif @@ -353,6 +358,27 @@ breakfor: } +/* Use this rather than the 'wprintw()' function to write a blank-padded + * string to the given window, since someone's asserted that printw doesn't + * handle 8-bit characters unlike addstr (though more info would be useful). + * + * We're blank-filling so that with SVr4 curses, it'll show the background + * color to a uniform width in the popup-menu. + */ +#ifndef USE_SLANG +PRIVATE void paddstr ARGS3( + WINDOW *, the_window, + int, width, + char *, the_string) +{ + width -= strlen(the_string); + waddstr(the_window, the_string); + while (width-- > 0) + waddstr(the_window, " "); +} +#endif + + PRIVATE int popup_options ARGS7( int, cur_selection, OptionType *, list, @@ -504,6 +530,13 @@ PRIVATE int popup_options ARGS7( return(orig_selection); } scrollok(form_window, TRUE); +#ifdef NCURSES +#ifdef wgetbkgd +#define getbkgd(w) wgetbkgd(w) /* workaround pre-1.9.9g bug */ +#endif + LYsubwindow(form_window); + wbkgd(form_window, getbkgd(stdscr)); +#endif #else SLsmg_fill_region (top, lx - 1, bottom - top, width + 4, ' '); #endif /* !USE_SLANG */ @@ -533,8 +566,7 @@ redraw: if (i >= window_offset && i - window_offset < length) { #ifndef USE_SLANG wmove(form_window,(i+1)-window_offset,2); - wclrtoeol(form_window); - waddstr(form_window,opt_ptr->name); + paddstr(form_window, width, opt_ptr->name); #else SLsmg_gotorc (top + (i+1)-window_offset, lx - 1 + 2); SLsmg_write_nstring (opt_ptr->name, width); @@ -564,7 +596,7 @@ redraw: if (opt_ptr != NULL) { #ifndef USE_SLANG wmove(form_window,(i+1)-window_offset,2); - waddstr(form_window,opt_ptr->name); + paddstr(form_window, width, opt_ptr->name); #else SLsmg_gotorc (top + (i+1)-window_offset, lx - 1 + 2); SLsmg_write_nstring (opt_ptr->name, width); @@ -579,7 +611,7 @@ redraw: #ifndef USE_SLANG wstart_reverse(form_window); wmove(form_window,(i+1)-window_offset,2); - waddstr(form_window,opt_ptr->name); + paddstr(form_window, width, opt_ptr->name); wstop_reverse(form_window); wrefresh(form_window); #else @@ -1042,6 +1074,9 @@ restore_popup_statusline: } #ifndef USE_SLANG delwin(form_window); +#ifdef NCURSES + LYsubwindow(0); +#endif #endif /* !USE_SLANG */ refresh(); diff --git a/src/LYGetFile.c b/src/LYGetFile.c index 59c9f0ab..dd0b5376 100644 --- a/src/LYGetFile.c +++ b/src/LYGetFile.c @@ -26,6 +26,9 @@ #ifdef VMS #include "HTVMSUtils.h" #endif /* VMS */ +#ifdef DOSPATH +#include "HTDOS.h" +#endif #ifdef DIRED_SUPPORT #include "LYLocal.h" #endif /* DIRED_SUPPORT */ @@ -358,11 +361,15 @@ Try_Redirected_URL: if ((cp = strchr(doc->address, '~'))) { strncpy(addressbuf, doc->address, cp-doc->address); addressbuf[cp - doc->address] = '\0'; +#ifdef DOSPATH + p = HTDOS_wwwName((char *)Home_Dir()); +#else #ifdef VMS p = HTVMS_wwwName((char *)Home_Dir()); #else p = (char *)Home_Dir(); #endif /* VMS */ +#endif /* DOSPATH */ strcat(addressbuf, p); strcat(addressbuf, cp+1); p = addressbuf; @@ -603,11 +610,15 @@ Try_Redirected_URL: *cp = '\0'; cp += 2; StrAllocCopy(temp, doc->address); +#ifdef DOSPATH + StrAllocCat(temp, HTDOS_wwwName((char *)Home_Dir())); +#else #ifdef VMS StrAllocCat(temp, HTVMS_wwwName((char *)Home_Dir())); #else StrAllocCat(temp, Home_Dir()); #endif /* VMS */ +#endif /* DOSPATH */ if (*cp) StrAllocCat(temp, cp); StrAllocCopy(doc->address, temp); diff --git a/src/LYGetFile.h b/src/LYGetFile.h index 0a318674..2e4faede 100644 --- a/src/LYGetFile.h +++ b/src/LYGetFile.h @@ -9,7 +9,7 @@ extern BOOLEAN getfile PARAMS((document *doc)); extern int follow_link_number PARAMS((int c, int cur)); extern void add_trusted PARAMS((char *str, int type)); -extern BOOLEAN exec_ok PARAMS((CONST char *source, CONST char *link, int type)); +extern BOOLEAN exec_ok PARAMS((CONST char *source, CONST char *linkpath, int type)); /* values for follow_link_number.c */ #define DO_FORMS_STUFF 1 diff --git a/src/LYGlobalDefs.h b/src/LYGlobalDefs.h index afd6f53a..5a46b095 100644 --- a/src/LYGlobalDefs.h +++ b/src/LYGlobalDefs.h @@ -123,6 +123,7 @@ extern char *pref_charset; /* Lynx's preferred character set - MM */ extern BOOLEAN LYNewsPosting; /* News posting supported if TRUE */ extern char *LynxSigFile; /* Signature file, in or off home */ extern char *system_mail; +extern char *system_mail_flags; extern char *lynx_temp_space; extern char *lynx_save_space; extern BOOLEAN LYforce_HTML_mode; @@ -253,10 +254,16 @@ extern BOOLEAN LYNoRefererHeader; /* Never send Referer header? */ extern BOOLEAN LYNoRefererForThis; /* No Referer header for this URL? */ extern BOOLEAN LYNoFromHeader; /* Never send From header? */ extern BOOLEAN LYListNewsNumbers; +extern BOOLEAN LYUseMouse; extern BOOLEAN LYListNewsDates; extern BOOLEAN LYRawMode; extern BOOLEAN LYDefaultRawMode; extern BOOLEAN LYUseDefaultRawMode; +#ifdef EXP_CHARTRANS +extern char *UCAssume_MIMEcharset; +extern char *UCAssume_localMIMEcharset; +extern char *UCAssume_unrecMIMEcharset; +#endif /* EXP_CHARTRANS */ extern BOOLEAN LYisConfiguredForX; extern char *URLDomainPrefixes; extern char *URLDomainSuffixes; @@ -270,4 +277,14 @@ extern int LYStatusLine; /* Line for statusline() or -1 */ extern BOOLEAN LYCollapseBRs; /* Collapse serial BRs? */ extern BOOLEAN LYSetCookies; /* Process Set-Cookie headers? */ extern char *XLoadImageCommand; /* Default image viewer for X */ + +#define BOOKMARK_TITLE "Bookmark file" +#define MOSAIC_BOOKMARK_TITLE "Converted Mosaic Hotlist" +#define MBM_V_MAXFILES 25 /* Max number of sub-bookmark files */ +/* + * Arrays that holds the names of sub-bookmark files + * and their descriptions. + */ +extern char *MBM_A_subbookmark[MBM_V_MAXFILES+1]; +extern char *MBM_A_subdescript[MBM_V_MAXFILES+1]; #endif /* LYGLOBALDEFS_H */ diff --git a/src/LYHistory.c b/src/LYHistory.c index 54969ef7..9b6daabc 100644 --- a/src/LYHistory.c +++ b/src/LYHistory.c @@ -311,7 +311,7 @@ PUBLIC int showhistory ARGS1( /* * Make the file a URL now. */ -#ifdef VMS +#if defined (VMS) || defined (DOSPATH) sprintf(hist_filename,"file://localhost/%s", tempfile); #else sprintf(hist_filename,"file://localhost%s", tempfile); @@ -366,7 +366,7 @@ PUBLIC int showhistory ARGS1( PUBLIC BOOLEAN historytarget ARGS1( document *, newdoc) { - int number, c; + int number; DocAddress WWWDoc; HTParentAnchor *tmpanchor; HText *text; @@ -453,7 +453,7 @@ PUBLIC int LYShowVisitedLinks ARGS1( /* * Make the file a URL now. */ -#ifdef VMS +#if defined (VMS) || defined (DOSPATH) sprintf(vl_filename,"file://localhost/%s", tempfile); #else sprintf(vl_filename,"file://localhost%s", tempfile); diff --git a/src/LYJump.c b/src/LYJump.c index f7f8d440..e5e67871 100644 --- a/src/LYJump.c +++ b/src/LYJump.c @@ -55,13 +55,13 @@ PUBLIC void LYJumpTable_free NOARGS * Utility for listing shortcuts, making any repeated * shortcut the most current in the list. - FM */ -PUBLIC void LYAddJumpShortcut ARGS2(HTList *,history, char *,shortcut) +PUBLIC void LYAddJumpShortcut ARGS2(HTList *, historyp, char *,shortcut) { char *new; char *old; - HTList *cur = history; + HTList *cur = historyp; - if (!history || !(shortcut && *shortcut)) + if (! historyp || !(shortcut && *shortcut)) return; if ((new = (char *)calloc(1, (strlen(shortcut) + 1))) == NULL) @@ -70,12 +70,12 @@ PUBLIC void LYAddJumpShortcut ARGS2(HTList *,history, char *,shortcut) while (NULL != (old = (char *)HTList_nextObject(cur))) { if (!strcmp(old, new)) { - HTList_removeObject(history, old); + HTList_removeObject(historyp, old); FREE(old); break; } } - HTList_addObject(history, new); + HTList_addObject(historyp, new); return; } diff --git a/src/LYJump.h b/src/LYJump.h index 2329471b..5da8f885 100644 --- a/src/LYJump.h +++ b/src/LYJump.h @@ -21,7 +21,7 @@ struct JumpTable { extern struct JumpTable *JThead; extern void LYJumpTable_free NOPARAMS; -extern void LYAddJumpShortcut PARAMS((HTList *history, char *shortcut)); +extern void LYAddJumpShortcut PARAMS((HTList *the_history, char *shortcut)); extern BOOL LYJumpInit PARAMS((char *config)); extern char *LYJump PARAMS((int key)); diff --git a/src/LYKeymap.h b/src/LYKeymap.h index a06b7942..c5b42c19 100644 --- a/src/LYKeymap.h +++ b/src/LYKeymap.h @@ -12,7 +12,7 @@ extern void set_numbers_as_arrows NOPARAMS; extern void reset_numbers_as_arrows NOPARAMS; extern void print_keymap PARAMS((char **newfile)); extern char *key_for_func PARAMS((int func)); -extern BOOLEAN LYisNonAlnumKeyname PARAMS((int ch, int keyname)); +extern BOOLEAN LYisNonAlnumKeyname PARAMS((int ch, int Keyname)); extern char keymap[]; /* main keymap matrix */ diff --git a/src/LYList.c b/src/LYList.c index bff4f967..59f6d497 100644 --- a/src/LYList.c +++ b/src/LYList.c @@ -69,7 +69,7 @@ PUBLIC int showlist ARGS2(char **, newfile, BOOLEAN, titles) /* * Make the file a URL now. */ -#ifdef VMS +#if defined (VMS) || defined (DOSPATH) sprintf(list_filename, "file://localhost/%s", tempfile); #else sprintf(list_filename, "file://localhost%s", tempfile); diff --git a/src/LYLocal.c b/src/LYLocal.c index 6ef0ad65..3dd45b97 100644 --- a/src/LYLocal.c +++ b/src/LYLocal.c @@ -58,6 +58,7 @@ struct dired_menu { # define DE_TAG 1 # define DE_DIR 2 # define DE_FILE 3 +#define DE_SYMLINK 4 char *sfx; char *link; char *rest; @@ -76,21 +77,37 @@ struct dired_menu { { 0, "", "New Directory", "(in current directory)", "LYNXDIRED://NEW_FOLDER%d", NULL }, -{ 0, "", "Install", +{ DE_FILE, "", "Install", +"(of current selection)", "LYNXDIRED://INSTALL_SRC%p", NULL }, +{ DE_DIR, "", "Install", "(of current selection)", "LYNXDIRED://INSTALL_SRC%p", NULL }, -{ 0, "", "Modify Name", +{ DE_FILE, "", "Modify File Name", +"(of current selection)", "LYNXDIRED://MODIFY_NAME%p", NULL }, +{ DE_DIR, "", "Modify Directory Name", "(of current selection)", "LYNXDIRED://MODIFY_NAME%p", NULL }, +{ DE_SYMLINK, "", "Modify Name", +"(of selected symbolic link)", "LYNXDIRED://MODIFY_NAME%p", NULL }, #ifdef OK_PERMIT -{ 0, "", "Permit Name", +{ DE_FILE, "", "Modify File Permissions", +"(of current selection)", "LYNXDIRED://PERMIT_SRC%p", NULL }, +{ DE_DIR, "", "Modify Directory Permissions", "(of current selection)", "LYNXDIRED://PERMIT_SRC%p", NULL }, #endif /* OK_PERMIT */ -{ 0, "", "Change Location", -"(of current selection)", "LYNXDIRED://MODIFY_LOCATION%p", NULL }, +{ DE_FILE, "", "Change Location", +"(of selected file)" , "LYNXDIRED://MODIFY_LOCATION%p", NULL }, +{ DE_DIR, "", "Change Location", +"(of selected directory)", "LYNXDIRED://MODIFY_LOCATION%p", NULL }, +{ DE_SYMLINK, "", "Change Location", +"(of selected symbolic link)", "LYNXDIRED://MODIFY_LOCATION%p", NULL }, -{ 0, "", "Remove", +{ DE_FILE, "", "Remove File", + "(current selection)", "LYNXDIRED://REMOVE_SINGLE%p", NULL }, +{ DE_DIR, "", "Remove Directory", + "(current selection)", "LYNXDIRED://REMOVE_SINGLE%p", NULL }, +{ DE_SYMLINK, "", "Remove Symbolic Link", "(current selection)", "LYNXDIRED://REMOVE_SINGLE%p", NULL }, #if defined(OK_UUDECODE) && !defined(ARCHIVE_ONLY) @@ -1508,16 +1525,19 @@ PUBLIC int dired_options ARGS2( { static char tempfile[128]; static BOOLEAN first = TRUE; - char dired_filename[256]; char path[512], dir[512]; /* much too large */ char tmpbuf[LINESIZE]; lynx_html_item_type *nxt; struct stat dir_info; FILE *fp0; - char *cp,*tp = NULL; - /* char *escaped; */ - char * dir_url = NULL; - char * path_url = NULL; + char *cp = NULL; + char * dir_url = NULL; /* will hold URL-escaped path of + directory from where DIRED_MENU was + invoked (NOT its full URL) */ + char * path_url = NULL; /* will hold URL-escaped path of file + (or directory) which was selected + when DIRED_MENU was invoked (NOT + its full URL) */ BOOLEAN nothing_tagged; int count; struct dired_menu *mp; @@ -1536,9 +1556,8 @@ PUBLIC int dired_options ARGS2( } /* make the tempfile a URL */ - strcpy(dired_filename, "file://localhost"); - strcat(dired_filename, tempfile); - StrAllocCopy(*newfile, dired_filename); + StrAllocCopy(*newfile, "file://localhost"); + StrAllocCat(*newfile, tempfile); cp = doc->address; if(!strncmp(cp,"file://localhost",16)) @@ -1576,19 +1595,11 @@ PUBLIC int dired_options ARGS2( return 0; } -#ifdef NOTDEFINED - if ((cp = strrchr(path,'.')) != NULL && strlen(path) > strlen(cp)) { - *cp = '\0'; - tp = strrchr(path,'.'); - *cp = '.'; - } -#endif /* NOTDEFINED */ } else { path[0] = '\0'; StrAllocCopy(path_url, path); } - /*escaped = (char *) HTEscape(path,(unsigned char) 4); path_url instead- kw*/ nothing_tagged = (HTList_isEmpty(tagged)); fprintf(fp0,"<head>\n<title>%s</title></head>\n<body>\n",DIRED_MENU_TITLE); @@ -1648,11 +1659,18 @@ PUBLIC int dired_options ARGS2( continue; if (mp->cond == DE_TAG && nothing_tagged) continue; - if (mp->cond == DE_DIR && (dir_info.st_mode & S_IFMT) != S_IFDIR) + if (mp->cond == DE_DIR && + (!*path || (dir_info.st_mode & S_IFMT) != S_IFDIR)) continue; - if (mp->cond == DE_FILE && (dir_info.st_mode & S_IFMT) != S_IFREG) + if (mp->cond == DE_FILE && + (!*path || (dir_info.st_mode & S_IFMT) != S_IFREG)) continue; - if (strcmp(mp->sfx, &path[strlen(path)-strlen(mp->sfx)]) != 0) + if (mp->cond == DE_SYMLINK && + (!*path || (dir_info.st_mode & S_IFMT) != S_IFLNK)) + continue; + if (*mp->sfx && + (strlen(path) < strlen(mp->sfx) || + strcmp(mp->sfx, &path[strlen(path)-strlen(mp->sfx)]) != 0)) continue; fprintf(fp0, "<a href=\"%s", render_item(mp->href, path_url, dir_url, buf,2048, YES)); @@ -1673,7 +1691,6 @@ PUBLIC int dired_options ARGS2( fprintf(fp0,"</body>\n"); fclose(fp0); - /* FREE(escaped); not used any more - kw*/ FREE(dir_url); FREE(path_url); @@ -1787,9 +1804,10 @@ PUBLIC BOOLEAN local_install ARGS3( char tmpbuf[512]; static char savepath[512]; /* this will be the link that is to be installed */ struct stat dir_info; - char *args[5]; + char *args[6]; HTList *tag; int count = 0; + int n = 0, src; /* indices into 'args[]' */ /* Determine the status of the selected item. */ @@ -1838,23 +1856,27 @@ PUBLIC BOOLEAN local_install ARGS3( } statusline("Just a moment, ..."); - args[0] = "install"; - args[2] = destpath; - args[3] = (char *) 0; + args[n++] = "install"; +#ifdef INSTALL_ARGS + args[n++] = INSTALL_ARGS; +#endif + src = n++; + args[n++] = destpath; + args[n] = (char *) 0; sprintf(tmpbuf, "install %s", destpath); tag = tagged; if (HTList_isEmpty(tagged)) { - args[1] = savepath; + args[src] = savepath; if (my_spawn(INSTALL_PATH, args, tmpbuf) <= 0) return (-1); count++; } else { char * name; while ((name = (char *)HTList_nextObject(tag))) { - args[1] = name; - if (strncmp("file://localhost", args[1], 16) == 0) - args[1] = name + 16; + args[src] = name; + if (strncmp("file://localhost", args[src], 16) == 0) + args[src] = name + 16; if (my_spawn(INSTALL_PATH, args, tmpbuf) <= 0) return ((count == 0) ? -1 : count); @@ -1898,10 +1920,12 @@ PUBLIC void add_menu_item ARGS1( *cp++ = '\0'; if (strcasecomp(str, "tag") == 0) new->cond = DE_TAG; - if (strcasecomp(str, "dir") == 0) + else if (strcasecomp(str, "dir") == 0) new->cond = DE_DIR; - if (strcasecomp(str, "file") == 0) + else if (strcasecomp(str, "file") == 0) new->cond = DE_FILE; + else if (strcasecomp(str, "link") == 0) + new->cond = DE_SYMLINK; /* conditional on matching suffix */ str = cp; diff --git a/src/LYMail.c b/src/LYMail.c index 639f0f46..b943efb2 100644 --- a/src/LYMail.c +++ b/src/LYMail.c @@ -10,6 +10,7 @@ #include "LYSystem.h" #include "LYGlobalDefs.h" #include "HTParse.h" +#include "LYMail.h" #include "LYLeaks.h" @@ -36,8 +37,8 @@ PUBLIC void mailform ARGS4( char self[80]; char cmd[512]; int len, i, ch; -#ifdef VMS - char tmpfile[256]; +#if defined(VMS) || defined(DOSPATH) + char my_tempfile[256]; char *address_ptr1, *address_ptr2; BOOLEAN first = TRUE; #endif /* VMS */ @@ -176,9 +177,9 @@ PUBLIC void mailform ARGS4( return; } -#ifdef VMS - sprintf(tmpfile, "%s%s", lynx_temp_space, "temp_mail.txt"); - if ((fd = fopen(tmpfile,"w")) == NULL) { +#if defined(VMS) || defined(DOSPATH) + sprintf(my_tempfile, "%s%s", lynx_temp_space, "temp_mail.txt"); + if ((fd = fopen(my_tempfile,"w")) == NULL) { HTAlert(FORM_MAILTO_FAILED); FREE(address); return; @@ -192,6 +193,7 @@ PUBLIC void mailform ARGS4( StrAllocCat(address, cp); } } +#ifdef VMS if (mailto_type && !strncasecomp(mailto_type, "multipart/form-data", 19)) { /* @@ -202,11 +204,19 @@ PUBLIC void mailform ARGS4( fprintf(fd, "X-Content-Type: %s\n\n", mailto_type); } #else -#ifdef MMDF - sprintf(cmd, "%s -mlruxto,cc\\*",system_mail); + if (mailto_type && *mailto_type) { + fprintf(fd, "Mime-Version: 1.0\n"); + fprintf(fd, "Content-Type: %s\n", mailto_type); + } + fprintf(fd,"To: %s\n", address); + if (personal_mail_address && *personal_mail_address) + fprintf(fd,"From: %s\n", personal_mail_address); + remove_tildes(self); + fprintf(fd,"Subject: %.70s\n\n", subject); +#endif + #else - sprintf(cmd, "%s -t -oi", system_mail); -#endif /* MMDF */ + sprintf(cmd, "%s %s", system_mail, system_mail_flags); if ((fd = popen(cmd, "w")) == NULL) { HTAlert(FORM_MAILTO_FAILED); @@ -264,12 +274,13 @@ PUBLIC void mailform ARGS4( pclose(fd); sleep(MessageSecs); #endif /* UNIX */ -#ifdef VMS +#if defined(VMS) || defined(DOSPATH) fclose(fd); +#ifdef VMS sprintf(cmd, "%s %s/subject=\"%.70s\" %s ", system_mail, (strncasecomp(system_mail, "MAIL", 4) ? "" : "/noself"), - subject, tmpfile); + subject, my_tempfile); address_ptr1 = address; do { @@ -288,13 +299,15 @@ PUBLIC void mailform ARGS4( address_ptr1 = address_ptr2; } while (address_ptr1 != NULL); - +#else + sprintf(cmd, "%s -t \"%s\" -F %s", system_mail, address, my_tempfile); +#endif stop_curses(); printf("Sending form content:\n\n$ %s\n\nPlease wait...", cmd); system(cmd); sleep(MessageSecs); start_curses(); - remove(tmpfile); + remove(my_tempfile); #endif /* VMS */ FREE(address); @@ -311,9 +324,8 @@ PUBLIC void mailmsg ARGS4(int,cur, char *,owner_address, FILE *fd, *fp; char *address = NULL; char cmd[512], *cp, *cp0, *cp1; - int i; -#ifdef VMS - char tmpfile[256]; +#if defined(VMS) || defined(DOSPATH) + char my_tempfile[256]; char *address_ptr1, *address_ptr2; BOOLEAN first = TRUE; #endif /* VMS */ @@ -348,11 +360,7 @@ PUBLIC void mailmsg ARGS4(int,cur, char *,owner_address, } #ifdef UNIX -#ifdef MMDF - sprintf(cmd, "%s -mlruxto,cc\\*", system_mail); -#else - sprintf(cmd, "%s -t -oi", system_mail); -#endif /* MMDF */ + sprintf(cmd, "%s %s", system_mail, system_mail_flags); if ((fd = popen(cmd, "w")) == NULL) { FREE(address); @@ -364,9 +372,9 @@ PUBLIC void mailmsg ARGS4(int,cur, char *,owner_address, fprintf(fd,"X-URL: %s\n", filename); fprintf(fd,"X-Mailer: Lynx, Version %s\n\n", LYNX_VERSION); #endif /* UNIX */ -#ifdef VMS - sprintf(tmpfile, "%s%s", lynx_temp_space, "temp_mail.txt"); - if ((fd = fopen(tmpfile,"w")) == NULL) { +#if defined(VMS) || defined(DOSPATH) + sprintf(my_tempfile, "%s%s", lynx_temp_space, "temp_mail.txt"); + if ((fd = fopen(my_tempfile,"w")) == NULL) { FREE(address); return; } @@ -392,10 +400,11 @@ PUBLIC void mailmsg ARGS4(int,cur, char *,owner_address, #ifdef UNIX pclose(fd); #endif /* UNIX */ -#ifdef VMS +#if defined(VMS) || defined(DOSPATH) fclose(fd); +#ifdef VMS sprintf(cmd, "%s /subject=\"Lynx Error in %s\" %s ", - system_mail, filename, tmpfile); + system_mail, filename, my_tempfile); address_ptr1 = address; do { @@ -415,8 +424,11 @@ PUBLIC void mailmsg ARGS4(int,cur, char *,owner_address, address_ptr1 = address_ptr2; } while (address_ptr1 != NULL); +#else + sprintf(cmd, "%s -t \"%s\" -F %s", system_mail, address, my_tempfile); +#endif system(cmd); - remove(tmpfile); + remove(my_tempfile); #endif /* VMS */ if (traversal) { @@ -425,7 +437,9 @@ PUBLIC void mailmsg ARGS4(int,cur, char *,owner_address, if ((ofp = fopen(TRAVERSE_ERRORS,"a+")) == NULL) { if ((ofp = fopen(TRAVERSE_ERRORS,"w")) == NULL) { perror(NOOPEN_TRAV_ERR_FILE); +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -465,7 +479,10 @@ PUBLIC void reply_by_mail ARGS3( char *temp = NULL; int i, len; int c = 0; /* user input */ - char tmpfile[256], cmd[512]; + char my_tempfile[256], cmd[512]; +#ifdef DOSPATH + char tmpfile2[256]; +#endif static char *personal_name = NULL; char subject[80]; #ifdef VMS @@ -486,16 +503,16 @@ PUBLIC void reply_by_mail ARGS3( return; } - tempname(tmpfile,NEW_FILE); - if (((cp = strrchr(tmpfile, '.')) != NULL) && + tempname(my_tempfile,NEW_FILE); + if (((cp = strrchr(my_tempfile, '.')) != NULL) && #ifdef VMS NULL == strchr(cp, ']') && #endif /* VMS */ NULL == strchr(cp, '/')) { *cp = '\0'; - strcat(tmpfile, ".txt"); + strcat(my_tempfile, ".txt"); } - if ((fd = fopen(tmpfile,"w")) == NULL) { + if ((fd = fopen(my_tempfile,"w")) == NULL) { HTAlert(MAILTO_URL_TEMPOPEN_FAILED); return; } @@ -663,7 +680,7 @@ PUBLIC void reply_by_mail ARGS3( FREE(address); FREE(body); fclose(fd); /* Close the tmpfile. */ - remove(tmpfile); /* Delete the tmpfile. */ + remove(my_tempfile); /* Delete the tmpfile. */ HTAlert(NO_ADDRESS_IN_MAILTO_URL); return; } @@ -692,8 +709,10 @@ PUBLIC void reply_by_mail ARGS3( /* * Put the To: line in the header. */ +#ifndef DOSPATH sprintf(buf,"To: %s\n", address); StrAllocCopy(header, buf); +#endif /* * Put the X-URL and X-Mailer lines in the header. */ @@ -868,7 +887,7 @@ PUBLIC void reply_by_mail ARGS3( } addstr("\n"); remove_tildes(user_input); -#ifdef VMS +#if defined (VMS) || defined (DOSPATH) if (*user_input) { cp = user_input; while (*cp == ' ' || *cp == ',') @@ -878,6 +897,13 @@ PUBLIC void reply_by_mail ARGS3( StrAllocCat(address, cp); } } +#ifdef DOSPATH + if (*address) { + sprintf(buf,"To: %s\n",address); + StrAllocCat(header, buf); + } +#endif + #else if (*user_input) { sprintf(buf,"Cc: %s\n",user_input); @@ -930,7 +956,7 @@ PUBLIC void reply_by_mail ARGS3( if (strstr(editor, "pico")) { editor_arg = " -t"; /* No prompt for filename to use */ } - sprintf(user_input,"%s%s %s",editor,editor_arg,tmpfile); + sprintf(user_input,"%s%s %s",editor,editor_arg,my_tempfile); _statusline(SPAWNING_EDITOR_FOR_MAIL); stop_curses(); if (system(user_input)) { @@ -1050,7 +1076,7 @@ PUBLIC void reply_by_mail ARGS3( !term_letter && c != 7 && c != 3) c = LYgetch(); if (TOUPPER(c) == 'Y') { - if ((fd = fopen(tmpfile, "a")) != NULL) { + if ((fd = fopen(my_tempfile, "a")) != NULL) { fputs("-- \n", fd); while (fgets(user_input, sizeof(user_input), fp) != NULL) { fputs(user_input, fd); @@ -1072,7 +1098,7 @@ PUBLIC void reply_by_mail ARGS3( sprintf(cmd, "%s %s/subject=\"%s\" %s ", system_mail, (strncasecomp(system_mail, "MAIL", 4) ? "" : "/noself"), - subject, tmpfile); + subject, my_tempfile); /* * Now add all the people in the address field. @@ -1111,11 +1137,19 @@ PUBLIC void reply_by_mail ARGS3( * Send the tmpfile into sendmail. */ _statusline(SENDING_YOUR_MSG); -#ifdef MMDF - sprintf(cmd, "%s -mlruxto,cc\\*",system_mail); + sprintf(cmd, "%s %s", system_mail, system_mail_flags); +#ifdef DOSPATH + tempname(tmpfile2,NEW_FILE); + if (((cp = strrchr(tmpfile2, '.')) != NULL) && + NULL == strchr(cp, '/')) { + *cp = '\0'; + strcat(tmpfile2, ".txt"); + } + if ((fp = fopen(tmpfile2,"w")) == NULL) { + HTAlert(MAILTO_URL_TEMPOPEN_FAILED); + return; + } #else - sprintf(cmd,"%s -t -oi", system_mail); -#endif /* MMDF */ signal(SIGINT, SIG_IGN); fp = popen(cmd, "w"); if (fp == NULL) { @@ -1123,7 +1157,8 @@ PUBLIC void reply_by_mail ARGS3( sleep(InfoSecs); goto cleanup; } - fd = fopen(tmpfile, "r"); +#endif /* DOSPATH */ + fd = fopen(my_tempfile, "r"); if (fd == NULL) { _statusline(COMMENT_REQUEST_CANCELLED); sleep(InfoSecs); @@ -1133,7 +1168,18 @@ PUBLIC void reply_by_mail ARGS3( fputs(header, fp); while ((n = fread(buf, 1, sizeof(buf), fd)) != 0) fwrite(buf, 1, n, fp); +#ifdef DOSPATH + sprintf(cmd, "%s -t \"%s\" -F %s", system_mail, address, tmpfile2); + fclose(fp); /* Close the tmpfile. */ + stop_curses(); + printf("Sending your comment:\n\n$ %s\n\nPlease wait...", cmd); + system(cmd); + sleep(MessageSecs); + start_curses(); + remove(tmpfile2); /* Delete the tmpfile. */ +#else pclose(fp); +#endif fclose(fd); /* Close the tmpfile. */ if (TRACE) @@ -1145,15 +1191,15 @@ PUBLIC void reply_by_mail ARGS3( */ cleanup: signal(SIGINT, cleanup_sig); -#ifndef VMS +#if !defined(VMS) && !defined(DOSPATH) FREE(header); #endif /* !VMS */ -#ifdef VMS +#if defined(VMS) || defined(DOSPATH) cleandown: #endif /* VMS */ term_letter = FALSE; - remove(tmpfile); /* Delete the tmpfile. */ + remove(my_tempfile); /* Delete the tmpfile. */ FREE(address); FREE(body); return; @@ -1164,7 +1210,7 @@ PRIVATE void terminate_letter ARGS1(int,sig) term_letter = TRUE; /* Reassert the AST */ signal(SIGINT, terminate_letter); -#ifdef VMS +#if defined(VMS) || defined(DOSPATH) /* Refresh the screen to get rid of the "interrupt" message */ if (!dump_output_immediately) { clearok(curscr, TRUE); diff --git a/src/LYMail.h b/src/LYMail.h index b14ab5f4..ce2d9aed 100644 --- a/src/LYMail.h +++ b/src/LYMail.h @@ -6,6 +6,8 @@ #include "LYStructs.h" #endif /* LYSTRUCTS_H */ +extern BOOLEAN term_letter; + extern void mailform PARAMS(( char * mailto_address, char * mailto_subject, diff --git a/src/LYMain.c b/src/LYMain.c index ae103c36..b6a36167 100644 --- a/src/LYMain.c +++ b/src/LYMain.c @@ -18,12 +18,18 @@ #include "LYClean.h" #include "LYCharSets.h" #include "LYCharUtils.h" +#ifdef EXP_CHARTRANS +#include "UCMap.h" +#endif /* EXP_CHARTRANS */ #include "LYReadCFG.h" #include "LYrcFile.h" #include "LYKeymap.h" #include "LYList.h" #include "LYJump.h" #include "LYBookmark.h" +#ifdef DOSPATH +#include "HTDOS.h" +#endif #ifndef VMS #ifdef SYSLOG_REQUESTED_URLS @@ -254,6 +260,7 @@ PUBLIC char *pref_charset = NULL; /* preferred character set */ PUBLIC BOOLEAN LYNewsPosting = NEWS_POSTING; /* News posting supported? */ PUBLIC char *LynxSigFile = NULL; /* Signature file, in or off home */ PUBLIC char *system_mail = NULL; /* The path for sending mail */ +PUBLIC char *system_mail_flags = NULL; /* The flags for sending mail */ PUBLIC char *lynx_temp_space = NULL; /* The prefix for temporary file paths */ PUBLIC char *lynx_save_space = NULL; /* The prefix for save to disk paths */ PUBLIC char *LYHostName = NULL; /* treat as a local host name */ @@ -275,11 +282,20 @@ PUBLIC char *form_get_data = NULL; /* User data for get form */ PUBLIC char *http_error_file = NULL; /* Place HTTP status code in this file */ /* Id:Password for protected forms */ PUBLIC char *authentication_info[2] = {NULL, NULL}; + +PUBLIC char *MBM_A_subbookmark[MBM_V_MAXFILES+1]; +PUBLIC char *MBM_A_subdescript[MBM_V_MAXFILES+1]; + PUBLIC BOOLEAN HEAD_request = FALSE; PUBLIC BOOLEAN scan_for_buried_news_references = TRUE; PUBLIC BOOLEAN LYRawMode; PUBLIC BOOLEAN LYDefaultRawMode; PUBLIC BOOLEAN LYUseDefaultRawMode = TRUE; +#ifdef EXP_CHARTRANS +PUBLIC char *UCAssume_MIMEcharset = NULL; +PUBLIC char *UCAssume_localMIMEcharset = NULL; +PUBLIC char *UCAssume_unrecMIMEcharset = NULL; +#endif /* EXP_CHARTRANS */ PUBLIC int LYlines = 24; PUBLIC int LYcols = 80; PUBLIC linkstruct links[MAXLINKS]; @@ -293,6 +309,7 @@ PUBLIC int AlertSecs; /* Seconds to sleep() for HTAlert() messages */ PUBLIC BOOLEAN bookmark_start = FALSE; PUBLIC char *LYUserAgent = NULL; /* Lynx User-Agent header */ PUBLIC char *LYUserAgentDefault = NULL; /* Lynx default User-Agent header */ +PUBLIC BOOLEAN LYUseMouse = FALSE; PUBLIC BOOLEAN LYNoRefererHeader=FALSE; /* Never send Referer header? */ PUBLIC BOOLEAN LYNoRefererForThis=FALSE;/* No Referer header for this URL? */ PUBLIC BOOLEAN LYNoFromHeader = TRUE; /* Never send From header? */ @@ -322,8 +339,6 @@ extern BOOL reloading; /* For Flushing Cache on Proxy Server (HTTP.c) */ extern int HTNewsChunkSize; /* Number of news articles per chunk (HTNews.c) */ extern int HTNewsMaxChunk; /* Max news articles before chunking (HTNews.c) */ -extern int mainloop NOPARAMS; - PRIVATE BOOLEAN anon_restrictions_set = FALSE; PRIVATE BOOLEAN stack_dump = FALSE; PRIVATE char *terminal = NULL; @@ -386,6 +401,7 @@ PRIVATE void free_lynx_globals NOARGS FREE(pref_charset); FREE(LynxSigFile); FREE(system_mail); + FREE(system_mail_flags); FREE(LYUserAgent); FREE(LYUserAgentDefault); FREE(LYHostName); @@ -433,6 +449,34 @@ PUBLIC int main ARGS2( FILE *fp; char filename[256]; +#ifdef _WINDOWS +WSADATA WSAData; + { + int err; + WORD wVerReq; + + _fmode = O_BINARY; + + wVerReq = MAKEWORD(1,1); + + err = WSAStartup(wVerReq, &WSAData); + if (err != 0) + { + printf("No Winsock found, sorry."); + sleep(5); + return; + } + } +#endif /* _WINDOWS */ + +#ifdef DJGPP + sock_init(); +#endif + +#ifdef DOSPATH + terminal = "vt100"; +#endif + /* * Set up the argument list. */ @@ -530,6 +574,14 @@ PUBLIC int main ARGS2( StrAllocCopy(language, PREFERRED_LANGUAGE); StrAllocCopy(pref_charset, PREFERRED_CHARSET); StrAllocCopy(system_mail, SYSTEM_MAIL); + StrAllocCopy(system_mail_flags, SYSTEM_MAIL_FLAGS); +#ifdef DOSPATH + if ((cp = getenv("TEMP")) != NULL) + StrAllocCopy(lynx_temp_space, cp); + else if ((cp = getenv("TMP")) != NULL) + StrAllocCopy(lynx_temp_space, cp); + else +#endif if ((cp = getenv("LYNX_TEMP_SPACE")) != NULL) StrAllocCopy(lynx_temp_space, cp); else @@ -539,11 +591,15 @@ PUBLIC int main ARGS2( StrAllocCopy(temp, lynx_temp_space); if (((len = strlen(temp)) > 0) && temp[len-1] == '/') temp[len-1] = '\0'; +#ifdef DOSPATH + StrAllocCat(temp, HTDOS_wwwName((char *)Home_Dir())); +#else #ifdef VMS StrAllocCat(temp, HTVMS_wwwName((char *)Home_Dir())); #else StrAllocCat(temp, Home_Dir()); #endif /* VMS */ +#endif /* DOSPATH */ StrAllocCat(temp, cp); StrAllocCopy(lynx_temp_space, temp); FREE(temp); @@ -583,7 +639,6 @@ PUBLIC int main ARGS2( } #else { - len; if (((len = strlen(lynx_temp_space)) > 1) && lynx_temp_space[len-1] != '/') { StrAllocCat(lynx_temp_space, "/"); @@ -665,15 +720,15 @@ PUBLIC int main ARGS2( * set the default restrictions for that account NOW. - FM */ if (!anon_restrictions_set && strlen((char *)ANONYMOUS_USER) > 0 && -#ifdef VMS +#if defined (VMS) || defined (NOUSERS) !strcasecomp(((char *)getenv("USER")==NULL ? " " : getenv("USER")), ANONYMOUS_USER)) { #else -#ifdef NO_CUSERID - STREQ(((char *)getlogin()==NULL ? " " : getlogin()), ANONYMOUS_USER)) { -#else +#if HAVE_CUSERID STREQ((char *)cuserid((char *) NULL), ANONYMOUS_USER)) { -#endif /* NO_CUSERID */ +#else + STREQ(((char *)getlogin()==NULL ? " " : getlogin()), ANONYMOUS_USER)) { +#endif /* HAVE_CUSERID */ #endif /* VMS */ parse_restrictions("default"); anon_restrictions_set = TRUE; @@ -702,20 +757,26 @@ PUBLIC int main ARGS2( /* * Convert a '~' in the configuration file path to $HOME. */ +#ifndef _WINDOWS /* avoid the whole ~ thing for now */ if ((cp = strchr(lynx_cfg_file, '~'))) { *(cp++) = '\0'; StrAllocCopy(temp, lynx_cfg_file); if (((len = strlen(temp)) > 0) && temp[len-1] == '/') temp[len-1] = '\0'; +#ifdef DOSPATH + StrAllocCat(temp, HTDOS_wwwName((char *)Home_Dir())); +#else #ifdef VMS StrAllocCat(temp, HTVMS_wwwName((char *)Home_Dir())); #else StrAllocCat(temp, Home_Dir()); #endif /* VMS */ +#endif /* DOSPATH */ StrAllocCat(temp, cp); StrAllocCopy(lynx_cfg_file, temp); FREE(temp); } +#endif /* _WINDOWS */ /* * If the configuration file is not available, @@ -728,6 +789,17 @@ PUBLIC int main ARGS2( } fclose(fp); +#ifdef EXP_CHARTRANS + /* + * Make sure we have the character sets declared. + * This will initialize the CHARTRANS handling. - kw + */ + if (!LYCharSetsDeclared()) { + fprintf(stderr, "\nLynx character sets not declared.\n\n"); + exit(-1); + } +#endif /* EXP_CHARTRANS */ + /* * Make sure we have the edit map declared. - FM */ @@ -736,7 +808,7 @@ PUBLIC int main ARGS2( exit(-1); } -#ifdef USE_SLANG +#if defined(USE_SLANG) || defined(COLOR_CURSES) /* * Set up default foreground and background colors. */ @@ -785,11 +857,15 @@ PUBLIC int main ARGS2( StrAllocCopy(temp, lynx_save_space); if (((len = strlen(temp)) > 0) && temp[len-1] == '/') temp[len-1] = '\0'; +#ifdef DOSPATH + StrAllocCat(temp, HTDOS_wwwName((char *)Home_Dir())); +#else #ifdef VMS StrAllocCat(temp, HTVMS_wwwName((char *)Home_Dir())); #else StrAllocCat(temp, Home_Dir()); #endif /* VMS */ +#endif /* DOSPATH */ StrAllocCat(temp, cp); StrAllocCopy(lynx_save_space, temp); FREE(temp); @@ -875,10 +951,10 @@ PUBLIC int main ARGS2( */ if (argc == 2 && strcmp(argv[1], "-") == 0) { char buf[1025]; - char *argv[2]; + char *my_args[2]; - argv[0] = buf; - argv[1] = NULL; + my_args[0] = buf; + my_args[1] = NULL; while (fgets(buf, sizeof(buf) - 1, stdin)) { int j; @@ -887,7 +963,7 @@ PUBLIC int main ARGS2( (buf[j] == CR || buf[j] == LF); j--) { buf[j] = '\0'; } - parse_arg(argv, NULL, -1); + parse_arg(my_args, NULL, -1); } } else { for (i = 1; i < argc; i++) { @@ -960,7 +1036,9 @@ PUBLIC int main ARGS2( /* trap interrupts */ if (!dump_output_immediately) +#ifndef NOSIGHUP (void) signal(SIGHUP, cleanup_sig); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, cleanup_sig); #ifdef SIGWINCH (void) signal(SIGWINCH, size_change); @@ -969,7 +1047,9 @@ PUBLIC int main ARGS2( if (!TRACE && !dump_output_immediately && !stack_dump) { (void) signal(SIGINT, cleanup_sig); #ifndef __linux__ +#ifndef DOSPATH (void) signal(SIGBUS, FatalProblem); +#endif /* DOSPATH */ #endif /* !__linux__ */ (void) signal(SIGSEGV, FatalProblem); (void) signal(SIGILL, FatalProblem); @@ -982,7 +1062,9 @@ PUBLIC int main ARGS2( * So the runaway CPU time problem on Unix should not occur any * more. */ +#ifndef DOSPATH (void) signal(SIGPIPE, SIG_IGN); +#endif /* DOSPATH */ } #endif /* !VMS */ @@ -1025,7 +1107,7 @@ PUBLIC int main ARGS2( * Set up the inside/outside domain restriction flags. - FM */ if (inlocaldomain()) { -#if defined(NO_UTMP) || defined(VMS) /* not selective */ +#if !defined(HAVE_UTMP) || defined(VMS) /* not selective */ telnet_ok = !no_inside_telnet && !no_outside_telnet && telnet_ok; news_ok = !no_inside_news && !no_outside_news && news_ok; ftp_ok = !no_inside_ftp && !no_outside_ftp && ftp_ok; @@ -1037,7 +1119,7 @@ PUBLIC int main ARGS2( news_ok = !no_inside_news && news_ok; ftp_ok = !no_inside_ftp && ftp_ok; rlogin_ok = !no_inside_rlogin && rlogin_ok; -#endif /* NO_UTMP || VMS */ +#endif /* !HAVE_UTMP || VMS */ } else { if (TRACE) fprintf(stderr,"LYMain.c: User in REMOTE domain\n"); @@ -1062,7 +1144,9 @@ PUBLIC int main ARGS2( fprintf(stderr, "The '-head' switch is for http HEAD requests and cannot be used for\n'%s'.\n", startfile); +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -1081,7 +1165,9 @@ PUBLIC int main ARGS2( fprintf(stderr, "The '-mime_header' switch is for http URLs and cannot be used for\n'%s'.\n", startfile); +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -1100,7 +1186,9 @@ PUBLIC int main ARGS2( fprintf(stderr, "The '-traversal' switch is for http URLs and cannot be used for\n'%s'.\n", startfile); +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -1161,7 +1249,9 @@ PUBLIC int main ARGS2( status = mainloop(); if (!nolist && keypad_mode == LINKS_ARE_NUMBERED) printlist(stdout,FALSE); +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -1275,6 +1365,44 @@ PRIVATE void parse_arg ARGS3( parse_restrictions("default"); anon_restrictions_set = TRUE; +#ifdef EXP_CHARTRANS + } else if ((strncmp(argv[0], "-assume_charset", 15) == 0) || + (strncmp(argv[0], "-assume_local_charset", 21) == 0) || + (strncmp(argv[0], "-assume_unrec_charset", 21) == 0)) { + BOOL local_flag = (argv[0][8] == 'l'); + BOOL unrec_flag = (argv[0][8] == 'u'); + if (nextarg) { + int j; + for (j = 0; cp[j]; j++) + cp[j] = TOLOWER(cp[j]); + if (local_flag) { + StrAllocCopy(UCAssume_localMIMEcharset, cp); + if (UCAssume_localMIMEcharset && *UCAssume_localMIMEcharset) + UCLYhndl_HTFile_for_unspec = + UCGetLYhndl_byMIME(UCAssume_localMIMEcharset); + } else if (unrec_flag) { + StrAllocCopy(UCAssume_unrecMIMEcharset, cp); + if (UCAssume_unrecMIMEcharset && *UCAssume_unrecMIMEcharset) + UCLYhndl_for_unrec = + UCGetLYhndl_byMIME(UCAssume_unrecMIMEcharset); + } else { + StrAllocCopy(UCAssume_MIMEcharset, cp); + if (UCAssume_MIMEcharset && *UCAssume_MIMEcharset) + UCLYhndl_for_unspec = + UCGetLYhndl_byMIME(UCAssume_MIMEcharset); + } + } else { + if (local_flag) + UCLYhndl_HTFile_for_unspec = 0; + else if (unrec_flag) + UCLYhndl_for_unrec = 0; + else + UCLYhndl_for_unspec = 0; + } + + +#endif + } else if (strncmp(argv[0], "-auth", 5) == 0) { /* * Authentication information for protected forms. @@ -1789,7 +1917,7 @@ PRIVATE void parse_arg ARGS3( file_url disallow using G)oto, served links or bookmarks for\n\ file: URL's\n\ goto disable the 'g' (goto) command\n"); -#if defined(NO_UTMP) || defined(VMS) /* not selective */ +#if !defined(HAVE_UTMP) || defined(VMS) /* not selective */ printf("\ inside_ftp disallow ftps for people coming from inside your\n\ domain (utmp required for selectivity)\n\ @@ -1806,14 +1934,14 @@ PRIVATE void parse_arg ARGS3( your domain\n\ inside_rlogin disallow rlogins for people coming from inside your domain\n\ inside_telnet disallow telnets for people coming from inside your domain\n"); -#endif /* NO_UTMP || VMS */ +#endif /* HAVE_UTMP || VMS */ printf("\ jump disable the 'j' (jump) command\n\ mail disallow mail\n\ multibook disallow multiple bookmark files\n\ news_post disallow USENET News posting.\n\ option_save disallow saving options in .lynxrc\n"); -#if defined(NO_UTMP) || defined(VMS) /* not selective */ +#if !defined(HAVE_UTMP) || defined(VMS) /* not selective */ printf("\ outside_ftp disallow ftps for people coming from outside your\n\ domain (utmp required for selectivity)\n\ @@ -1830,7 +1958,7 @@ PRIVATE void parse_arg ARGS3( your domain\n\ outside_rlogin disallow rlogins for people coming from outside your domain\n\ outside_telnet disallow telnets for people coming from outside your domain\n"); -#endif /* NO_UTMP || VMS */ +#endif /* !HAVE_UTMP || VMS */ printf("\ print disallow most print options\n\ shell disallow shell escapes, and lynxexec, lynxprog or lynxcgi\n\ @@ -1927,6 +2055,10 @@ PRIVATE void parse_arg ARGS3( else use_underscore = TRUE; +#ifdef NCURSES_MOUSE_VERSION + } else if (strncmp(argv[0], "-use_mouse", 9) == 0) { + LYUseMouse = TRUE; +#endif } else { goto Output_Error_and_Help_List; } @@ -1976,6 +2108,11 @@ Output_Help_List: printf(" - receive the arguments from stdin (enclose\n"); printf(" in double-quotes (\"-\") on VMS)\n"); printf(" -anonymous used to specify the anonymous account\n"); +#ifdef EXP_CHARTRANS + printf(" -assume_charset charset for documents that don't specify it\n"); + printf(" -assume_local_charset charset assumed for local files\n"); + printf(" -assume_unrec_charset use this instead of unrecognized charsets\n"); +#endif /* EXP_CHARTRANS */ printf(" -auth=id:pw authentication information for protected forms\n"); printf(" -base prepend a request URL comment and BASE tag to text/html\n"); printf(" outputs for -source or -mime_header dumps\n"); @@ -2070,6 +2207,9 @@ Output_Help_List: printf(" -trace turns on WWW trace mode\n"); printf(" -traversal traverse all http links derived from startfile\n"); printf(" -underscore toggles use of _underline_ format in dumps\n"); +#ifdef NCURSES_MOUSE_VERSION + printf(" -use_mouse enable use of the mouse\n"); +#endif printf(" -validate accept only http URLs (for validation)\n"); printf(" -version print Lynx version information\n"); printf(" -vikeys enable vi-like key movement\n"); @@ -2088,11 +2228,15 @@ PRIVATE void FatalProblem ARGS1( /* * Ignore further interrupts. - mhc: 11/2/91 */ - (void) signal (SIGHUP, SIG_IGN); +#ifndef NOSIGHUP + (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal (SIGTERM, SIG_IGN); (void) signal (SIGINT, SIG_IGN); #ifndef __linux__ +#ifndef DOSPATH (void) signal(SIGBUS, SIG_IGN); +#endif /* ! DOSPATH */ #endif /* !__linux__ */ (void) signal(SIGSEGV, SIG_IGN); (void) signal(SIGILL, SIG_IGN); @@ -2111,7 +2255,9 @@ PRIVATE void FatalProblem ARGS1( } cleanup_sig(0); #ifndef __linux__ +#ifndef DOSPATH signal(SIGBUS, SIG_DFL); +#endif /* DOSPATH */ #endif /* !__linux__ */ signal(SIGSEGV, SIG_DFL); signal(SIGILL, SIG_DFL); diff --git a/src/LYMainLoop.c b/src/LYMainLoop.c index 1801682f..50fcbffb 100644 --- a/src/LYMainLoop.c +++ b/src/LYMainLoop.c @@ -34,6 +34,9 @@ #include "LYCharSets.h" #include "LYCharUtils.h" #include "LYCookie.h" +#ifdef DOSPATH +#include "HTDOS.h" +#endif #ifdef VMS #include "HTVMSUtils.h" @@ -148,7 +151,8 @@ int mainloop NOARGS BOOLEAN FirstURLRecall = TRUE; char *temp = NULL; BOOLEAN ForcePush = FALSE; - int i, len; + unsigned int len; + int i; #ifdef DIRED_SUPPORT char *tp; @@ -343,7 +347,9 @@ try_again: if ((ofp = fopen(TRAVERSE_ERRORS,"a+")) == NULL) { if ((ofp = fopen(TRAVERSE_ERRORS,"w")) == NULL) { perror(NOOPEN_TRAV_ERR_FILE); +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -376,7 +382,9 @@ try_again: printf("\nlynx: Can't access startfile %s\n", startfile); if (!dump_output_immediately) { +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -455,7 +463,9 @@ try_again: "\nlynx: Start file could not be found or is not text/html or text/plain\n"); printf(" Exiting...\n"); if (!dump_output_immediately) { +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -493,11 +503,15 @@ try_again: BOOKMARK_TITLE))) && (temp = HTParse(newdoc.address, "", PARSE_PATH+PARSE_PUNCTUATION)) != NULL) { +#ifdef DOSPATH + cp = HTDOS_wwwName((char *)Home_Dir()); +#else #ifdef VMS cp = HTVMS_wwwName((char *)Home_Dir()); #else cp = (char *)Home_Dir(); #endif /* VMS */ +#endif /* DOSPATH */ len = strlen(cp); #ifdef VMS if (!strncasecomp(temp, cp, len) && @@ -546,17 +560,22 @@ try_again: sleep(AlertSecs); return(-1); } - if (temp = HTParse(newdoc.address, "", - PARSE_ACCESS+PARSE_HOST+PARSE_PUNCTUATION)) { + if ((temp = HTParse(newdoc.address, "", + PARSE_ACCESS+PARSE_HOST+PARSE_PUNCTUATION))) { StrAllocCopy(newdoc.address, temp); HTuncache_current_document(); FREE(curdoc.address); +#ifdef DOSPATH + StrAllocCat(newdoc.address, + HTDOS_wwwName((char *)Home_Dir())); +#else #ifdef VMS StrAllocCat(newdoc.address, HTVMS_wwwName((char *)Home_Dir())); #else StrAllocCat(newdoc.address, Home_Dir()); #endif /* VMS */ +#endif /* DOSPATH */ StrAllocCat(newdoc.address, "/"); StrAllocCat(newdoc.address, (strncmp(BookmarkPage, "./", 2) ? @@ -1090,7 +1109,9 @@ try_again: printf( "Fatal error - could not open output file %s\n",cfile); if (!dump_output_immediately) { +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -1141,7 +1162,6 @@ try_again: c = '\t'; #endif /* FASTTAB */ } else { -get_keyboard_input: /* * Get a keystroke from the user. * Save the last keystroke to avoid @@ -1215,7 +1235,9 @@ new_keyboard_input: (nhist <= 0 )) { if (!dump_output_immediately) { cleanup(); +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -1253,7 +1275,9 @@ new_keyboard_input: (nhist <= 0 )) { if (!dump_output_immediately) { cleanup(); +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -2001,7 +2025,13 @@ new_cmd: /* } /* fall through to LYK_ACTIVATE */ case LYK_ACTIVATE: /* follow a link */ - if (nlinks > 0) { + { + /* Is there a mouse-clicked link waiting? */ + int mouse_tmp = get_mouse_link(); + /* If yes, use it as the link */ + if (mouse_tmp != -1) curdoc.link = mouse_tmp; + } + if (nlinks > 0) { if (links[curdoc.link].type == WWW_FORM_LINK_TYPE) { /* * Don't try to submit forms with bad actions. - FM @@ -2139,8 +2169,8 @@ new_cmd: /* !strcmp(lynxjumpfile, curdoc.address)) { LYJumpFileURL = TRUE; LYUserSpecifiedURL = TRUE; - } else if (curdoc.title && - !strcmp(curdoc.title, HISTORY_PAGE_TITLE) || + } else if ((curdoc.title && + !strcmp(curdoc.title, HISTORY_PAGE_TITLE)) || curdoc.bookmark != NULL || (lynxjumpfile && !strcmp(lynxjumpfile, curdoc.address))) { @@ -2402,7 +2432,7 @@ check_goto_URL: LYFillLocalFileURL((char **)&temp, "file://localhost"); LYEnsureAbsoluteURL((char **)&temp, ""); sprintf(user_input_buffer, "%.*s", - (sizeof(user_input_buffer) - 1), temp); + (int)(sizeof(user_input_buffer) - 1), temp); FREE(temp); if ((no_file_url || no_goto_file) && !strncmp(user_input_buffer,"file:",5)) { @@ -3600,11 +3630,17 @@ check_add_bookmark_to_self: stop_curses(); printf(SPAWNING_MSG); fflush(stdout); +#ifdef DOSPATH + system("cls"); + system("echo Type EXIT to return to Lynx."); + system(getenv("COMSPEC") == NULL ? "command.com" : getenv("COMSPEC")); +#else #ifdef VMS system(""); #else system("exec $SHELL"); #endif /* VMS */ +#endif /* DOSPATH */ start_curses(); refresh_screen=TRUE; /* for a showpage */ } else { diff --git a/src/LYMainLoop.h b/src/LYMainLoop.h index 97addc03..b3a5bd99 100644 --- a/src/LYMainLoop.h +++ b/src/LYMainLoop.h @@ -2,8 +2,6 @@ #ifndef LYMAINLOOP_H #define LYMAINLOOP_H - - - +extern int mainloop NOPARAMS; #endif /* LYMAINLOOP_H */ diff --git a/src/LYMap.c b/src/LYMap.c index 3126611c..4aa0346a 100644 --- a/src/LYMap.c +++ b/src/LYMap.c @@ -54,7 +54,7 @@ PUBLIC BOOL LYMapsOnly = FALSE; /* * Utility for freeing the list of MAPs. - FM */ -PUBLIC void LYLynxMaps_free NOARGS +PRIVATE void LYLynxMaps_free NOARGS { ImageMap *map; MapElement *element; diff --git a/src/LYNews.c b/src/LYNews.c index 79ae8e39..65186f00 100644 --- a/src/LYNews.c +++ b/src/LYNews.c @@ -14,6 +14,7 @@ #include "LYSystem.h" #include "GridText.h" #include "LYSignal.h" +#include "LYNews.h" #include "LYGlobalDefs.h" @@ -46,7 +47,7 @@ PUBLIC char *LYNewsPost ARGS2( char *cp = NULL; int c = 0; /* user input */ FILE *fd; - char tmpfile[256]; + char my_tempfile[256]; char *postfile = NULL; char *NewsGroups = NULL; char *org = NULL; @@ -63,8 +64,8 @@ PUBLIC char *LYNewsPost ARGS2( * Open a temporary file for the headers * and message body. - FM */ - tempname(tmpfile, NEW_FILE); - if ((fd = fopen(tmpfile, "w")) == NULL) { + tempname(my_tempfile, NEW_FILE); + if ((fd = fopen(my_tempfile, "w")) == NULL) { HTAlert(CANNOT_OPEN_TEMP); return(postfile); } @@ -154,7 +155,7 @@ PUBLIC char *LYNewsPost ARGS2( *org != '\0') { StrAllocCat(cp, org); #ifndef VMS - } else if (fp = fopen("/etc/organization", "r")) { + } else if ((fp = fopen("/etc/organization", "r")) != 0) { if (fgets(user_input, sizeof(user_input), fp) != NULL) { if ((cp = strchr(user_input, '\n')) != NULL) *cp = '\0'; @@ -218,7 +219,7 @@ PUBLIC char *LYNewsPost ARGS2( if (strstr(editor, "pico")) { editor_arg = " -t"; /* No prompt for filename to use */ } - sprintf(user_input,"%s%s %s", editor, editor_arg, tmpfile); + sprintf(user_input,"%s%s %s", editor, editor_arg, my_tempfile); _statusline(SPAWNING_EDITOR_FOR_NEWS); stop_curses(); if (system(user_input)) { @@ -290,7 +291,7 @@ PUBLIC char *LYNewsPost ARGS2( !term_message && c != 7 && c != 3) c = LYgetch(); if (TOUPPER(c) == 'Y') { - if ((fd = fopen(tmpfile, "a")) != NULL) { + if ((fd = fopen(my_tempfile, "a")) != NULL) { fputs("-- \n", fd); while (fgets(user_input, sizeof(user_input), fp) != NULL) { fputs(user_input, fd); @@ -301,7 +302,7 @@ PUBLIC char *LYNewsPost ARGS2( fclose(fp); } clear(); /* clear the screen */ - StrAllocCopy(postfile, tmpfile); + StrAllocCopy(postfile, my_tempfile); if (!followup) /* * If it's not a followup, the current document @@ -328,10 +329,10 @@ cleanup: term_message = FALSE; if (!postfile) { #ifdef VMS - while (remove(tmpfile) == 0) + while (remove(my_tempfile) == 0) ; /* loop through all versions */ #else - remove(tmpfile); + remove(my_tempfile); #endif /* VMS */ } FREE(NewsGroups); diff --git a/src/LYOptions.c b/src/LYOptions.c index a795fcfb..236ba680 100644 --- a/src/LYOptions.c +++ b/src/LYOptions.c @@ -36,12 +36,12 @@ PRIVATE int boolean_choice PARAMS((int status, int line, #define MAXCHOICES 10 PRIVATE void option_statusline ARGS1( - char *, text) + CONST char *, text) { /* * Make sure we have a pointer to a string. */ - if (text == NULL) + if (text == 0) return; /* @@ -956,6 +956,7 @@ PRIVATE int boolean_choice ARGS4( char **, choices) { int response = 0; + int respcmd; int number = 0; int col = (column >= 0 ? column : COL_OPTION_VALUES); @@ -982,10 +983,50 @@ PRIVATE int boolean_choice ARGS4( if (term_options || response == 7 || response == 3) response = '\n'; if (response != '\n' && response != '\r') { + respcmd = keymap[response+1]; +#if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE) + /* does this make sense here? dunno.. - kw */ + if (!respcmd && override[response+1] && !no_dired_support) + respcmd = override[response+1]; +#endif /* DIRED_SUPPORT && OK_OVERRIDE */ + switch (respcmd) { + case LYK_PREV_PAGE: + case LYK_UP_TWO: + case LYK_PREV_LINK: + case LYK_UP_LINK: + case LYK_LEFT_LINK: + case LYK_PREV_DOC: + if(status == 0) + status = number; /* go back to end */ + else + status--; + break; + case LYK_END: + status = number; + break; + + case LYK_HOME: + status = 0; + break; + case LYK_1: + case LYK_2: + case LYK_3: + case LYK_4: + case LYK_5: + case LYK_6: + case LYK_7: + case LYK_8: + case LYK_9: + if((respcmd - LYK_1 + 1) <= number) { + status = respcmd -LYK_1 + 1; + break; + } /* else fall through! */ + default: if (status == number) status = 0; /* go over the top and around */ else status++; + } /* end of switch */ addstr(choices[status]); refresh(); } else { diff --git a/src/LYOptions.h b/src/LYOptions.h index e7464226..c313d257 100644 --- a/src/LYOptions.h +++ b/src/LYOptions.h @@ -2,6 +2,8 @@ #ifndef LYOPTIONS_H #define LYOPTIONS_H +extern BOOLEAN term_options; + extern void options NOPARAMS; extern void edit_bookmarks NOPARAMS; diff --git a/src/LYPrint.c b/src/LYPrint.c index 265747a4..f7cf2e34 100644 --- a/src/LYPrint.c +++ b/src/LYPrint.c @@ -19,6 +19,9 @@ #ifdef VMS #include "HTVMSUtils.h" #endif /* VMS */ +#ifdef DOSPATH +#include "HTDOS.h" +#endif #include "LYLeaks.h" @@ -305,11 +308,15 @@ PUBLIC int printfile ARGS1(document *,newdoc) strcpy(buffer, filename); if ((len=strlen(buffer)) > 0 && buffer[len-1] == '/') buffer[len-1] = '\0'; +#ifdef DOSPATH + strcat(buffer, HTDOS_wwwName((char *)Home_Dir())); +#else #ifdef VMS strcat(buffer, HTVMS_wwwName((char *)Home_Dir())); #else strcat(buffer, Home_Dir()); #endif /* VMS */ +#endif /* DOSPATH */ strcat(buffer, cp); strcpy(filename, buffer); } @@ -332,9 +339,17 @@ PUBLIC int printfile ARGS1(document *,newdoc) else cp = NULL; if (cp) +#ifdef DOSPATH + sprintf(buffer,"%s/%s", cp, HTDOS_name(filename)); +#else sprintf(buffer,"%s/%s", cp, filename); +#endif else +#ifdef DOSPATH + strcpy(buffer, HTDOS_name(filename)); +#else strcpy(buffer, filename); +#endif #endif /* VMS */ /* see if it already exists */ @@ -482,7 +497,7 @@ PUBLIC int printfile ARGS1(document *,newdoc) remove_quotes(sug_filename); sprintf(buffer, "%s/subject=\"%s\" %s %s", - SYSTEM_MAIL, sug_filename, tempfile, user_response); + system_mail, sug_filename, tempfile, user_response); stop_curses(); printf(MAILING_FILE); @@ -492,18 +507,22 @@ PUBLIC int printfile ARGS1(document *,newdoc) sleep(MessageSecs); start_curses(); #else /* Unix: */ -#ifdef MMDF - sprintf(buffer, "%s -mlruxto,cc*", SYSTEM_MAIL); -#else - sprintf(buffer, "%s -t -oi", SYSTEM_MAIL); -#endif /* MMDF */ + sprintf(buffer, "%s %s", system_mail, system_mail_flags); +#ifdef DOSPATH + sprintf(tempfile, "%s%s", lynx_temp_space, "temp_mail.txt"); + if ((outfile_fp = fopen(tempfile,"w")) == NULL) { + _statusline(MAIL_REQUEST_FAILED); + sleep(AlertSecs); + return; + } +#else if ((outfile_fp = popen(buffer, "w")) == NULL) { _statusline(MAIL_REQUEST_FAILED); sleep(AlertSecs); break; } - +#endif if (HTisDocumentSource()) { /* * Add Content-Type, Content-Location, and @@ -543,7 +562,18 @@ PUBLIC int printfile ARGS1(document *,newdoc) if (keypad_mode) printlist(outfile_fp, FALSE); +#ifdef DOSPATH + sprintf(buffer, "%s -t \"%s\" -F %s", system_mail, user_response, tempfile); + fclose(outfile_fp); /* Close the tmpfile. */ + stop_curses(); + printf("Sending \n\n$ %s\n\nPlease wait...", buffer); + system(buffer); + sleep(MessageSecs); + start_curses(); + remove(tempfile); /* Delete the tmpfile. */ +#else pclose(outfile_fp); +#endif #endif /* VMS */ break; @@ -931,7 +961,7 @@ PUBLIC int print_options ARGS2(char **,newfile, int,lines_in_file) return(-1); } -#ifdef VMS +#if defined (VMS) || defined (DOSPATH) StrAllocCopy(print_filename, "file://localhost/"); #else StrAllocCopy(print_filename, "file://localhost"); diff --git a/src/LYReadCFG.c b/src/LYReadCFG.c index f76f08dd..69c56c63 100644 --- a/src/LYReadCFG.c +++ b/src/LYReadCFG.c @@ -13,6 +13,7 @@ #include "LYCurses.h" #include "LYSignal.h" #include "LYBookmark.h" +#include "LYReadCFG.h" #ifdef DIRED_SUPPORT #include "LYLocal.h" @@ -272,7 +273,28 @@ PRIVATE void add_printer_to_list ARGS2( } } -#ifdef USE_SLANG +#if defined(USE_SLANG) || defined(COLOR_CURSES) +#ifdef DOSPATH /* I.E. broken curses */ +static char *Color_Strings[16] = +{ + "black", + "blue", + "green", + "cyan", + "red", + "magenta", + "brown", + "lightgray", + "gray", + "brightblue", + "brightgreen", + "lightcyan", + "brightred", + "brightmagenta", + "yellow", + "white" +}; +#else static char *Color_Strings[16] = { "black", @@ -292,6 +314,7 @@ static char *Color_Strings[16] = "brightcyan", "white" }; +#endif /* DOSPATH (broken curses) */ /* * Validator for COLOR fields. @@ -303,7 +326,7 @@ PRIVATE int check_color ARGS1( for (i = 0; i < 16; i++) { if (!strcmp(color, Color_Strings[i])) - return 0; + return i; } return -1; } @@ -327,7 +350,9 @@ Here FOREGROUND and BACKGROUND must be one of:\n" Color_Strings[i + 2], Color_Strings[i + 3]); } +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -361,13 +386,18 @@ PRIVATE void parse_color ARGS1( exit_with_color_syntax(); *bg++ = 0; +#if defined(USE_SLANG) if ((-1 == check_color(fg)) || (-1 == check_color(bg))) exit_with_color_syntax(); SLtt_set_color(color, NULL, fg, bg); +#else + if (lynx_chg_color(color, check_color(fg), check_color(bg)) < 0) + exit_with_color_syntax(); +#endif } -#endif /* USE_SLANG */ +#endif /* defined(USE_SLANG) || defined(COLOR_CURSES) */ /* * Process the configuration file (lynx.cfg). @@ -483,10 +513,10 @@ PUBLIC void read_cfg ARGS1( } else if (!strncasecomp(buffer, "COLLAPSE_BR_TAGS:", 17)) { LYCollapseBRs = is_true(buffer+17); -#ifdef USE_SLANG +#if defined(USE_SLANG) || defined(COLOR_CURSES) } else if (!strncasecomp(buffer, "COLOR:", 6)) { parse_color(buffer + 6); -#endif /* USE_SLANG */ +#endif /* defined(USE_SLANG) || defined(COLOR_CURSES) */ } else if (!strncasecomp(buffer, "cso_proxy:", 10)) { if (getenv("cso_proxy") == NULL) { @@ -655,11 +685,7 @@ PUBLIC void read_cfg ARGS1( break; case 'I': - if (!strncasecomp(buffer, "NEWS_POSTING:", 13)) { - LYNewsPosting = is_true(buffer+13); - no_newspost = (LYNewsPosting == FALSE); - - } else if (!strncasecomp(buffer, "INFOSECS:", 9)) { + if (!strncasecomp(buffer, "INFOSECS:", 9)) { strcpy(temp, buffer+9); for (i = 0; temp[i]; i++) { if (!isdigit(temp[i])) { @@ -794,7 +820,11 @@ PUBLIC void read_cfg ARGS1( break; case 'N': - if (!strncasecomp(buffer, "NEWS_CHUNK_SIZE:", 16)) { + if (!strncasecomp(buffer, "NEWS_POSTING:", 13)) { + LYNewsPosting = is_true(buffer+13); + no_newspost = (LYNewsPosting == FALSE); + + } else if (!strncasecomp(buffer, "NEWS_CHUNK_SIZE:", 16)) { HTNewsChunkSize = atoi(buffer+16); /* * If the new HTNewsChunkSize exceeds the maximum, @@ -1016,6 +1046,9 @@ PUBLIC void read_cfg ARGS1( } else if (!strncasecomp(buffer, "SYSTEM_MAIL:", 12)) { StrAllocCopy(system_mail, buffer+12); + + } else if (!strncasecomp(buffer, "SYSTEM_MAIL_FLAGS:", 18)) { + StrAllocCopy(system_mail_flags, buffer+18); } break; @@ -1025,7 +1058,6 @@ PUBLIC void read_cfg ARGS1( add_trusted(&buffer[13], EXEC_PATH); /* Add exec path */ } #endif /* EXEC_LINKS */ - #ifdef LYNXCGI_LINKS if (!strncasecomp(buffer, "TRUSTED_LYNXCGI:", 16)) { add_trusted(&buffer[16], CGI_PATH); /* Add CGI path */ @@ -1050,6 +1082,11 @@ PUBLIC void read_cfg ARGS1( UseFixedRecords = is_true(buffer+18); #endif /* VMS */ +#ifdef NCURSES_MOUSE_VERSION + } else if(!strncasecomp(buffer, "USE_MOUSE:",10)) { + LYUseMouse = is_true(buffer+10); +#endif + } else if (!strncasecomp(buffer, "USE_SELECT_POPUPS:", 18)) { LYSelectPopups = is_true(buffer+18); } diff --git a/src/LYSearch.c b/src/LYSearch.c index 52a3e110..7dd6c26b 100644 --- a/src/LYSearch.c +++ b/src/LYSearch.c @@ -17,7 +17,7 @@ * in not found do not reset cur and return false. */ -PUBLIC int check_for_target_in_links ARGS2(int *,cur, char *,new_target) +PRIVATE int check_for_target_in_links ARGS2(int *,cur, char *,new_target) { int i = *cur+1; diff --git a/src/LYShowInfo.c b/src/LYShowInfo.c index b02b3a05..dc314523 100644 --- a/src/LYShowInfo.c +++ b/src/LYShowInfo.c @@ -62,7 +62,7 @@ PUBLIC int showinfo ARGS4( /* * Make the temporary file a URL now. */ -#ifdef VMS +#if defined (VMS) || defined (DOSPATH) StrAllocCopy(info_url,"file://localhost/"); #else StrAllocCopy(info_url,"file://localhost"); @@ -250,6 +250,20 @@ PUBLIC int showinfo ARGS4( if (HTLoadedDocumentCharset()) fprintf(fp0, "<dt><em> Charset:</em> %s\n", HTLoadedDocumentCharset()); +#ifdef EXP_CHARTRANS + else { + LYUCcharset * p_in = HTAnchor_getUCInfoStage(HTMainAnchor, + UCT_STAGE_PARSER); + if (!p_in || !(p_in->MIMEname) || !*(p_in->MIMEname) || + HTAnchor_getUCLYhndl(HTMainAnchor, UCT_STAGE_PARSER) < 0) + p_in = HTAnchor_getUCInfoStage(HTMainAnchor, UCT_STAGE_MIME); + if (p_in && p_in->MIMEname && *(p_in->MIMEname) && + HTAnchor_getUCLYhndl(HTMainAnchor, UCT_STAGE_MIME) >= 0) { + fprintf(fp0, "<dt><em> Charset:</em> %s (assumed)\n", + p_in->MIMEname); + } + } +#endif /* EXP_CHARTRANS */ if ((cp = HText_getServer()) != NULL && *cp != '\0') fprintf(fp0, "<dt><em> Server:</em> %s\n", cp); diff --git a/src/LYStrings.c b/src/LYStrings.c index 593dd59c..093ca774 100644 --- a/src/LYStrings.c +++ b/src/LYStrings.c @@ -9,20 +9,88 @@ #include "LYKeymap.h" #include "LYSignal.h" #include "LYClean.h" +#include "LYMail.h" +#include "LYOptions.h" #include <ctype.h> #include "LYLeaks.h" -#if !defined(FANCY_CURSES) && !defined(NO_KEYPAD) -#define NO_KEYPAD -#endif /* !FANCY_CURSES && !NO_KEYPAD */ - #define FREE(x) if (x) {free(x); x = NULL;} extern BOOL HTPassHighCtrlRaw; extern HTCJKlang HTCJK; +/* If you want to add mouse support for some new platform, it's fairly +** simple to do. Once you've determined the X and Y coordinates of +** the mouse event, loop through the elements in the links[] array and +** see if the coordinates fall within a highlighted link area. If so, +** the code must set mouse_link to the index of the chosen link, +** and return a key value that corresponds to LYK_ACTIVATE. The +** LYK_ACTIVATE code in LYMainLoop.c will then check mouse_link +** and activate that link. If the mouse event didn't fall within a +** link, the code should just set mouse_link to -1 and return -1. --AMK +**/ + +/* The number of the link selected w/ the mouse (-1 if none) */ +static int mouse_link = -1; + +/* Return the value of mouse_link, erasing it */ +PUBLIC int get_mouse_link NOARGS +{ + int t; + t=mouse_link; + mouse_link = -1; + return t; +} + +/* Given X and Y coordinates of a mouse event, set mouse_link to the +** index of the corresponding hyperlink, or set mouse_link to -1 if no +** link matches the event. Returns -1 if no link matched the click, +** or a keycode that must be returned from LYgetch() to activate the +** link. +**/ + +PRIVATE int set_clicked_link ARGS2(int,x,int,y) +{ + int i; + + /* Loop over the links and see if we can get a match */ + for(i=0; i < nlinks && mouse_link == -1; i++) { + /* Check the first line of the link */ + if ( links[i].hightext != NULL && + links[i].ly == y && + (x - links[i].lx) < strlen(links[i].hightext ) ) { + mouse_link=i; + } + /* Check the second line */ + if (links[i].hightext2 != NULL && + 1+links[i].ly == y && + (x - links[i].hightext2_offset) < strlen(links[i].hightext2) ) { + mouse_link=i; + } + } + /* If no link was found, just return a do-nothing code */ + if (mouse_link == -1) return -1; + + /* If a link was hit, we must look for a key which will activate LYK_ACTIVATE + ** XXX The 127 in the following line will depend on the size of the keymap[] + ** array. However, usually we'll find LYK_ACTIVATE somewhere in the first + ** 127 keys (it's usually mapped to the Enter key) + **/ + for (i=0; i<127; i++) { + if (LYisNonAlnumKeyname(i, LYK_ACTIVATE)) { + return i; + } + } + /* Whoops! Nothing's defined as LYK_ACTIVATE! + Well, who are we to argue with the user? + Forget about the mouse click */ + mouse_link = -1; + return -1; +} + + /* * LYstrncpy() terminates strings with a null byte. * Writes a null byte into the n+1 byte of dst. @@ -42,6 +110,44 @@ PUBLIC char * LYstrncpy ARGS3(char *,dst, char *,src, int,n) *(dst+n) = '\0'; return val; } +#ifdef EXP_CHARTRANS +/* + * LYmbcsstrncpy() terminates strings with a null byte. + * Takes acount of multibyte characters. + * src string is copied until either end of string or max number of + * either bytes or glyphs (mbcs sequences) (currently only UTF8). + */ +PUBLIC char * LYmbcsstrncpy ARGS5(char *,dst, char *,src, int,n_bytes, + int,n_glyphs, int,enc) +{ + char *val = dst; + int i_bytes = 0, i_glyphs = 0; + + if (n_bytes < 0) + n_bytes = 0; + if (n_glyphs < 0) + n_glyphs = 0; + +#define IS_NEW_GLYPH(ch) (enc && ((unsigned char)(ch)&0xc0) != 0x80) + + for (; *src != '\0' && i_bytes < n_bytes; + i_bytes++) { + if (IS_NEW_GLYPH(*src)) + if (i_glyphs++ >= n_glyphs) { + *dst = '\0'; + return val; + } + *(dst++) = *(src++); + } + *dst = '\0'; + + return val; +} +#endif /* EXP_CHARTRANS */ + +#undef GetChar + +#undef GetChar #ifdef USE_SLANG #ifdef VMS @@ -49,20 +155,39 @@ PUBLIC char * LYstrncpy ARGS3(char *,dst, char *,src, int,n) #else #define GetChar (int)SLang_getkey #endif /* VMS */ -#else /* Not slang: */ +#endif /* USE_SLANG */ + +#if !defined(GetChar) && defined(NCURSES) +#define GetChar() wgetch(my_subwindow ? my_subwindow : stdscr) +#endif + +#if !defined(GetChar) && defined(SNAKE) +#define GetChar() wgetch(stdscr) +#endif + +#if !defined(GetChar) #ifdef VMS #define GetChar() ttgetc() #else -#if defined(SNAKE) || defined(NCURSES) -#define GetChar() wgetch(stdscr) -#else /* everything but VMS, SNAKE and NCURSES */ #ifndef USE_GETCHAR #define USE_GETCHAR #endif /* !USE_GETCHAR */ #define GetChar() getchar() /* used to be "getc(stdin)" and "getch()" */ -#endif /* SNAKE || NCURSES */ #endif /* VMS */ -#endif /* USE_SLANG */ +#endif /* !defined(GetChar) */ + +#if defined(NCURSES) +/* + * Workaround a bug in ncurses order-of-refresh by setting a pointer to + * the topmost window that should be displayed. + */ +PRIVATE WINDOW *my_subwindow; + +PUBLIC void LYsubwindow ARGS1(WINDOW *, param) +{ + my_subwindow = param; +} +#endif /* * LYgetch() translates some escape sequences and may fake noecho @@ -96,6 +221,21 @@ re_read: } #endif /* !USE_SLANG || VMS */ +#ifdef DOSPATH + if (c == 0) c = '/'; + if (c > 255) { /* handle raw dos keys */ + switch (c) + { + case 464: c = '-'; break; /* keypad minus*/ + case 465: c = '+'; break; /* keypad plus*/ + case 459: c = 13; break; /* keypad enter*/ + case 463: c = '*'; break; /* keypad * */ + case 440: c = 'Q'; break; /* alt x */ + default: break; + } +// if (c < 256) return(c); + } +#endif #ifdef USE_GETCHAR if (c == EOF && errno == EINTR) /* Ctrl-Z causes EINTR in getchar() */ goto re_read; @@ -123,7 +263,9 @@ re_read: } #endif /* IGNORE_CTRL_C */ cleanup(); +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -232,10 +374,9 @@ re_read: } if (isdigit(a) && (b == '[' || c == 155) && d != -1 && d != '~') d = GetChar(); -#if defined(NO_KEYPAD) || defined(VMS) } -#else - } else { +#if HAVE_KEYPAD + else { /* convert keypad() mode keys into Lynx defined keys */ @@ -302,9 +443,24 @@ re_read: c=127; /* backspace key (delete, not Ctrl-H) */ break; #endif /* KEY_BACKSPACE */ +#ifdef NCURSES_MOUSE_VERSION + case KEY_MOUSE: + { + MEVENT event; + int err; + + c = -1; + mouse_link = -1; + err=getmouse(&event); + if (event.bstate & BUTTON1_CLICKED) { + c = set_clicked_link(event.x, event.y); + } + } + break; +#endif /* NCURSES_MOUSE_VERSION */ } } -#endif /* defined(NO_KEYPAD) || defined(VMS) */ +#endif /* defined(HAVE_KEYPAD) */ return(c); } @@ -640,8 +796,6 @@ PUBLIC void LYRefreshEdit ARGS1(EDREC *,edit) PUBLIC int LYgetstr ARGS4(char *,inputline, int,hidden, int,bufsize, int,recall) { - extern BOOLEAN term_letter; /* Flag from terminate_letter() AST */ - extern BOOLEAN term_options; /* Flag from terminate_options() AST */ extern BOOLEAN term_message; /* Flag from terminate_message() AST */ #ifdef VMS extern BOOLEAN HadVMSInterrupt; /* Flag from cleanup_sig() AST */ @@ -742,7 +896,7 @@ PUBLIC char * LYstrstr ARGS2(char *,chptr, char *,tarptr) * It ignores the characters: LY_UNDERLINE_START_CHAR and * LY_UNDERLINE_END_CHAR * LY_BOLD_START_CHAR - * LY_BOLD_END_CHAR[B + * LY_BOLD_END_CHAR * if present in chptr. * It is a case insensitive search. */ @@ -848,6 +1002,153 @@ PUBLIC char * LYno_attr_char_strstr ARGS2(char *,chptr, char *,tarptr) return(NULL); } +#ifdef EXP_CHARTRANS + +#define IS_UTFEXTRA(ch) (utf_flag && ((unsigned char)(ch)&0xc0) == 0x80) +/* + * LYno_attr_mbcs_case_strstr will find the first occurence of the string + * pointed to by tarptr in the string pointed to by chptr. + * It takes account of MultiByte Character Sequences (UTF8). + * The physical lenght of the displayed string up to the end of the target + * string is returned in *nendp if the search is successful. + * It ignores the characters: LY_UNDERLINE_START_CHAR and + * LY_UNDERLINE_END_CHAR + * LY_BOLD_START_CHAR + * LY_BOLD_END_CHAR[B + * if present in chptr. + * It assumes UTF8 if utf_flag is set. + * It is a case insensitive search. + */ +PUBLIC char * LYno_attr_mbcs_case_strstr ARGS4(char *,chptr, char *,tarptr, + BOOL, utf_flag, int *,nendp) +{ + register char *tmpchptr, *tmptarptr; + int len = 0; + + if (!chptr) + return(NULL); + + while (IsSpecialAttrChar(*chptr) && *chptr != '\0') + chptr++; + + for (; *chptr != '\0'; chptr++) { + + if (TOUPPER(*chptr) == TOUPPER(*tarptr)) { + int tarlen = 0; + len++; + + /* see if they line up */ + tmpchptr = chptr+1; + tmptarptr = tarptr+1; + + if (*tmptarptr == '\0') { /* one char target */ + *nendp = len; + return(chptr); + } + while (1) { + if (!IsSpecialAttrChar(*tmpchptr)) { + + if (TOUPPER(*tmpchptr) != TOUPPER(*tmptarptr)) + break; + + if (!IS_UTFEXTRA(*tmptarptr)) + tarlen++; + tmpchptr++; + tmptarptr++; + + } else { + tmpchptr++; + } + + if (*tmptarptr == '\0') { + *nendp = len + tarlen; + return(chptr); + } + if (*tmpchptr == '\0') + break; + } + } else if (!( IS_UTFEXTRA(*chptr) || + IsSpecialAttrChar(*chptr))) { + len++; + } + + } /* end for */ + + return(NULL); +} + +/* + * LYno_attr_mbcs_strstr will find the first occurence of the string + * pointed to by tarptr in the string pointed to by chptr. + * It takes account of MultiByte Character Sequences (UTF8). + * The physical lenght of the displayed string up to the end of the target + * string is returned in *nendp if the search is successful. + * It ignores the characters: LY_UNDERLINE_START_CHAR and + * LY_UNDERLINE_END_CHAR + * LY_BOLD_START_CHAR + * LY_BOLD_END_CHAR + * if present in chptr. + * It assumes UTF8 if utf_flag is set. + * It is a case sensitive search. + */ +PUBLIC char * LYno_attr_mbcs_strstr ARGS4(char *,chptr, char *,tarptr, + BOOL, utf_flag, int *,nendp) +{ + register char *tmpchptr, *tmptarptr; + int len = 0; + + if (!chptr) + return(NULL); + + while (IsSpecialAttrChar(*chptr) && *chptr != '\0') + chptr++; + + for (; *chptr != '\0'; chptr++) { + + if ((*chptr) == (*tarptr)) { + int tarlen = 0; + len++; + + /* see if they line up */ + tmpchptr = chptr+1; + tmptarptr = tarptr+1; + + if (*tmptarptr == '\0') { /* one char target */ + *nendp = len + 1; + return(chptr); + } + while (1) { + if (!IsSpecialAttrChar(*tmpchptr)) { + + if ((*tmpchptr) != (*tmptarptr)) + break; + + if (!IS_UTFEXTRA(*tmptarptr)) + tarlen++; + tmpchptr++; + tmptarptr++; + + } else { + tmpchptr++; + } + + if (*tmptarptr == '\0') { + *nendp = len + tarlen; + return(chptr); + } + if (*tmpchptr == '\0') + break; + } + } else if (!( IS_UTFEXTRA(*chptr) || + IsSpecialAttrChar(*chptr))) { + len++; + } + } /* end for */ + + return(NULL); +} +#endif /* EXP_CHARTRANS */ + /* Allocate a new copy of a string, and returns it */ PUBLIC char * SNACopy ARGS3 (char **,dest, CONST char *,src, int,n) diff --git a/src/LYStrings.h b/src/LYStrings.h index 508d4708..ef1afd39 100644 --- a/src/LYStrings.h +++ b/src/LYStrings.h @@ -7,6 +7,7 @@ extern char *strstr(); #endif /* __STRICT_BSD__ */ +extern int get_mouse_link NOPARAMS; extern char * LYstrncpy PARAMS((char *dst, char *src, int n)); extern int LYgetch NOPARAMS; extern int LYgetstr PARAMS((char *inputline, int hidden, @@ -14,6 +15,14 @@ extern int LYgetstr PARAMS((char *inputline, int hidden, extern char * LYstrstr PARAMS((char *chptr, char *tarptr)); extern char * LYno_attr_char_strstr PARAMS((char *chptr, char *tarptr)); extern char * LYno_attr_char_case_strstr PARAMS((char *chptr, char *tarptr)); +#ifdef EXP_CHARTRANS +extern char * LYmbcsstrncpy PARAMS((char *dst, char *src, int n_bytes, + int n_glyphs, int enc)); +extern char * LYno_attr_mbcs_strstr PARAMS((char *chptr, char *tarptr, + BOOL utf_flag, int *nendp)); +extern char * LYno_attr_mbcs_case_strstr PARAMS((char *chptr, char *tarptr, + BOOL utf_flag, int *nendp)); +#endif extern char * SNACopy PARAMS((char **dest, CONST char *src, int n)); extern char * SNACat PARAMS((char **dest, CONST char *src, int n)); diff --git a/src/LYTraversal.c b/src/LYTraversal.c index 255d8dae..1925860c 100644 --- a/src/LYTraversal.c +++ b/src/LYTraversal.c @@ -3,12 +3,12 @@ #include "LYGlobalDefs.h" #include "LYUtils.h" #include "LYSignal.h" +#include "LYTraversal.h" #include "LYexit.h" #include "LYLeaks.h" /* routines to handle special traversal feature */ -extern char *HText_getTitle(); PUBLIC BOOLEAN lookup ARGS1(char *,target) { @@ -18,7 +18,9 @@ PUBLIC BOOLEAN lookup ARGS1(char *,target) if ((ifp = fopen(TRAVERSE_FILE,"r")) == NULL) { if ((ifp = fopen(TRAVERSE_FILE,"w")) == NULL) { perror("unable to open or create a traversal file"); +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -54,7 +56,9 @@ PUBLIC void add_to_table ARGS1(char *,target) if ((ifp = fopen(TRAVERSE_FILE,"a+")) == NULL) { perror("unable to open traversal file"); +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -78,7 +82,9 @@ PUBLIC void add_to_traverse_list ARGS2(char *,fname, char *,prev_link_name) if ((ifp = fopen(TRAVERSE_FOUND_FILE,"a+")) == NULL) { perror("unable to open traversal found file"); +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); @@ -125,7 +131,9 @@ PUBLIC void add_to_reject_list ARGS1(char *,target) if ((ifp = fopen(TRAVERSE_REJECT_FILE,"a+")) == NULL) { perror("unable to open reject file"); +#ifndef NOSIGHUP (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal(SIGTERM, SIG_DFL); #ifndef VMS (void) signal(SIGINT, SIG_DFL); diff --git a/src/LYUpload.c b/src/LYUpload.c index 4bc9b190..d6cbb1c5 100644 --- a/src/LYUpload.c +++ b/src/LYUpload.c @@ -255,7 +255,7 @@ PUBLIC int LYUpload_options ARGS2 (char **,newfile, char *,directory) #endif /* VMS */ /* make the file a URL now */ -#ifdef VMS +#if defined (VMS) || defined (DOSPATH) sprintf(upload_filename,"file://localhost/%s",tempfile); #else sprintf(upload_filename,"file://localhost%s",tempfile); diff --git a/src/LYUtils.c b/src/LYUtils.c index c45b99a0..4543edca 100644 --- a/src/LYUtils.c +++ b/src/LYUtils.c @@ -10,7 +10,13 @@ #include "LYGlobalDefs.h" #include "LYSignal.h" #include "GridText.h" +#ifdef EXP_CHARTRANS +#include "LYCharSets.h" +#endif /* EXP_CHARTRANS */ +#ifdef DOSPATH +#include "HTDOS.h" +#endif #ifdef VMS #include <descrip.h> #include <libclidef.h> @@ -32,6 +38,14 @@ #endif /* UTMPX_FOR_UTMP */ #endif /* UNIX */ +#if NEED_PTEM_H +/* they neglected to define struct winsize in termios.h -- it's only in + * termio.h and ptem.h (the former conflicts with other definitions). + */ +#include <sys/stream.h> +#include <sys/ptem.h> +#endif + #include "LYLeaks.h" #ifdef SVR4_BSDSELECT @@ -99,7 +113,7 @@ PUBLIC void highlight ARGS2( */ /* start_bold(); */ start_reverse(); -#ifdef USE_SLANG +#if defined(USE_SLANG) || defined(FANCY_CURSES) start_underline (); #endif /* USE_SLANG */ } else { @@ -126,10 +140,17 @@ PUBLIC void highlight ARGS2( /* copy into the buffer only what will fit within the * width of the screen */ +#ifdef EXP_CHARTRANS + LYmbcsstrncpy(buffer,(links[cur].hightext ? + links[cur].hightext : ""), 199, + LYcols - links[cur].lx - 1, + (LYCharSet_UC[current_char_set].enc == UCT_ENC_UTF8)); +#else LYstrncpy(buffer, (links[cur].hightext ? links[cur].hightext : ""), LYcols-links[cur].lx-1); +#endif /* EXP_CHARTRANS */ addstr(buffer); } @@ -137,7 +158,7 @@ PUBLIC void highlight ARGS2( if (links[cur].hightext2 && links[cur].ly < display_lines) { if (flag == ON) { stop_reverse(); -#ifdef USE_SLANG +#if defined(USE_SLANG) || defined(FANCY_CURSES) stop_underline (); #endif /* USE_SLANG */ } else { @@ -150,7 +171,7 @@ PUBLIC void highlight ARGS2( if (flag == ON) { start_reverse(); -#ifdef USE_SLANG +#if defined(USE_SLANG) || defined(FANCY_CURSES) start_underline (); #endif /* USE_SLANG */ } else { @@ -174,7 +195,7 @@ PUBLIC void highlight ARGS2( if (flag == ON) { stop_reverse(); -#ifdef USE_SLANG +#if defined(USE_SLANG) || defined(FANCY_CURSES) stop_underline (); #endif /* USE_SLANG */ } else { @@ -295,7 +316,7 @@ PUBLIC char * strip_trailing_slash ARGS1( BOOLEAN mustshow = FALSE; PUBLIC void statusline ARGS1( - char *, text) + CONST char *, text) { char buffer[256]; unsigned char *temp = NULL; @@ -303,7 +324,7 @@ PUBLIC void statusline ARGS1( int max_length, len, i, j; unsigned char k; - if (!text || text==NULL) + if (text == NULL) return; /* @@ -406,9 +427,15 @@ PUBLIC void statusline ARGS1( } clrtoeol(); if (text != NULL) { +#ifdef COLOR_CURSES + lynx_set_color(2); + addstr(buffer); + lynx_set_color(0); +#else start_reverse(); addstr(buffer); stop_reverse(); +#endif } refresh(); @@ -437,7 +464,7 @@ PUBLIC void toggle_novice_line NOARGS } PUBLIC void noviceline ARGS1( - int, more) + int, more_flag) { if (dump_output_immediately) @@ -461,7 +488,7 @@ PUBLIC void noviceline ARGS1( addstr(novice_lines[lineno]); #ifdef NOTDEFINED - if (is_www_index && more) { + if (is_www_index && more_flag) { addstr("This is a searchable index. Use "); addstr(key_for_func(LYK_INDEX_SEARCH)); addstr(" to search:"); @@ -477,7 +504,7 @@ PUBLIC void noviceline ARGS1( } else { addstr("Type a command or ? for help:"); - if (more) { + if (more_flag) { stop_reverse(); addstr(" "); start_reverse(); @@ -534,7 +561,13 @@ PUBLIC int HTCheckForInterrupt NOARGS #endif /* USE_SLANG */ /** Keyboard 'Z' or 'z', or Control-G or Control-C **/ +#if defined (DOSPATH) && defined (NCURSES) + nodelay(stdscr,TRUE); +#endif /* DOSPATH */ c = LYgetch(); +#if defined (DOSPATH) && defined (NCURSES) + nodelay(stdscr,FALSE); +#endif /* DOSPATH */ if (TOUPPER(c) == 'Z' || c == 7 || c == 3) return((int)TRUE); @@ -822,6 +855,12 @@ PUBLIC int is_url ARGS1( while (isspace((unsigned char)*cp)) cp++; +#ifdef DOSPATH /* sorry! */ + if (strncmp(cp, "file:///", 8) && strlen(cp) == 19 && + cp[strlen(cp)-1] == ':') + StrAllocCat(cp,"/"); +#endif + if (!strncasecomp(cp, "news:", 5)) { if (strncmp(cp, "news", 4)) { for (i = 0; i < 4; i++) @@ -1193,22 +1232,16 @@ PUBLIC char * quote_pathname ARGS1( * local domain * */ -#ifdef VMS -#ifndef NO_UTMP -#define NO_UTMP -#endif /* NO_UTMP */ -#endif /* VMS */ - PUBLIC BOOLEAN inlocaldomain NOARGS { -#ifdef NO_UTMP +#if ! HAVE_UTMP return(TRUE); #else int n; FILE *fp; struct utmp me; char *cp, *mytty = NULL; - char *ttyname(); + extern char *ttyname PARAMS((int fd)); if ((cp=ttyname(0))) mytty = strrchr(cp, '/'); @@ -1237,28 +1270,29 @@ PUBLIC BOOLEAN inlocaldomain NOARGS } return(FALSE); -#endif /* NO_UTMP */ +#endif /* !HAVE_UTMP */ } /************** ** This bit of code catches window size change signals **/ -#if defined(VMS) || defined(SNAKE) -#define NO_SIZECHANGE -#endif /* VMS || SNAKE */ - -#if !defined(VMS) && !defined(ISC) +#if !defined(VMS) && !defined(ISC) && !defined(DOSPATH) #include <sys/ioctl.h> #endif /* !VMS && !ISC */ -#ifdef HAVE_TERMIOS_H -#include <termios.h> +/* For systems that have both, but both can't be included, duh */ +#ifdef TERMIO_AND_TERMIOS +# include <termio.h> #else -#ifdef HAVE_TERMIO_H -#include <termio.h> -#endif /* HAVE_TERMIO_H */ -#endif /* HAVE_TERMIOS_H */ +# ifdef HAVE_TERMIOS_H +# include <termios.h> +# else +# ifdef HAVE_TERMIO_H +# include <termio.h> +# endif /* HAVE_TERMIO_H */ +# endif /* HAVE_TERMIOS_H */ +#endif /* TERMIO_AND_TERMIOS */ PUBLIC void size_change ARGS1( int, sig) @@ -1267,13 +1301,17 @@ PUBLIC void size_change ARGS1( SLtt_get_screen_size(); LYlines = SLtt_Screen_Rows; LYcols = SLtt_Screen_Cols; +#ifdef SLANG_MBCS_HACK + PHYSICAL_SLtt_Screen_Cols = LYcols; + SLtt_Screen_Cols = LYcols * 6; +#endif /* SLANG_MBCS_HACK */ if (sig == 0) /* * Called from start_curses(). */ return; #else /* Curses: */ -#ifndef NO_SIZECHANGE +#if HAVE_SIZECHANGE #ifdef TIOCGSIZE struct ttysize win; #else @@ -1303,7 +1341,7 @@ PUBLIC void size_change ARGS1( } #endif /* TIOCGWINSZ */ #endif /* TIOCGSIZE */ -#endif /* !NO_SIZECHANGE */ +#endif /* HAVE_SIZECHANGE */ if (LYlines <= 0) LYlines = 24; @@ -1399,9 +1437,9 @@ PUBLIC void change_sug_filename ARGS1( /*** rename any temporary files ***/ temp = (char *)calloc(1, (strlen(lynx_temp_space) + 60)); if (*lynx_temp_space == '/') - sprintf(temp, "file://localhost%sL%d", lynx_temp_space, getpid()); + sprintf(temp, "file://localhost%sL%d", lynx_temp_space, (int)getpid()); else - sprintf(temp, "file://localhost/%sL%d", lynx_temp_space, getpid()); + sprintf(temp, "file://localhost/%sL%d", lynx_temp_space, (int)getpid()); len = strlen(temp); if (0==strncmp(fname, temp, len)) { cp = strrchr(fname, '.'); @@ -1603,10 +1641,10 @@ PUBLIC void tempname ARGS2( if (action == REMOVE_FILES) { /* REMOVE ALL FILES */ for (; counter > 0; counter--) { sprintf(namebuffer, "%sL%d%uTMP.txt", lynx_temp_space, - getpid(), counter-1); + (int)getpid(), counter-1); remove(namebuffer); sprintf(namebuffer, "%sL%d%uTMP.html", lynx_temp_space, - getpid(), counter-1); + (int)getpid(), counter-1); remove(namebuffer); } } else /* add a file */ { @@ -1614,7 +1652,7 @@ PUBLIC void tempname ARGS2( * Create name */ sprintf(namebuffer, "%sL%d%uTMP.html", lynx_temp_space, - getpid(), counter++); + (int)getpid(), counter++); } return; } @@ -2010,11 +2048,30 @@ PUBLIC void LYConvertToURL ARGS1( if (!old_string || *old_string == '\0') return; - *AllocatedString = NULL; /* so StrAllocCopy doesn't free it */ +#ifdef DOSPATH +{ + char *cp_url = *AllocatedString; + for(; *cp_url != '\0'; cp_url++) + if(*cp_url == '\\') *cp_url = '/'; + cp_url--; + if(*cp_url == ':') + StrAllocCat(*AllocatedString,"/"); +#ifdef NOTDEFINED + if(strlen(old_string) > 3 && *cp_url == '/') + *cp_url = '\0'; +#endif +} +#endif + + *AllocatedString = NULL; /* so StrAllocCopy doesn't free it */ + StrAllocCopy(*AllocatedString,"file://localhost"); if (*old_string != '/') { char *fragment = NULL; +#ifdef DOSPATH + StrAllocCat(*AllocatedString,"/"); +#endif /* DOSPATH */ #ifdef VMS /* * Not a SHELL pathspec. Get the full VMS spec and convert it. @@ -2178,6 +2235,22 @@ have_VMS_URL: fprintf(stderr, "Trying: '%s'\n", *AllocatedString); } #else /* Unix: */ +#ifdef DOSPATH + if (strlen(old_string) == 1 && *old_string == '.') { + /* + * They want . + */ + char curdir[DIRNAMESIZE]; + getcwd (curdir, DIRNAMESIZE); + StrAllocCopy(temp, HTDOS_wwwName(curdir)); + StrAllocCat(*AllocatedString, temp); + FREE(temp); + if (TRACE) { + fprintf(stderr, "Converted '%s' to '%s'\n", + old_string, *AllocatedString); + } + } else +#endif /* DOSPATH */ if (*old_string == '~') { /* * On Unix, covert '~' to Home_Dir(). @@ -2206,18 +2279,28 @@ have_VMS_URL: struct stat st; FILE *fptemp = NULL; BOOL is_local = FALSE; -#ifdef NO_GETCWD - getwd (curdir); -#else +#if HAVE_GETCWD getcwd (curdir, DIRNAMESIZE); +#else + getwd (curdir); #endif /* NO_GETCWD */ /* * Concatenate and simplify, trimming any * residual relative elements. - FM */ +#ifndef DOSPATH StrAllocCopy(temp, curdir); StrAllocCat(temp, "/"); StrAllocCat(temp, old_string); +#else + if (old_string[1] != ':' && old_string[1] != '|') + { + StrAllocCopy(temp, HTDOS_wwwName(curdir)); + if(curdir[strlen(curdir)-1] != '/') + StrAllocCat(temp, "/"); + StrAllocCat(temp, old_string); + } else StrAllocCopy(temp, old_string); +#endif /* DOSPATH */ LYTrimRelFromAbsPath(temp); if (TRACE) { fprintf(stderr, "Converted '%s' to '%s'\n", old_string, temp); @@ -2246,7 +2329,7 @@ have_VMS_URL: * appended to the URL. - FM */ if (fragment != NULL) { - *fragment = '#'; + *fragment = '#'; fragment = NULL; } StrAllocCat(*AllocatedString, temp); @@ -2454,7 +2537,11 @@ PUBLIC BOOLEAN LYExpandHostForURL ARGS3( } else if (Startup && !dump_output_immediately) { fprintf(stdout, "Looking up '%s' first.\n", host); } +#ifndef DJGPP if ((phost = gethostbyname(host)) != NULL) { +#else + if (resolve(host) != 0) { +#endif /* DJGPP */ GotHost = TRUE; FREE(host); FREE(Str); @@ -2541,7 +2628,11 @@ PUBLIC BOOLEAN LYExpandHostForURL ARGS3( } else if (Startup && !dump_output_immediately) { fprintf(stdout, "Looking up '%s', guessing...\n", host); } +#ifndef DJGPP GotHost = ((phost = gethostbyname(host)) != NULL); +#else + GotHost = (resolve(host) != 0); +#endif /* DJGPP */ if (HostColon != NULL) { *HostColon = ':'; } @@ -2876,6 +2967,12 @@ PUBLIC CONST char * Home_Dir NOARGS if (!homedir) { if ((homedir = getenv("HOME")) == NULL) { +#ifdef DOSPATH /* BAD! WSB */ + if ((homedir = getenv("TEMP")) == NULL) { + if ((homedir = getenv("TMP")) == NULL) + homedir = "C:\\"; + } +#else #ifdef VMS if ((homedir = getenv("SYS$LOGIN")) == NULL) { if ((homedir = getenv("SYS$SCRATCH")) == NULL) @@ -2895,6 +2992,7 @@ PUBLIC CONST char * Home_Dir NOARGS homedir = "/tmp"; } #endif /* VMS */ +#endif /* DOSPATH */ } } return homedir; @@ -3192,7 +3290,7 @@ PUBLIC time_t LYmktime ARGS1( char *, string) { char *s; - time_t now, clock; + time_t now, clock2; int day, month, year, hour, minutes, seconds; char *start; char temp[8]; @@ -3394,20 +3492,20 @@ PUBLIC time_t LYmktime ARGS1( } day += (year - 1968)*1461/4; day += ((((month*153) + 2)/5) - 672); - clock = (time_t)((day * 60 * 60 * 24) + + clock2 = (time_t)((day * 60 * 60 * 24) + (hour * 60 * 60) + (minutes * 60) + seconds); - if (clock <= time(NULL)) - clock = (time_t)0; - if (TRACE && clock > 0) + if (clock2 <= time(NULL)) + clock2 = (time_t)0; + if (TRACE && clock2 > 0) fprintf(stderr, - "LYmktime: clock=%i, ctime=%s", clock, ctime(&clock)); + "LYmktime: clock=%i, ctime=%s", clock2, ctime(&clock2)); - return(clock); + return(clock2); } -#ifdef NO_PUTENV +#if ! HAVE_PUTENV /* no putenv on the next so we use this code instead! */ @@ -3506,4 +3604,11 @@ PUBLIC int putenv ARGS1( return 0; } -#endif /* NO_PUTENV */ +#endif /* !HAVE_PUTENV */ + +#ifdef NEED_REMOVE +int remove ARGS1(char *, name) +{ + return unlink(name); +} +#endif diff --git a/src/LYUtils.h b/src/LYUtils.h index ea5bebc1..477504d6 100644 --- a/src/LYUtils.h +++ b/src/LYUtils.h @@ -13,9 +13,9 @@ extern void free_and_clear PARAMS((char **obj)); extern void collapse_spaces PARAMS((char *string)); extern void convert_to_spaces PARAMS((char *string, BOOL condense)); extern char * strip_trailing_slash PARAMS((char * dirname)); -extern void statusline PARAMS((char *text)); +extern void statusline PARAMS((CONST char *text)); extern void toggle_novice_line NOPARAMS; -extern void noviceline PARAMS((int more)); +extern void noviceline PARAMS((int more_flag)); extern int HTCheckForInterrupt NOPARAMS; extern BOOLEAN LYisLocalFile PARAMS((char *filename)); extern BOOLEAN LYisLocalHost PARAMS((char *filename)); @@ -53,9 +53,9 @@ extern BOOLEAN LYPathOffHomeOK PARAMS((char *fbuffer, int fbuffer_size)); extern void LYAddPathToHome PARAMS(( char *fbuffer, int fbuffer_size, char *fname)); extern time_t LYmktime PARAMS((char *string)); -#ifdef NO_PUTENV +#if ! HAVE_PUTENV extern int putenv PARAMS((CONST char *string)); -#endif /* NO_PUTENV */ +#endif /* HAVE_PUTENV */ /* * Whether or not the status line must be shown. diff --git a/src/LYexit.c b/src/LYexit.c index 0429c017..7d737606 100644 --- a/src/LYexit.c +++ b/src/LYexit.c @@ -19,7 +19,7 @@ /* * Stack of functions to call upon exit. */ -PRIVATE void (*callstack[ATEXITSIZE])(); +PRIVATE void (*callstack[ATEXITSIZE]) NOPARAMS; PRIVATE int topOfStack = 0; /* @@ -45,15 +45,22 @@ PUBLIC void LYexit ARGS1( int, status) { #ifndef VMS /* On VMS, the VMSexit() handler does these. - FM */ +#ifdef _WINDOWS + WSACleanup(); +#endif if (LYOutOfMemory == TRUE) { /* * Ignore further interrupts. - FM */ - (void) signal (SIGHUP, SIG_IGN); +#ifndef NOSIGHUP + (void) signal(SIGHUP, SIG_DFL); +#endif /* NOSIGHUP */ (void) signal (SIGTERM, SIG_IGN); (void) signal (SIGINT, SIG_IGN); #ifndef __linux__ +#ifndef DOSPATH (void) signal(SIGBUS, SIG_IGN); +#endif /* DOSPATH */ #endif /* !__linux__ */ (void) signal(SIGSEGV, SIG_IGN); (void) signal(SIGILL, SIG_IGN); @@ -72,7 +79,9 @@ PUBLIC void LYexit ARGS1( } cleanup_sig(0); #ifndef __linux__ +#ifndef DOSPATH signal(SIGBUS, SIG_DFL); +#endif /* DOSPATH */ #endif /* !__linux__ */ signal(SIGSEGV, SIG_DFL); signal(SIGILL, SIG_DFL); @@ -117,7 +126,7 @@ PUBLIC void LYexit ARGS1( * 06-15-94 created Lynx 2-3-1 Garrett Arch Blythe */ #ifdef __STDC__ -PUBLIC int LYatexit(void (*function)()) +PUBLIC int LYatexit(void (*function)(void)) #else /* Not ANSI, ugh! */ PUBLIC int LYatexit(function) void (*function)(); diff --git a/src/LYrcFile.c b/src/LYrcFile.c index 4d59e861..a67a64e8 100644 --- a/src/LYrcFile.c +++ b/src/LYrcFile.c @@ -18,18 +18,22 @@ PUBLIC void read_rc NOPARAMS char *cp, *cp2; int number_sign; char MBM_line[256]; - int MBM_counter, MBM_counter2; - char *MBM_cp, *MBM_cp2, *MBM_cp1; - int MBM_i1, MBM_i2; + int MBM_counter; + char *MBM_cp2, *MBM_cp1; + int MBM_i2; /* * Make an RC file name. */ +#ifdef DJGPP + sprintf(rcfile, "%s/lynx.rc", Home_Dir()); +#else #ifdef VMS sprintf(rcfile, "sys$login:.lynxrc"); #else sprintf(rcfile, "%s/.lynxrc", Home_Dir()); #endif /* VMS */ +#endif /* DJGPP */ /* * Open the RC file for reading. @@ -471,11 +475,15 @@ PUBLIC int save_rc NOPARAMS /* * Make a name. */ +#ifdef DJGPP + sprintf(rcfile, "%s/lynx.rc", Home_Dir()); +#else #ifdef VMS sprintf(rcfile, "sys$login:.lynxrc"); #else sprintf(rcfile, "%s/.lynxrc", Home_Dir()); #endif /* VMS */ +#endif /* DJGPP */ /* * Open the file for write. diff --git a/src/Makefile b/src/Makefile index 73e271b9..e11132e1 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,3 +1,6 @@ +SHELL = /bin/sh + +CHARTRANS_OBJS=UCdomap.o UCAux.o UCAuto.o OBJS= LYClean.o LYShowInfo.o LYEdit.o LYStrings.o \ LYMail.o HTAlert.o GridText.o LYGetFile.o \ LYMain.o LYMainLoop.o LYCurses.o LYBookmark.o LYUtils.o \ @@ -5,13 +8,14 @@ LYOptions.o LYReadCFG.o LYSearch.o LYHistory.o \ LYForms.o LYPrint.o LYrcFile.o LYDownload.o LYNews.o LYKeymap.o \ HTML.o HTFWriter.o HTInit.o DefaultStyle.o LYLocal.o LYUpload.o \ LYLeaks.o LYexit.o LYJump.o LYList.o LYCgi.o LYTraversal.o \ -LYEditmap.o LYCharSets.o LYCharUtils.o LYMap.o LYCookie.o +LYEditmap.o LYCharSets.o LYCharUtils.o LYMap.o LYCookie.o \ + $(CHARTRANS_OBJS) CFLAGS= $(MCFLAGS) -I.. $(SLANGINC) all: lynx -lynx: message $(OBJS) $(WWWLIB) +lynx: message do_chartrans_stuff $(OBJS) $(WWWLIB) @echo "Linking and creating Lynx executable" $(CC) $(CFLAGS) -o lynx $(OBJS) $(WWWLIB) $(SLANGLIB) $(LIBS) @echo "Copying Lynx executable into this directory" @@ -21,6 +25,9 @@ lynx: message $(OBJS) $(WWWLIB) message: @echo "Compiling Lynx sources" +do_chartrans_stuff: + -cd chrtrans; $(MAKE) MCFLAGS="$(MCFLAGS)" CC="$(CC)" tables + dbg: $(OBJS) $(WWWLIB) @echo "Making Lynx code" $(CC) -g $(OBJS) $(CFLAGS) $(WWWLIB) $(SLANGLIB) $(LIBS) @@ -30,6 +37,7 @@ lint: clean: rm -f lynx core *.[ob] + cd chrtrans && $(MAKE) clean LYMain.o: ../userdefs.h LYMainLoop.o: ../userdefs.h @@ -45,4 +53,37 @@ HTInit.o: ../userdefs.h LYTraversal.o: ../userdefs.h LYMail.o: ../userdefs.h LYCharSets.o: ../userdefs.h + +CHRTR= chrtrans/ + +TABLES= $(CHRTR)iso02_uni.h \ + $(CHRTR)iso01_uni.h \ + $(CHRTR)def7_uni.h \ + $(CHRTR)iso03_uni.h \ + $(CHRTR)iso04_uni.h \ + $(CHRTR)iso05_uni.h \ + $(CHRTR)iso07_uni.h \ + $(CHRTR)iso09_uni.h \ + $(CHRTR)iso10_uni.h \ + $(CHRTR)koi8r_uni.h \ + $(CHRTR)cp437_uni.h \ + $(CHRTR)cp850_uni.h \ + $(CHRTR)cp852_uni.h \ + $(CHRTR)cp1250_uni.h \ + $(CHRTR)cp1252_uni.h \ + $(CHRTR)utf8_uni.h \ + $(CHRTR)rfc_suni.h \ + $(CHRTR)mnemonic_suni.h \ + $(CHRTR)mnem_suni.h + +CMN=../WWW/Library/Implementation/ + +$(TABLES): + -cd chrtrans; $(MAKE) tables + +UCdomap.o: UCdomap.c chrtrans/UCkd.h chrtrans/makeuctb chrtrans/makeuctb.c \ + UCdomap.h $(CMN)UCMap.h $(TABLES) ../userdefs.h + $(CC) -c $(CFLAGS) -o $@ $< + +UCAux.o : UCAux.c $(CMN)UCAux.h $(CMN)UCDefs.h LYCookie.o: ../userdefs.h diff --git a/src/UCAuto.c b/src/UCAuto.c new file mode 100644 index 00000000..ec267f26 --- /dev/null +++ b/src/UCAuto.c @@ -0,0 +1,215 @@ +#ifdef EXP_CHARTRANS +#ifdef EXP_CHARTRANS_AUTOSWITCH +#ifdef LINUX + +/* This file contains code for changing the Linux console mode. +** Currently some names for font files are hardwired in here. +** You have to change this code if it needs accomodation for your +** system (or get the required files...). +** +** Depending on the Display Character Set switched to, and the previous +** one as far as it is known, system("setfont ...") and/or output of +** escape sequences to switch console mode are done. Curses will be +** temporarily suspended while that happens. +** +** NOTE that the setfont calls will also affect all other virtual consoles. +** +** Any ideas how to do this for other systems? +*/ +#include "tcp.h" +#include "HTUtils.h" +#include "UCMap.h" +#include "UCDefs.h" +#include "UCAuto.h" +#include "LYGlobalDefs.h" + +typedef enum {Is_Unset, Is_Set, Dunno, Dont_Care} TGen_state_t; +typedef enum {G0, G1} TGNstate_t; +typedef enum +{ + GN_Blat1, GN_0decgraf, GN_Ucp437, GN_Kuser, GN_dunno, GN_dontCare +} TTransT_t; + +static char T_font_fn[100] = "\0"; +static char T_umap_fn[100] = "\0"; +static char T_setfont_cmd[200] = "\0"; +#define SETFONT "setfont" +#define NOOUTPUT "2>/dev/null" + +PRIVATE void call_setfont ARGS3(char *,font, char *,fnsuffix, char *,umap) +{ + if (font && *font && umap && *umap && + 0==strcmp(font,T_font_fn) && 0==strcmp(umap,T_umap_fn)) { + return; /* no need to repeat */ + } + if (font) + strcpy(T_font_fn, font); + if (umap) + strcpy(T_umap_fn, umap); + + if (!*fnsuffix) + fnsuffix = ""; + + if (umap &&*umap && font && *font) { + sprintf(T_setfont_cmd, "%s %s%s -u %s %s", + SETFONT, font, fnsuffix, umap, NOOUTPUT); + } else if (font && *font) { + sprintf(T_setfont_cmd, "%s %s%s %s", + SETFONT, font, fnsuffix, NOOUTPUT); + } else if (umap && *umap) { + sprintf(T_setfont_cmd, "%s -u %s %s", + SETFONT, umap, NOOUTPUT); + } else { + *T_setfont_cmd = '\0'; + } + + if (*T_setfont_cmd) { + system(T_setfont_cmd); + } +} + +/* This is the thing that actually gets called from display_page(). */ + +PUBLIC void UCChangeTerminalCodepage ARGS2(int, newcs, LYUCcharset *,p) +{ + static int lastcs = -1; + static char * lastname = NULL; + static TGNstate_t lastGN = G0; + static TTransT_t lastTransT = GN_dunno; + static TGen_state_t lastUtf = Dunno; + static TGen_state_t lastHasUmap = Dunno; + + char * name = p->MIMEname; + TGNstate_t GN = G0; + TTransT_t TransT = GN_dunno; + TGen_state_t Utf = Dunno; + TGen_state_t HasUmap = Dunno; + + char tmpbuf1[100], tmpbuf2[20]; + char *cp; + +/* Font sizes are currently hardwired here... */ +#define SUFF1 ".f16" +#define SUFF2 "-16.psf" +#define SUFF3 "-8x16" +#define SUFF4 "8x16" + +/* use this for output of escape sequences... */ +/* for some reason stdout won't do... maybe needs flush() somewhere.. */ +#define ESCOUT stderr + +#ifdef VMS +#define DISPLAY "DECW$DISPLAY" +#else +#define DISPLAY "DISPLAY" +#endif /* VMS */ + + if (display || (cp = getenv(DISPLAY)) != NULL) { + /* We won't do anything in an xterm. Better that way... */ + return; + } + + if (0==strcmp(name,"iso-8859-10")) { + call_setfont("iso10", SUFF1, "iso10.uni"); + TransT = GN_Kuser; + HasUmap = Is_Set; + Utf = Is_Unset; + } else if (0==strncmp(name,"iso-8859-1",10)) { + if ((lastHasUmap==Is_Set) && 0==strcmp(lastname,"cp850")) { + /* cp850 already contains all latin1 characters */ + if (lastTransT != GN_Blat1) + TransT = GN_Blat1; + } else { + call_setfont("lat1u", SUFF2, "lat1u.uni"); + /* "setfont lat1u-16.psf -u lat1u.uni" */ + HasUmap = Is_Set; + if (lastTransT != GN_Blat1) + TransT = GN_Blat1; + } + Utf = Is_Unset; + } else if (0==strcmp(name,"iso-8859-2")) { +/* call_setfont("lat2", SUFF2, "lat2.uni"); */ + /* "setfont lat2-16.psf -u lat2.uni" */ + call_setfont("iso02", SUFF1, "iso02.uni"); + /* "setfont iso02.f16 -u iso02.uni" */ + TransT = GN_Kuser; + HasUmap = Is_Set; + Utf = Is_Unset; + } else if (0==strncmp(name,"iso-8859-",9)) { + sprintf(tmpbuf1, "iso0%s", &name[9]); + sprintf(tmpbuf2, "iso0%s%s", &name[9],".uni"); + call_setfont(tmpbuf1,SUFF1, tmpbuf2); + /* "setfont iso0N.f16 -u iso0N.uni" */ + TransT = GN_Kuser; + HasUmap = Is_Set; + Utf = Is_Unset; + } else if (0==strcmp(name,"koi8-r")) { + call_setfont("koi8", SUFF3, NULL); + TransT = GN_Kuser; + HasUmap = Is_Unset; + Utf = Is_Unset; + } else if (0==strcmp(name,"cp437")) { + call_setfont("default", SUFF4 , "cp437.uni"); + /* "setfont default8x16 -u cp437.uni" */ + if (TransT == GN_Kuser || TransT == GN_Ucp437) + TransT = GN_dontCare; + else + TransT = GN_Ucp437; + HasUmap = Is_Set; + Utf = Is_Unset; + } else if (0==strcmp(name,"cp850")) { + call_setfont("cp850" ,SUFF3 , "cp850.uni"); + /* "setfont cp850-8x16 -u cp850.uni" */ + TransT = GN_Kuser; + HasUmap = Is_Set; + Utf = Is_Unset; + } else if (0==strcmp(name,"x-transparent")) { + Utf = Dont_Care; + } else if (0==strcmp(name,"us-ascii")) { + Utf = Dont_Care; + } else if (0==strncmp(name,"mnem",4)) { + Utf = Dont_Care; + } + + if (TransT != lastTransT) { + if (TransT == GN_Blat1) { + fprintf(ESCOUT,"\033(B"); /* switch Linux console to lat1 table */ + } else if (TransT == GN_0decgraf) { + fprintf(ESCOUT,"\033(0"); + } else if (TransT == GN_Ucp437) { + fprintf(ESCOUT,"\033(U"); /* switch Linux console to 437 table? */ + } else if (TransT == GN_Kuser) { + fprintf(ESCOUT,"\033(K"); /* switch Linux console to user table */ + } + if (TransT != GN_dunno && TransT != GN_dontCare) { + lastTransT = TransT; + } else { + TransT = lastTransT; + } + } + + if (HasUmap != Dont_Care && HasUmap != Dunno) + lastHasUmap = HasUmap; + + if (p->enc == UCT_ENC_UTF8) { + if (lastUtf != Is_Set) { + Utf = Is_Set; + fprintf(ESCOUT,"\033%%G"); /* turn Linux console UTF8 mode ON */ + lastUtf = Utf; + } + return; + } else if (lastUtf == Is_Set && Utf != Dont_Care) { + Utf = Is_Unset; + fprintf(ESCOUT,"\033%%@"); /* turn Linux console UTF8 mode OFF */ + lastUtf = Utf; + } + + if (Utf != Dont_Care && Utf != Dunno) + lastUtf = Utf; + + lastcs = newcs; + lastname = name; +} +#endif /* LINUX */ +#endif /* EXP_CHARTRANS_AUTOSWITCH */ +#endif /* EXP_CHARTRANS */ diff --git a/src/UCAuto.h b/src/UCAuto.h new file mode 100644 index 00000000..3f43e0c7 --- /dev/null +++ b/src/UCAuto.h @@ -0,0 +1 @@ +extern void UCChangeTerminalCodepage PARAMS((int newcs, LYUCcharset * p)); diff --git a/src/UCAux.c b/src/UCAux.c new file mode 100644 index 00000000..cca77ebc --- /dev/null +++ b/src/UCAux.c @@ -0,0 +1,213 @@ +#ifdef EXP_CHARTRANS +#include "HTUtils.h" +#include "tcp.h" + +#include "HTCJK.h" +#include "UCDefs.h" +#include "HTStream.h" +#include "UCAux.h" + +extern HTCJKlang HTCJK; +extern LYUCcharset LYCharSet_UC[]; + +PUBLIC BOOL UCCanUniTranslateFrom ARGS1(int, from) +{ + if (from < 0) + return NO; + if (LYCharSet_UC[from].enc == UCT_ENC_7BIT || + LYCharSet_UC[from].enc == UCT_ENC_UTF8) + return YES; + if (LYCharSet_UC[from].codepoints & (UCT_CP_SUBSETOF_LAT1)) + return YES; + return (LYCharSet_UC[from].UChndl >= 0); +} +PUBLIC BOOL UCCanTranslateUniTo ARGS1(int, to) +{ + if (to < 0) + return NO; + return YES; /* well at least some characters... */ +} +PUBLIC BOOL UCCanTranslateFromTo ARGS2(int, from, int, to) +{ + if (from==to) + return YES; + if (from < 0 || to < 0) + return NO; + if (from==0) + return UCCanTranslateUniTo(to); + if (to==0) + return UCCanUniTranslateFrom(from); + if (LYCharSet_UC[to].enc == UCT_ENC_UTF8) { + return (LYCharSet_UC[from].UChndl >= 0); + } + { + char * fromname = LYCharSet_UC[from].MIMEname; + char * toname = LYCharSet_UC[to].MIMEname; + if (0==strcmp(fromname,"x-transparent") || + 0==strcmp(toname,"x-transparent")) { + return YES; + } + if (LYCharSet_UC[from].enc == UCT_ENC_CJK) { + if (HTCJK == NOCJK) /* use that global flag, for now */ + return NO; + if (HTCJK == JAPANESE && ( + 0==strcmp(fromname,"euc-jp") || + 0==strncmp(fromname,"iso-2022-jp",11) || + 0==strcmp(fromname,"shift_jis") + )) + return YES; + return NO; /* if not handled by (from==to) above */ + } + if (0==strcmp(fromname,"koi8-r")) { + /* will try to uses stripping of high bit... */ + return YES; + } + + if (0==strcmp(fromname,"koi8-r") || /* from cyrillic */ + 0==strcmp(fromname,"iso-8859-5") || + 0==strcmp(fromname,"koi-8")) { + if (0!=strcmp(toname,"iso-8859-5") && + 0!=strcmp(toname,"koi8-r") && + 0!=strcmp(toname,"iso-8859-2")) + return NO; + } + } + return (LYCharSet_UC[from].UChndl >= 0); +} + +/* The idea here is that any stage of the stream pipe which is interested +** in some charset dependent processing will call this function. +** Given input and ouptput charsets, this function will set various flags +** in a UCTransParams structure that _suggest_ to the caller what to do. +** +** Should be called once when a stage starts processing text (and the +** input and output charsets are known), or whenever one of input or +** output charsets has changed (e.g. by SGML.c stage after HTML.c stage +** has processed a META tag). +** The global flags (LYRawMode, HTPassEightBitRaw etc.) are currently +** not taken into account here, it's still up to the caller to do something +** about them. +*/ +PUBLIC void UCSetTransParams ARGS5( + UCTransParams *, pT, + int, cs_in, + CONST LYUCcharset*, p_in, + int, cs_out, + CONST LYUCcharset*, p_out + ) +{ + pT->transp = (0==strcmp(p_in->MIMEname,"x-transparent") || + 0==strcmp(p_out->MIMEname,"x-transparent")); + if (pT->transp) { + pT->do_cjk = FALSE; + pT->decode_utf8 = FALSE; + pT->output_utf8 = FALSE; /* we may, but won't know about it */ + pT->do_8bitraw = TRUE; + pT->use_raw_char_in = TRUE; + pT->strip_raw_char_in = FALSE; + pT->pass_160_173_raw = TRUE; + } else { + BOOL intm_ucs = FALSE; + BOOL use_ucs = FALSE; + pT->do_cjk = ((p_in->enc == UCT_ENC_CJK) && (HTCJK != NOCJK)); + pT->decode_utf8 = (p_in->enc == UCT_ENC_UTF8); + pT->output_utf8 = (p_out->enc == UCT_ENC_UTF8); + if (pT->do_cjk) { + intm_ucs = FALSE; + pT->trans_to_uni = FALSE; + use_ucs = FALSE; + pT->do_8bitraw = FALSE; + pT->pass_160_173_raw = TRUE; + pT->use_raw_char_in = FALSE; /* not used for CJK */ + pT->trans_from_uni = FALSE; /* not used for CJK */ + } else { + intm_ucs = ( + cs_in == 0 || pT->decode_utf8 || + (p_in->codepoints & (UCT_CP_SUBSETOF_LAT1|UCT_CP_SUBSETOF_UCS2)) + ); + pT->trans_to_uni = (!intm_ucs && + UCCanUniTranslateFrom(cs_in)); + pT->strip_raw_char_in = + ((!intm_ucs || + (p_out->enc==UCT_ENC_7BIT) || + (p_out->repertoire & UCT_REP_SUBSETOF_LAT1)) && + cs_in != cs_out && + 0==strcmp(p_in->MIMEname,"koi8-r")); + use_ucs = (intm_ucs || pT->trans_to_uni); + pT->do_8bitraw = (!use_ucs); + pT->pass_160_173_raw = (!use_ucs && + !(p_in->like8859 & UCT_R_8859SPECL) + ); + pT->use_raw_char_in = (!pT->output_utf8 && cs_in == cs_out); + pT->trans_from_uni = (use_ucs && !pT->do_8bitraw && + !pT->use_raw_char_in && + UCCanTranslateUniTo(cs_out)); + } + } +} + +PUBLIC void UCTransParams_clear ARGS1( + UCTransParams *, pT) +{ + pT->transp = FALSE; + pT->do_cjk = FALSE; + pT->decode_utf8 = FALSE; + pT->output_utf8 = FALSE; + pT->do_8bitraw = FALSE; + pT->use_raw_char_in = FALSE; + pT->strip_raw_char_in = FALSE; + pT->pass_160_173_raw = FALSE; + pT->trans_to_uni = FALSE; + pT->trans_from_uni = FALSE; +} + +/* Given an output target HTStream* (can also be a HTStructured* via typecast), +** the target stream's put_character method, and a unicode character, +** CPutUtf8_charstring() will either output the UTF8 encoding of the unicode +** and return YES, or do nothing and return NO (if conversion would be +** unnecessary or the unicode character is considered invalid). +** +** [Could be used more generally, but is currently only used for &#nnnnn +** stuff - generation of UTF8 from 8-bit encoded charsets not yet done +** by SGML.c etc.] +*/ +#define PUTC(ch) ((*myPutc)(target, (char)(ch))) +#define PUTC2(ch) ((*myPutc)(target,(char)(0x80|(0x3f &(ch))))) + +PUBLIC BOOL UCPutUtf8_charstring ARGS3( + HTStream *, target, + putc_func_t *, myPutc, + long, code) +{ + if (code < 128) + return NO; /* indicate to caller we didn't handle it */ + else if (code < 0x800L) { + PUTC(0xc0 | (code>>6)); + PUTC2(code); + } else if (code < 0x10000L) { + PUTC(0xe0 | (code>>12)); + PUTC2(code>>6); + PUTC2(code); + } else if (code < 0x200000L) { + PUTC(0xf0 | (code>>18)); + PUTC2(code>>12); + PUTC2(code>>6); + PUTC2(code); + } else if (code < 0x4000000L) { + PUTC(0xf8 | (code>>24)); + PUTC2(code>>18); + PUTC2(code>>12); + PUTC2(code>>6); + PUTC2(code); + } else if (code<=0x7fffffffL) { + PUTC(0xfc | (code>>30)); + PUTC2(code>>24); + PUTC2(code>>18); + PUTC2(code>>12); + PUTC2(code>>6); + PUTC2(code); + } else + return NO; + return YES; +} +#endif /* EXP_CHARTRANS */ diff --git a/src/UCdomap.c b/src/UCdomap.c new file mode 100644 index 00000000..473fe181 --- /dev/null +++ b/src/UCdomap.c @@ -0,0 +1,1386 @@ +/* + * UCmap.c + * - K&R compatibility macros not (yet?) done - + * + * Derived from code in the Linux kernel console driver. + * The GNU Public Licence therefore applies, see + * the file COPYING in the about_lynx directory + * which should come with every Lynx distribution. + * + * [ original comment: -kw ] + * + * Mapping from internal code (such as Latin-1 or Unicode or IBM PC code) + * to font positions. + * + * aeb, 950210 + */ + +#include "chrtrans/UCkd.h" +#include "tcp.h" +#include "HTMLDTD.h" +#include "HTAAUtil.h" /* defines FREE */ +#include "HTAtom.h" /* for use by UC_setup_LYCharSets_repl() */ +#include "LYGlobalDefs.h" +#include "LYCharSets.h" +#include "UCdomap.h" +#include "UCMap.h" +#include "UCDefs.h" + + /* Include hash tables & parameters */ +#include "chrtrans/def7_uni.h" +#include "chrtrans/iso01_uni.h" +#include "chrtrans/iso02_uni.h" +#include "chrtrans/iso03_uni.h" +#include "chrtrans/iso04_uni.h" +#include "chrtrans/iso05_uni.h" +#include "chrtrans/iso07_uni.h" +#include "chrtrans/iso09_uni.h" +#include "chrtrans/iso10_uni.h" +#include "chrtrans/koi8r_uni.h" +#include "chrtrans/cp437_uni.h" +#include "chrtrans/cp850_uni.h" +#include "chrtrans/cp852_uni.h" +#include "chrtrans/cp1250_uni.h" +#include "chrtrans/cp1252_uni.h" +#include "chrtrans/utf8_uni.h" +#include "chrtrans/rfc_suni.h" +#include "chrtrans/mnemonic_suni.h" +/* #include "chrtrans/mnem_suni.h" */ + +/* Some of the code below, and some of the comments, left in for + historical reasons. Not all those tables below are currently + really needed (and what with all those hardwired codepoints), + but let's keep them around for now, they may come in handy if we + decide to make more extended use of the mechanisms (including e.g. + for chars < 127...) - kw */ + +static u16 translations[][256] = { + /* 8-bit Latin-1 mapped to Unicode -- trivial mapping */ + { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, + 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff + }, + /* VT100 graphics mapped to Unicode */ + { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x00a0, + 0x25c6, 0x2592, 0x2409, 0x240c, 0x240d, 0x240a, 0x00b0, 0x00b1, + 0x2424, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c, 0xf800, + 0xf801, 0x2500, 0xf803, 0xf804, 0x251c, 0x2524, 0x2534, 0x252c, + 0x2502, 0x2264, 0x2265, 0x03c0, 0x2260, 0x00a3, 0x00b7, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, + 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff + }, + /* IBM Codepage 437 mapped to Unicode */ + { + 0x0000, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022, + 0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c, + 0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8, + 0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302, + 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, + 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, + 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, + 0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192, + 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, + 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, + 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, + 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, + 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, + 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, + 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, + 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, + 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, + 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0 + }, + /* User mapping -- default to codes for direct font mapping */ + { + 0xf000, 0xf001, 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007, + 0xf008, 0xf009, 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f, + 0xf010, 0xf011, 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017, + 0xf018, 0xf019, 0xf01a, 0xf01b, 0xf01c, 0xf01d, 0xf01e, 0xf01f, + 0xf020, 0xf021, 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027, + 0xf028, 0xf029, 0xf02a, 0xf02b, 0xf02c, 0xf02d, 0xf02e, 0xf02f, + 0xf030, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037, + 0xf038, 0xf039, 0xf03a, 0xf03b, 0xf03c, 0xf03d, 0xf03e, 0xf03f, + 0xf040, 0xf041, 0xf042, 0xf043, 0xf044, 0xf045, 0xf046, 0xf047, + 0xf048, 0xf049, 0xf04a, 0xf04b, 0xf04c, 0xf04d, 0xf04e, 0xf04f, + 0xf050, 0xf051, 0xf052, 0xf053, 0xf054, 0xf055, 0xf056, 0xf057, + 0xf058, 0xf059, 0xf05a, 0xf05b, 0xf05c, 0xf05d, 0xf05e, 0xf05f, + 0xf060, 0xf061, 0xf062, 0xf063, 0xf064, 0xf065, 0xf066, 0xf067, + 0xf068, 0xf069, 0xf06a, 0xf06b, 0xf06c, 0xf06d, 0xf06e, 0xf06f, + 0xf070, 0xf071, 0xf072, 0xf073, 0xf074, 0xf075, 0xf076, 0xf077, + 0xf078, 0xf079, 0xf07a, 0xf07b, 0xf07c, 0xf07d, 0xf07e, 0xf07f, + 0xf080, 0xf081, 0xf082, 0xf083, 0xf084, 0xf085, 0xf086, 0xf087, + 0xf088, 0xf089, 0xf08a, 0xf08b, 0xf08c, 0xf08d, 0xf08e, 0xf08f, + 0xf090, 0xf091, 0xf092, 0xf093, 0xf094, 0xf095, 0xf096, 0xf097, + 0xf098, 0xf099, 0xf09a, 0xf09b, 0xf09c, 0xf09d, 0xf09e, 0xf09f, + 0xf0a0, 0xf0a1, 0xf0a2, 0xf0a3, 0xf0a4, 0xf0a5, 0xf0a6, 0xf0a7, + 0xf0a8, 0xf0a9, 0xf0aa, 0xf0ab, 0xf0ac, 0xf0ad, 0xf0ae, 0xf0af, + 0xf0b0, 0xf0b1, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xf0b6, 0xf0b7, + 0xf0b8, 0xf0b9, 0xf0ba, 0xf0bb, 0xf0bc, 0xf0bd, 0xf0be, 0xf0bf, + 0xf0c0, 0xf0c1, 0xf0c2, 0xf0c3, 0xf0c4, 0xf0c5, 0xf0c6, 0xf0c7, + 0xf0c8, 0xf0c9, 0xf0ca, 0xf0cb, 0xf0cc, 0xf0cd, 0xf0ce, 0xf0cf, + 0xf0d0, 0xf0d1, 0xf0d2, 0xf0d3, 0xf0d4, 0xf0d5, 0xf0d6, 0xf0d7, + 0xf0d8, 0xf0d9, 0xf0da, 0xf0db, 0xf0dc, 0xf0dd, 0xf0de, 0xf0df, + 0xf0e0, 0xf0e1, 0xf0e2, 0xf0e3, 0xf0e4, 0xf0e5, 0xf0e6, 0xf0e7, + 0xf0e8, 0xf0e9, 0xf0ea, 0xf0eb, 0xf0ec, 0xf0ed, 0xf0ee, 0xf0ef, + 0xf0f0, 0xf0f1, 0xf0f2, 0xf0f3, 0xf0f4, 0xf0f5, 0xf0f6, 0xf0f7, + 0xf0f8, 0xf0f9, 0xf0fa, 0xf0fb, 0xf0fc, 0xf0fd, 0xf0fe, 0xf0ff + } +}; +static u16 *UC_translate = NULL; + +/* The standard kernel character-to-font mappings are not invertible + -- this is just a best effort. */ + +#define MAX_GLYPH 512 /* Max possible glyph value */ + +static unsigned char * inv_translate = NULL; +static unsigned char inv_norm_transl[MAX_GLYPH]; +static unsigned char * inverse_translations[4] = { NULL, NULL, NULL, NULL }; + +PRIVATE void con_clear_unimap NOPARAMS; + +PRIVATE void set_inverse_transl ARGS1(int, i) +{ + int j, glyph; + u16 *p = translations[i]; + unsigned char *q = inverse_translations[i]; + + if (!q) { + /* slightly messy to avoid calling kmalloc too early */ + q = inverse_translations[i] = ((i == LAT1_MAP) + ? inv_norm_transl + : (unsigned char *) malloc(MAX_GLYPH)); + if (!q) + return; + } + for (j=0; j<MAX_GLYPH; j++) + q[j] = 0; + + for (j=0; j<E_TABSZ; j++) { + glyph = conv_uni_to_pc(p[j]); + if (glyph >= 0 && glyph < MAX_GLYPH && q[glyph] < 32) { + /* prefer '-' above SHY etc. */ + q[glyph] = j; + } + } +} + +u16 *set_translate ARGS1(int, m) +{ + if (!inverse_translations[m]) + set_inverse_transl(m); + inv_translate = inverse_translations[m]; + return translations[m]; +} + +#ifdef NOTDEFINED +/* + * Inverse translation is impossible for several reasons: + * 1. The font<->character maps are not 1-1. + * 2. The text may have been written while a different translation map + * was active, or using Unicode. + * Still, it is now possible to a certain extent to cut and paste non-ASCII. + */ +unsigned char inverse_translate(int glyph) { + if ( glyph < 0 || glyph >= MAX_GLYPH ) + return 0; + else + return ((inv_translate && inv_translate[glyph]) + ? inv_translate[glyph] + : (unsigned char)(glyph & 0xff)); +} + +/* + * Load customizable translation table + * arg points to a 256 byte translation table. + * + * The "old" variants are for translation directly to font (using the + * 0xf000-0xf0ff "transparent" Unicodes) whereas the "new" variants set + * Unicodes explictly. + */ +int con_set_trans_old(unsigned char * arg) +{ + int i; + u16 *p = translations[USER_MAP]; +#if(0) + i = verify_area(VERIFY_READ, (void *)arg, E_TABSZ); + if (i) + return i; +#endif + for (i=0; i<E_TABSZ ; i++) + p[i] = UNI_DIRECT_BASE | (u16) arg[i]; + + set_inverse_transl(USER_MAP); + return 0; +} + +int con_get_trans_old(unsigned char * arg) +{ + int i, ch; + u16 *p = translations[USER_MAP]; +#if(0) + i = verify_area(VERIFY_WRITE, (void *)arg, E_TABSZ); + if (i) + return i; +#endif + for (i=0; i<E_TABSZ ; i++) + { + ch = conv_uni_to_pc(p[i]); +/* put_user((ch & ~0xff) ? 0 : ch, arg+i); */ + arg[i] = (unsigned char)((ch & ~0xff) ? 0 : ch); + } + return 0; +} + +int con_set_trans_new(u16 * arg) +{ + int i; + u16 *p = translations[USER_MAP]; +#if(0) + i = verify_area(VERIFY_READ, (void *)arg, + E_TABSZ*sizeof(u16)); + if (i) + return i; +#endif + for (i=0; i<E_TABSZ ; i++) + p[i] = arg[i]; + + set_inverse_transl(USER_MAP); + return 0; +} + +int con_get_trans_new(u16 * arg) +{ + int i; + u16 *p = translations[USER_MAP]; +#if(0) + i = verify_area(VERIFY_WRITE, (void *)arg, + E_TABSZ*sizeof(u16)); + if (i) + return i; +#endif + for (i=0; i<E_TABSZ ; i++) + arg[i] = p[i]; + + return 0; +} +#endif /* NOTDEFINED */ + + +PRIVATE int +UC_valid_UC_charset ARGS1(int, UC_charset_hndl) +{ + return (UC_charset_hndl >= 0 && UC_charset_hndl < UCNumCharsets); +} + +PRIVATE void +UC_con_set_trans ARGS3(int, UC_charset_in_hndl, int, Gn, int, update_flag) +{ + int i, j; + u16 *p; + u16 *ptrans; + + if (!UC_valid_UC_charset(UC_charset_in_hndl)) + { + if (TRACE) + fprintf(stderr,"UC_con_set_trans: Invalid charset handle %i.\n", + UC_charset_in_hndl); + return; + } + ptrans = translations[Gn]; + p = UCInfo[UC_charset_in_hndl].unitable; +#if(0) + if (p == UC_current_unitable) { /* test whether pointers are equal */ + return; /* nothing to be done */ + } + /* The font is always 256 characters - so far. */ + + con_clear_unimap(); +#endif + for ( i = 0 ; i < 256 ; i++ ) + { + if ((j = UCInfo[UC_charset_in_hndl].unicount[i])) { + ptrans[i] = *p; + for ( ; j ; j-- ) + p++; + } + else + ptrans[i] = 0xfffd; + } + if (update_flag) + set_inverse_transl(Gn); /* Update inverse translation for this one */ +} +/* + * Unicode -> current font conversion + * + * A font has at most 512 chars, usually 256. + * But one font position may represent several Unicode chars. + * A hashtable is somewhat of a pain to deal with, so use a + * "paged table" instead. Simulation has shown the memory cost of + * this 3-level paged table scheme to be comparable to a hash table. + */ + +int hashtable_contents_valid = 0; /* Use ASCII-only mode for bootup*/ +int hashtable_str_contents_valid = 0; + +static u16 **uni_pagedir[32] = +{ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; +static char* **uni_pagedir_str[32] = +{ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +u16 * UC_current_unitable = NULL; +struct unimapdesc_str *UC_current_unitable_str = NULL; + +PRIVATE int +con_insert_unipair ARGS2(u16, unicode, u16, fontpos) +{ + int i, n; + u16 **p1, *p2; + + if ( !(p1 = uni_pagedir[n = unicode >> 11]) ) + { + p1 = uni_pagedir[n] = (u16* *) malloc(32*sizeof(u16 *)); + if ( !p1 ) + return -ENOMEM; + + for ( i = 0 ; i < 32 ; i++ ) + p1[i] = NULL; + } + + if ( !(p2 = p1[n = (unicode >> 6) & 0x1f]) ) + { + p2 = p1[n] = (u16 *) malloc(64*sizeof(u16)); + if ( !p2 ) + return -ENOMEM; + + for ( i = 0 ; i < 64 ; i++ ) + p2[i] = 0xffff; /* No glyph for this character (yet) */ + } + + p2[unicode & 0x3f] = fontpos; + + return 0; +} + +PRIVATE int +con_insert_unipair_str ARGS2(u16, unicode, char *, replace_str) +{ + int i, n; + char ***p1, **p2; + + if ( !(p1 = uni_pagedir_str[n = unicode >> 11]) ) + { + p1 = uni_pagedir_str[n] = (char** *) malloc(32*sizeof(char **)); + if ( !p1 ) + return -ENOMEM; + + for ( i = 0 ; i < 32 ; i++ ) + p1[i] = NULL; + } + + if ( !(p2 = p1[n = (unicode >> 6) & 0x1f]) ) + { + p2 = p1[n] = (char* *) malloc(64*sizeof(char *)); + if ( !p2 ) + return -ENOMEM; + + for ( i = 0 ; i < 64 ; i++ ) + p2[i] = NULL; /* No replace string this character (yet) */ + } + + p2[unicode & 0x3f] = replace_str; + + return 0; +} + +/* ui arg was a leftover, deleted -kw */ +PRIVATE void +con_clear_unimap NOARGS +{ + int i, j; + u16 **p1; + + for ( i = 0 ; i < 32 ; i++ ) + { + if ( (p1 = uni_pagedir[i]) != NULL ) + { + for ( j = 0 ; j < 32 ; j++ ) + { + if ( p1[j] ) + free(p1[j]); + } + free(p1); + } + uni_pagedir[i] = NULL; + } + + hashtable_contents_valid = 1; +} + +PRIVATE void +con_clear_unimap_str NOARGS +{ + int i, j; + char ***p1; + + for ( i = 0 ; i < 32 ; i++ ) + { + if ( (p1 = uni_pagedir_str[i]) != NULL ) + { + for ( j = 0 ; j < 32 ; j++ ) + { + if ( p1[j] ) + free(p1[j]); + } + free(p1); + } + uni_pagedir_str[i] = NULL; + } + + hashtable_str_contents_valid = 1; /* ??? probably no use... */ +} + +#ifdef NOTDEFINED +int +con_set_unimap ARGS2(u16, ct, struct unipair *, list) +{ + int err = 0, err1, i; + + while( ct-- ) + { + if ( (err1 = con_insert_unipair(list->unicode, + list->fontpos)) != 0 ) + err = err1; + list++; + } + + for ( i = 0 ; i <= 3 ; i++ ) + set_inverse_transl(i); /* Update all inverse translations */ + + return err; +} +#endif /* NOTDEFINED */ + +/* Loads the unimap for the hardware font, as defined in uni_hash.tbl. + The representation used was the most compact I could come up + with. This routine is executed at sys_setup time, and when the + PIO_FONTRESET ioctl is called. */ + +PRIVATE void +con_set_default_unimap NOARGS +{ + int i, j; + u16 *p; + + /* The default font is always 256 characters */ + + con_clear_unimap(); + + p = dfont_unitable; + for ( i = 0 ; i < 256 ; i++ ) + for ( j = dfont_unicount[i] ; j ; j-- ) + con_insert_unipair(*(p++), i); + + for ( i = 0 ; i <= 3 ; i++ ) + set_inverse_transl(i); /* Update all inverse translations */ + + UC_current_unitable = dfont_unitable; +} + +PUBLIC int UCNumCharsets = 0; + +PUBLIC int UCLYhndl_HTFile_for_unspec = -1; +PUBLIC int UCLYhndl_HTFile_for_unrec = -1; +PUBLIC int UCLYhndl_for_unspec = -1; +PUBLIC int UCLYhndl_for_unrec = -1; + +PRIVATE int +UC_con_set_unimap ARGS2(int, UC_charset_out_hndl, int, update_flag) +{ + int i, j; + u16 *p; + + if (!UC_valid_UC_charset(UC_charset_out_hndl)) + { + if (TRACE) + fprintf(stderr,"UC_con_set_unimap: Invalid charset handle %i.\n", + UC_charset_out_hndl); + return -1; + } + + p = UCInfo[UC_charset_out_hndl].unitable; + if (p == UC_current_unitable) { /* test whether pointers are equal */ + return update_flag; /* nothing to be done */ + } + UC_current_unitable = p; + + /* The font is always 256 characters - so far. */ + + con_clear_unimap(); + + for ( i = 0 ; i < 256 ; i++ ) + for ( j = UCInfo[UC_charset_out_hndl].unicount[i] ; j ; j-- ) + con_insert_unipair(*(p++), i); + + if (update_flag) + for ( i = 0 ; i <= 3 ; i++ ) + set_inverse_transl(i); /* Update all inverse translations */ + return 0; +} + +PRIVATE int +UC_con_set_unimap_str ARGS2(u16, ct, struct unipair_str *, list) +{ + int err = 0, err1; + + while( ct-- ) + { + if ( (err1 = con_insert_unipair_str(list->unicode, + list->replace_str)) != 0 ) + err = err1; + list++; + } + + /* No inverse translations for replacement strings! */ + if (!err) hashtable_str_contents_valid = 1; + return err; +} + +#if 0 /* UNUSED */ +int +con_get_unimap ARGS3(u16, ct, u16 *, uct, struct unipair *, list) +{ + int i, j, k, ect; + u16 **p1, *p2; + + ect = 0; + if (hashtable_contents_valid) + { + for ( i = 0 ; i < 32 ; i++ ) + if ( (p1 = uni_pagedir[i]) != NULL ) + for ( j = 0 ; j < 32 ; j++ ) + if ( (p2 = *(p1++)) != NULL ) + for ( k = 0 ; k < 64 ; k++ ) + { + if ( *p2 < MAX_GLYPH && ect++ < ct ) + { + list->unicode = (u16) ((i<<11)+(j<<6)+k); + list->fontpos = (u16) *p2; + list++; + } + p2++; + } + } + *uct = ect; + return ((ect <= ct) ? 0 : -ENOMEM); +} +#endif + +int +conv_uni_to_pc ARGS1(long, ucs) +{ + int h; + u16 **p1, *p2; + + /* Only 16-bit codes supported at this time */ + if (ucs > 0xffff) + ucs = 0xfffd; /* U+FFFD: REPLACEMENT CHARACTER */ + else if (ucs < 0x20 || ucs >= 0xfffe) + return -1; /* Not a printable character */ + else if (ucs == 0xfeff || (ucs >= 0x200a && ucs <= 0x200f)) + return -2; /* Zero-width space */ + /* + * UNI_DIRECT_BASE indicates the start of the region in the User Zone + * which always has a 1:1 mapping to the currently loaded font. The + * UNI_DIRECT_MASK indicates the bit span of the region. + */ + else if ( (ucs & ~UNI_DIRECT_MASK) == UNI_DIRECT_BASE ) + return ucs & UNI_DIRECT_MASK; + + if (!hashtable_contents_valid) + return -3; + + if ( (p1 = uni_pagedir[ucs >> 11]) && + (p2 = p1[(ucs >> 6) & 0x1f]) && + (h = p2[ucs & 0x3f]) < MAX_GLYPH ) + return h; + + return -4; /* not found */ +} + +/* Note: contents of outbuf is not changes for negative return value! */ +PRIVATE int +conv_uni_to_str ARGS3(char*, outbuf, int, buflen, long, ucs) +{ + char *h; + char ***p1, **p2; + + /* Only 16-bit codes supported at this time */ + if (ucs > 0xffff) + ucs = 0xfffd; /* U+FFFD: REPLACEMENT CHARACTER */ +/* Maybe the following two cases should be allowed here?? -kw */ + else if (ucs < 0x20 || ucs >= 0xfffe) + return -1; /* Not a printable character */ + else if (ucs == 0xfeff || (ucs >= 0x200a && ucs <= 0x200f)) + return -2; /* Zero-width space */ + /* + * UNI_DIRECT_BASE indicates the start of the region in the User Zone + * which always has a 1:1 mapping to the currently loaded font. The + * UNI_DIRECT_MASK indicates the bit span of the region. + */ +/* We dont handle the following here: */ +#if(0) + else if ( (ucs & ~UNI_DIRECT_MASK) == UNI_DIRECT_BASE ) + return ucs & UNI_DIRECT_MASK; +#endif + if (!hashtable_str_contents_valid) + return -3; + + if ( (p1 = uni_pagedir_str[ucs >> 11]) && + (p2 = p1[(ucs >> 6) & 0x1f]) && + (h = p2[ucs & 0x3f]) ) { + strncpy (outbuf,h,(size_t) (buflen-1)); + return 1; /* ok ! */ + } + return -4; /* not found */ +} + +PUBLIC int UCInitialized = 0; +/* + * [ original comment: - kw ] + * This is called at sys_setup time, after memory and the console are + * initialized. It must be possible to call kmalloc(..., GFP_KERNEL) + * from this function, hence the call from sys_setup. + */ +PRIVATE void +UCconsole_map_init NOARGS +{ + con_set_default_unimap(); + UCInitialized = 1; +} + +/* OK now, finally, some stuff that is more specifically for Lynx: - kw */ + +PUBLIC int UCGetcharset_byMIMEname PARAMS((char * UC_MIMEcharset)); +PUBLIC int UCGetcharset_byLYNXname PARAMS((char * UC_LYNXcharset)); + +PUBLIC int UCTransUniChar ARGS2(long, unicode, int, charset_out) +{ + int rc; + int UChndl_out; + u16 * ut; + + if ((UChndl_out = LYCharSet_UC[charset_out].UChndl) < 0) + return -12; + + ut = UCInfo[UChndl_out].unitable; + if (ut != UC_current_unitable) { + rc = UC_con_set_unimap(UChndl_out, 1); + if (rc < 0) + return rc; + } + rc = conv_uni_to_pc(unicode); + if (rc == -4) + rc = conv_uni_to_pc(0xfffd); + return rc; +} +/* returns string length, or negative value for error. */ + +PUBLIC int UCTransUniCharStr ARGS5(char *, outbuf, int, buflen, long, unicode, + int, charset_out, int, chk_single_flag) +{ + int rc, src = 0, ignore_err; + int UChndl_out; + struct unimapdesc_str * repl; + u16 * ut; + +if (buflen<2) + return -13; + + if ((UChndl_out = LYCharSet_UC[charset_out].UChndl) < 0) + return -12; + + if (chk_single_flag) { + ut = UCInfo[UChndl_out].unitable; + if (ut != UC_current_unitable) { + src = UC_con_set_unimap(UChndl_out, 1); + if (src < 0) + return src; + } + src = conv_uni_to_pc(unicode); + if (src >= 32) { + outbuf[0] = src; outbuf[1] = '\0'; + return 1; } + } + + repl = &(UCInfo[UChndl_out].replacedesc); + if (repl != UC_current_unitable_str) { + con_clear_unimap_str(); + ignore_err = UC_con_set_unimap_str(repl->entry_ct, repl->entries); + UC_current_unitable_str = repl; + } + rc = conv_uni_to_str(outbuf, buflen, unicode); + if (rc == -4) + rc = conv_uni_to_str(outbuf, buflen, 0xfffd); + if (rc >= 0) + return (strlen(outbuf)); + + if (chk_single_flag && src == -4) { + rc = conv_uni_to_pc(0xfffd); + if (rc >= 32) { + outbuf[0] = rc; outbuf[1] = '\0'; + return 1; } + else return rc; + } + return -4; +} + +int UC_lastautoGN = 0; + +PRIVATE int UC_MapGN ARGS2(int, UChndl, int, update_flag) +{ + int i,Gn,found,lasthndl; + found = 0; + Gn = -1; + for (i=0; i<4 && Gn<0; i++) { + if (UC_GNhandles[i] < 0) + Gn = i; + else if (UC_GNhandles[i] == UChndl) + {Gn = i; found = 1;} + } + if (found) return Gn; + if (Gn >= 0) { + UCInfo[UChndl].GN = Gn; + UC_GNhandles[Gn] = UChndl; + } + else { + if (UC_lastautoGN == GRAF_MAP) + Gn = IBMPC_MAP; + else Gn = GRAF_MAP; + UC_lastautoGN = Gn; + lasthndl = UC_GNhandles[Gn]; + UCInfo[lasthndl].GN = -1; + UCInfo[UChndl].GN = Gn; + UC_GNhandles[Gn] = UChndl; + } + UC_con_set_trans(UChndl,Gn,update_flag); + return Gn; +} + +PUBLIC int UCTransChar ARGS3(char, ch_in, int, charset_in, int, charset_out) +{ + int unicode, Gn; + int rc; + int UChndl_in, UChndl_out; + u16 * ut; + int upd = 0; + +#ifndef UC_NO_SHORTCUTS + if (charset_in == charset_out) + return (unsigned char)ch_in; +#endif + if (charset_in < 0) return -11; + if ((UChndl_in = LYCharSet_UC[charset_in].UChndl) < 0) + return -11; + if ((UChndl_out = LYCharSet_UC[charset_out].UChndl) < 0) + return -12; + if (!UCInfo[UChndl_in].num_uni) + return -11; + if ((Gn = UCInfo[UChndl_in].GN) < 0) + {Gn = UC_MapGN(UChndl_in,0); upd = 1;} + + ut = UCInfo[UChndl_out].unitable; + if (ut == UC_current_unitable) + {if (upd) set_inverse_transl(Gn);} + else { + rc = UC_con_set_unimap(UChndl_out, 1); + if (rc > 0) + set_inverse_transl(Gn); + else if (rc < 0) + return rc; + } + UC_translate = set_translate(Gn); + unicode = UC_translate[(unsigned char)ch_in]; + rc = conv_uni_to_pc(unicode); + if (rc == -4) + rc = conv_uni_to_pc(0xfffd); + return rc; +} + +PUBLIC long int UCTransToUni ARGS2(char, ch_in, int, charset_in) +{ + int unicode, Gn; + unsigned char ch_iu; + int UChndl_in; + + ch_iu = (unsigned char)ch_in; +#ifndef UC_NO_SHORTCUTS + if (charset_in == 0) + return ch_iu; + if ((unsigned char)ch_in < 128) + return ch_iu; +#endif + if (charset_in < 0) return -11; + if ((UChndl_in = LYCharSet_UC[charset_in].UChndl) < 0) + return -11; + if (!UCInfo[UChndl_in].num_uni) + return -11; + if ((Gn = UCInfo[UChndl_in].GN) < 0) + {Gn = UC_MapGN(UChndl_in,1);} + + UC_translate = set_translate(Gn); + unicode = UC_translate[(unsigned char)ch_in]; + + return unicode; +} + +#if 0 /* UNUSED */ +PUBLIC int UCReverseTransChar ARGS3(char, ch_out, int, charset_in, int, charset_out) +{ + int Gn; + int rc; + int UChndl_in, UChndl_out; + u16 * ut; + +#ifndef UC_NO_SHORTCUTS + if (charset_in == charset_out) + return ch_out; +#endif + if (charset_in < 0) return -11; + if ((UChndl_in = LYCharSet_UC[charset_in].UChndl) < 0) + return -11; + if (charset_out < 0) return -12; + if ((UChndl_out = LYCharSet_UC[charset_out].UChndl) < 0) + return -12; + if (!UCInfo[UChndl_in].num_uni) + return -11; + + ut = UCInfo[UChndl_out].unitable; + if (ut == UC_current_unitable) { + if ((Gn = UCInfo[UChndl_in].GN) >= 0) { + UC_translate = set_translate(Gn); + rc = inv_translate[(unsigned int)ch_out]; + if (rc >= 32) return rc; + } + else { + Gn = UC_MapGN(UChndl_in,1); + UC_translate = set_translate(Gn); + rc = inv_translate[(unsigned int)ch_out]; + if (rc >= 32) return rc; + } + } + return UCTransChar(ch_out, charset_out, charset_in); +} +#endif + +/* returns string length, or negative value for error. */ + +PUBLIC int UCTransCharStr ARGS6(char *, outbuf, int, buflen, char, ch_in, + int, charset_in, int, charset_out, int, chk_single_flag) +{ + int unicode, Gn; + int rc, src = 0, ignore_err; + int UChndl_in, UChndl_out; + struct unimapdesc_str * repl; + u16 * ut; + int upd = 0; + +if (buflen<2) + return -13; +#ifndef UC_NO_SHORTCUTS + if (chk_single_flag && charset_in == charset_out) { + outbuf[0] = ch_in; outbuf[1] = '\0'; + return 1; } +#endif + if (charset_in < 0) return -11; + if ((UChndl_in = LYCharSet_UC[charset_in].UChndl) < 0) + return -11; + if ((UChndl_out = LYCharSet_UC[charset_out].UChndl) < 0) + return -12; + if (!UCInfo[UChndl_in].num_uni) + return -11; + if ((Gn = UCInfo[UChndl_in].GN) < 0) + {Gn = UC_MapGN(UChndl_in,!chk_single_flag); upd=chk_single_flag;} + + UC_translate = set_translate(Gn); + unicode = UC_translate[(unsigned char)ch_in]; + + if (chk_single_flag) { + ut = UCInfo[UChndl_out].unitable; + if (ut == UC_current_unitable) + {if (upd) set_inverse_transl(Gn);} + else { + src = UC_con_set_unimap(UChndl_out, 1); + if (src > 0) + set_inverse_transl(Gn); + else if (src < 0) + return src; + } + src = conv_uni_to_pc(unicode); + if (src >= 32) { + outbuf[0] = src; outbuf[1] = '\0'; + return 1; } + } + + repl = &(UCInfo[UChndl_out].replacedesc); + if (repl != UC_current_unitable_str) { + con_clear_unimap_str(); + ignore_err = UC_con_set_unimap_str(repl->entry_ct, repl->entries); + UC_current_unitable_str = repl; + } + rc = conv_uni_to_str(outbuf, buflen, unicode); + if (rc == -4) + rc = conv_uni_to_str(outbuf, buflen, 0xfffd); + if (rc >= 0) + return (strlen(outbuf)); + + if (chk_single_flag && src == -4) { + rc = conv_uni_to_pc(0xfffd); + if (rc >= 32) { + outbuf[0] = rc; outbuf[1] = '\0'; + return 1; } + else return rc; + } + return -4; +} + +PRIVATE int UC_FindGN_byMIME ARGS1(char *, UC_MIMEcharset) +{ + int i; + for (i=0; i<4; i++) + if (!strcmp(UC_MIMEcharset,UC_GNsetMIMEnames[i])) + return i; + return -1; +} + +PUBLIC int UCGetRawUniMode_byLYhndl ARGS1(int, i) +{ + if(i < 0) return 0; + return LYCharSet_UC[i].enc; +} + +/* Currently the charset name has to match exactly -- not substring + matching as was done before (see HTMIME.c, HTML.c). */ +PUBLIC int UCGetLYhndl_byMIME ARGS1(CONST char *,UC_MIMEcharset) +{ + int i; + int LYhndl = -1; + + if (!UC_MIMEcharset || !(*UC_MIMEcharset)) return -1; + + for (i=0; i<MAX_CHARSETS && i<LYNumCharsets && + LYchar_set_names[i] && LYhndl<0; i++) + if (LYCharSet_UC[i].MIMEname && + !strcmp(UC_MIMEcharset,LYCharSet_UC[i].MIMEname)) { + LYhndl = i; + } + if (LYhndl < 0) { /* not yet found, special treatment + for several CJK charsets etc... cheating here + Also recognize UTF-8 as synonym for UNICODE-1-1-UTF-8 + (The example file for now still uses the long name, + so that's what will be used internally.) */ + if (0==strcmp(UC_MIMEcharset, "utf-8")) + return UCGetLYhndl_byMIME("unicode-1-1-utf-8"); + if (0==strncmp(UC_MIMEcharset, "iso-2022-jp", 11)) + return UCGetLYhndl_byMIME("euc-jp"); + else if (0==strcmp(UC_MIMEcharset, "euc-kr")) + return UCGetLYhndl_byMIME("iso-2022-kr"); + else if (0==strcmp(UC_MIMEcharset, "gb2312")) + return UCGetLYhndl_byMIME("iso-2022-cn"); + else if (0==strcmp(UC_MIMEcharset, "euc-cn")) + return UCGetLYhndl_byMIME("iso-2022-cn"); + else if (0==strcmp(UC_MIMEcharset, "koi-8")) /* accentsoft bogosity */ + return UCGetLYhndl_byMIME("koi8-r"); + } + return LYhndl; /* returns -1 if no charset found by that MIME name */ +} + +/* function UC_setup_LYCharSets_repl() tries to set up a subtable in + LYCharSets[] appropriate for this new charset, for compatibility + with the "old method". Maybe not nice (maybe not evene necessary + any more), but it works (as far as it goes..). + + We try to be conservative and only allocate new memory for this + if needed. If not needed, just point to SevenBitApproximations[i]. + [Could do the same for ISO_Latin1[] if it's identical to that, but + would make it even *more* messy than it already is...] + This the only function in this file that knows, or cares, about the + HTMLDTD or details of LYCharSets[] subtables (and therefore somewhat + violates the idea that this file should be independent of those). + As in other places, we rely on ISO_Latin1 being the *first* table + in LYCharSets. - kw */ + +/* We need to remember which ones were allocated and which are static.*/ +static char** remember_allocated_LYCharSets[MAX_CHARSETS]; + +PRIVATE void UCreset_allocated_LYCharSets NOARGS +{ + int i=0; + for(;i<MAX_CHARSETS;i++) + remember_allocated_LYCharSets[i]=NULL; +} + +PRIVATE void UCfree_allocated_LYCharSets NOARGS +{ + int i=0; + for(;i<MAX_CHARSETS;i++) + if(remember_allocated_LYCharSets[i]!=NULL) + FREE(remember_allocated_LYCharSets[i]); +} + +PRIVATE char ** UC_setup_LYCharSets_repl ARGS2(int, UC_charset_in_hndl, int, lowest8) +{ + char ** ISO_Latin1 = LYCharSets[0]; + char **p; + char **prepl; + u16 *pp; + char ** tp; + char *s7; + char *s8; + int i,j,changed; + u16 k; + u8 *ti; + /* create a temporary table for reverse lookup of latin1 codes: */ + tp = (char **) malloc(96 * sizeof(char *)); + if (!tp) return NULL; + for (i=0; i<96; i++) + tp[i] = NULL; + ti = (u8 *) malloc(96 * sizeof(u8)); + if (!ti) { + FREE(tp); + return NULL; + } + for (i=0; i<96; i++) + ti[i] = 0; + + pp = UCInfo[UC_charset_in_hndl].unitable; + + /* Determine if we have any mapping of a Unicode in the range 160-255 + to an allowed code point > 0x80 in our new charset... + Store any mappings found in ti[]. */ + if (UCInfo[UC_charset_in_hndl].num_uni > 0) + for ( i = 0 ; i < 256 ; i++ ) + { + if ((j = UCInfo[UC_charset_in_hndl].unicount[i])) { + if ((k = *pp) >= 160 && k < 256 && i >= lowest8) { + ti[k-160] = i; + } + for ( ; j ; j-- ) + pp++; + } + } + { + u16 ct; + struct unipair_str *list; + + /* Determine if we have any mapping of a Unicode in the range 160-255 + to a replacement string for our new charset... + Store any mappings found in tp[]. */ + ct = UCInfo[UC_charset_in_hndl].replacedesc.entry_ct; + list = UCInfo[UC_charset_in_hndl].replacedesc.entries; + while( ct-- ) + { + if ((k = list->unicode) >= 160 && k < 256) { + tp[k-160] = list->replace_str; + } + list++; + } + } + /* Now allocate a new table compatible with LYCharSets[] + and with the HTMLDTD for entitied. + We don't know yet whether we'll keep it around. */ + p = prepl = (char **) malloc(HTML_dtd.number_of_entities * sizeof(char *)); + if (!p) { + FREE(tp); FREE(ti); + return NULL; + } + changed = 0; + for (i=0; i<HTML_dtd.number_of_entities; i++,p++) { + /* For each of those entities, we check what the "old method" + ISO_Latin1[] mapping does with them. If it is nothing we + want to use, just point to the SevenBitApproximations[] string. */ + s7 = SevenBitApproximations[i]; + s8 = ISO_Latin1[i]; + *p = s7; + if (s8 && (unsigned char)(*s8) >= 160 && strlen(s8) == 1) { + /* We have an entity that is mapped to one valid eightbit latin1 char*/ + if (ti[(unsigned char)(*s8) - 160] >= lowest8 && + !(s7[0] == ti[(unsigned char)(*s8) - 160] && s7[1] == '\0')) { + /* ...which in turn is mapped, by our "new method", to another + valid eightbit char for this new charset: either to itself... */ + if (ti[(unsigned char)(*s8) - 160] == (unsigned char)(*s8)) + *p = s8; + else { + /* ...or another byte... */ +#ifdef NOTDEFINED + *p = (char *)malloc(2*sizeof(char)); + if (!*p) { + FREE(tp); FREE(ti); FREE(prepl); + return NULL; + } + (*p)[0] = ti[(unsigned char)(*s8) - 160]; + (*p)[1] = '\0'; +#else + /* use this instead... make those buggers int HTAtoms, so + they will be cleaned up at exit... all for the sake of + preventing memory leaks, sigh */ + static char dummy[2]; /* one char dummy string */ + + dummy[0] = ti[(unsigned char)(*s8) - 160]; + *p = HTAtom_name(HTAtom_for(dummy)); +#endif /* ! NOTDEFINED */ + } + changed = 1; + } + else if (tp[(unsigned char)(*s8) - 160] && + 0!=strcmp(s7,tp[(unsigned char)(*s8) - 160])) { + /* ...or which is mapped, by our "new method", to a replacement + string for this new charset. */ + *p = tp[(unsigned char)(*s8) - 160]; + changed = 1; + } + } + } + FREE(tp); FREE(ti); + if (!changed) { + FREE(prepl); + return NULL; + } + return prepl; +} +/* "New method" meets "Old method" ... */ + +PRIVATE int UC_Register_with_LYCharSets ARGS4(int, s, + char *, UC_MIMEcharset, + char *, UC_LYNXcharset, + int, lowest_eightbit) +{ + int i, LYhndl,found; + char ** repl; + + LYhndl = -1; + if (LYNumCharsets == 0) /* initialize here; so whoever changes + LYCharSets.c doesn't have to count... */ + for (i=0; (i<MAX_CHARSETS) && LYchar_set_names[i]; i++) + LYNumCharsets = i+1; + + /* Do different kinds of searches... after all, this is experimental...*/ + for (i=0; i<MAX_CHARSETS && LYchar_set_names[i] && LYhndl<0; i++) + if (!strcmp(UC_LYNXcharset,LYchar_set_names[i])) + LYhndl = i; + for (i=0; i<MAX_CHARSETS && LYchar_set_names[i] && LYhndl<0; i++) + if (LYCharSet_UC[i].MIMEname && + !strcmp(UC_MIMEcharset,LYCharSet_UC[i].MIMEname)) + LYhndl = i; + + if (LYhndl < 0) { /* not found */ + found = 0; + if (LYNumCharsets >= MAX_CHARSETS) { + if (TRACE) + fprintf(stderr,"UC_Register_with_LYCharSets: Too many. Ignoring %s/%s.", + UC_MIMEcharset,UC_LYNXcharset); + return -1; + } + /* add to LYCharSets.c lists */ + LYhndl = LYNumCharsets; LYNumCharsets ++; + LYlowest_eightbit[LYhndl] = 999; + LYCharSets[LYhndl] = SevenBitApproximations; + /* Hmm, try to be conservative here. */ + LYchar_set_names[LYhndl] = UC_LYNXcharset; + LYchar_set_names[LYhndl+1] = (char *) 0; + /* Terminating NULL may be looked for by Lynx code */ + } else found = 1; + + LYCharSet_UC[LYhndl].UChndl = s; + /* Can we just copy the pointer? Hope so... */ + LYCharSet_UC[LYhndl].MIMEname = UC_MIMEcharset; + LYCharSet_UC[LYhndl].enc = UCInfo[s].enc; + + /* @@@ We really SHOULD get more info from the table files, and set + relevant flags in the LYCharSet_UC[] entry with that info... + for now, let's try it without - kw */ + + if (lowest_eightbit < LYlowest_eightbit[LYhndl]) + LYlowest_eightbit[LYhndl] = lowest_eightbit; + else if (lowest_eightbit > LYlowest_eightbit[LYhndl]) + UCInfo[s].lowest_eight = LYlowest_eightbit[LYhndl]; + + if (!found && LYhndl > 0) { + repl = UC_setup_LYCharSets_repl(s,UCInfo[s].lowest_eight); + if (repl) { + LYCharSets[LYhndl] = repl; + /* remember to FREE at exit */ + remember_allocated_LYCharSets[LYhndl]=repl; + } + } + return LYhndl; +} + + +/* This only sets up the structure - no initialization of the tables + * is done here yet. + */ +void UC_Charset_Setup ARGS8(char *, UC_MIMEcharset, + char *, UC_LYNXcharset, + u8 *, unicount, u16 *, unitable, int, nnuni, + struct unimapdesc_str, replacedesc, int, lowest_eight, + int, UC_rawuni) +{ + int s, Gn; + int i, status = 0, found; + + /* Get (new?) slot */ + + found = -1; + for (i=0; i<UCNumCharsets && found<0; i++) { + if (!strcmp(UCInfo[i].MIMEname,UC_MIMEcharset)) + found = i; + } + if (found >= 0) s = found; + else { + if (UCNumCharsets >= MAX_CHARSETS) + { + if (TRACE) + fprintf(stderr,"UC_Charset_Setup: Too many. Ignoring %s/%s.", + UC_MIMEcharset,UC_LYNXcharset); + return; + } + s = UCNumCharsets; + UCInfo[s].MIMEname = UC_MIMEcharset; + } + UCInfo[s].LYNXname = UC_LYNXcharset; + UCInfo[s].unicount = unicount; + UCInfo[s].unitable = unitable; + UCInfo[s].num_uni = nnuni; + UCInfo[s].replacedesc = replacedesc; + Gn = UC_FindGN_byMIME(UC_MIMEcharset); + if (Gn >= 0) + UC_GNhandles[Gn] = s; + UCInfo[s].GN = Gn; + if (UC_rawuni == UCT_ENC_UTF8) lowest_eight = 128; /* cheat here */ + UCInfo[s].lowest_eight = lowest_eight; + UCInfo[s].enc = UC_rawuni; + UCInfo[s].LYhndl = UC_Register_with_LYCharSets(s, UC_MIMEcharset, + UC_LYNXcharset, lowest_eight); + UCInfo[s].uc_status = status; + if (found < 0) UCNumCharsets++; + return; +} + +PRIVATE void UCcleanup_mem NOARGS +{ + int i; + UCfree_allocated_LYCharSets(); + con_clear_unimap_str(); + con_clear_unimap(); + for (i=1; i<4; i++) /* first one is static! */ + FREE(inverse_translations[i]); +} + +PUBLIC void UCInit NOARGS +{ + UCreset_allocated_LYCharSets(); + atexit(UCcleanup_mem); + UCconsole_map_init(); + + UC_CHARSET_SETUP; + UC_CHARSET_SETUP_iso_8859_1; + UC_CHARSET_SETUP_iso_8859_2; + UC_CHARSET_SETUP_iso_8859_3; + UC_CHARSET_SETUP_iso_8859_4; + UC_CHARSET_SETUP_iso_8859_5; + UC_CHARSET_SETUP_iso_8859_7; + UC_CHARSET_SETUP_iso_8859_9; + UC_CHARSET_SETUP_iso_8859_10; + UC_CHARSET_SETUP_koi8_r; + + UC_CHARSET_SETUP_cp437; + UC_CHARSET_SETUP_cp850; + UC_CHARSET_SETUP_cp852; + UC_CHARSET_SETUP_windows_1250; + UC_CHARSET_SETUP_iso_8859_1_windows_; + UC_CHARSET_SETUP_unicode_1_1_utf_8; + UC_CHARSET_SETUP_mnemonic_ascii_0; + UC_CHARSET_SETUP_mnemonic; +/* UC_CHARSET_SETUP_mnem; */ +} diff --git a/src/UCdomap.h b/src/UCdomap.h new file mode 100644 index 00000000..0009f6eb --- /dev/null +++ b/src/UCdomap.h @@ -0,0 +1,58 @@ +/* + * [old comments: - kw ] + * consolemap.h + * + * Interface between console.c, selection.c and UCmap.c + */ +#define LAT1_MAP 0 +#define GRAF_MAP 1 +#define IBMPC_MAP 2 +#define USER_MAP 3 + +#ifndef MAX_CHARSETS +#define MAX_CHARSETS +#endif + +extern int hashtable_contents_valid; +extern unsigned char inverse_translate PARAMS((int glyph)); +extern u16 *set_translate PARAMS((int m)); +extern int conv_uni_to_pc PARAMS((long ucs)); + +extern int hashtable_str_contents_valid; /* ??? probably no use... */ + +/* Some conventions i try to follow (loosely): + [a-z]* only internal, names from linux driver code. + UC_* to be only known internally. + UC[A-Z]* to be exported to other parts of Lynx. -kw +*/ + +extern void UC_Charset_Setup PARAMS((char * UC_MIMEcharset, char * UC_LYNXcharset, + u8 * unicount, u16 * unitable, int nnuni, + struct unimapdesc_str replacedesc, int lowest_eight, + int UC_rawuni)); + +char *UC_GNsetMIMEnames[4] = + {"iso-8859-1","x-dec-graphics","cp437","x-transparent"}; +int UC_GNhandles[4] = {-1, -1, -1, -1}; + +struct UC_charset { + char *MIMEname; + char *LYNXname; + u8* unicount; + u16* unitable; + int num_uni; + struct unimapdesc_str replacedesc; + int uc_status; + int LYhndl; + int GN; + int lowest_eight; + int enc; +}; +char * UC_charsetMIMEnames[MAX_CHARSETS]; + +PUBLIC struct UC_charset UCInfo[MAX_CHARSETS]; + +PUBLIC int UCNumCharsets; + +extern void UCInit NOARGS; + diff --git a/src/chrtrans/MAKEFILE.W32 b/src/chrtrans/MAKEFILE.W32 new file mode 100644 index 00000000..4968995f --- /dev/null +++ b/src/chrtrans/MAKEFILE.W32 @@ -0,0 +1,129 @@ +# +# Borland C++ IDE generated makefile +# +.AUTODEPEND + + +# +# Borland C++ tools +# +IMPLIB = Implib +BCC32 = Bcc32 +BccW32.cfg +TLINK32 = TLink32 +TLIB = TLib +BRC32 = Brc32 +TASM32 = Tasm32 +# +# IDE macros +# + + +# +# Options +# +IDE_LFLAGS32 = -LD:\BC45\LIB +LLATC32_dbmakeuctbdexe = -LCURSES;D:\BC45\LIB -Tpe -ap -c -wdpl -wdup +RLATC32_dbmakeuctbdexe = -w32 -k +BLATC32_dbmakeuctbdexe = +CNIEAT_dbmakeuctbdexe = -I.\;..\..\CURSES;..;..\..\WWW\LIBRARY\IMPLEMENTATION;D:\BC45\INCLUDE -DNO_UNISTD_H;_WINDOWS;NCURSES;FANCY_CURSES;XMOSAIC_HACK;ACCESS_AUTH;NO_UTMP;NO_CUSERID;NO_TTYTYPE;NOSIGHUP;DOSPATH;NOUSERS +LNIEAT_dbmakeuctbdexe = -x +LEAT_dbmakeuctbdexe = $(LLATC32_dbmakeuctbdexe) +REAT_dbmakeuctbdexe = $(RLATC32_dbmakeuctbdexe) +BEAT_dbmakeuctbdexe = $(BLATC32_dbmakeuctbdexe) + +# +# Dependency List +# +Dep_char = \ + .\makeuctb.exe + +char : BccW32.cfg $(Dep_char) + echo MakeNode + +Dep_dbmakeuctbdexe = \ + .\makeuctb.obj + +.\makeuctb.exe : $(Dep_dbmakeuctbdexe) + $(TLINK32) @&&| + /v $(IDE_LFLAGS32) $(LEAT_dbmakeuctbdexe) $(LNIEAT_dbmakeuctbdexe) + +D:\BC45\LIB\c0x32.obj+ +.\makeuctb.obj +$<,$* +D:\BC45\LIB\bidsf.lib+ +D:\BC45\LIB\import32.lib+ +D:\BC45\LIB\cw32.lib + +| + +.\makeuctb.obj : makeuctb.c + $(BCC32) -P- -c @&&| + $(CEAT_dbmakeuctbdexe) $(CNIEAT_dbmakeuctbdexe) -o$@ makeuctb.c +| + +# Compiler configuration file +BccW32.cfg : + Copy &&| +-R +-v +-vi +-H +-H=lynx.csm +-w- +-A- +-wcpt +-wrpt +-wrng +-w-voi +-w-ret +-w-sus +-w-dup +-w-big +-w-ext +-w-zdi +-w-bei +-w-obi +-w-ofp +-w-eas +-w-hid +-w-ncf +-w-ibc +-w-dsz +-w-nst +-w-mpc +-w-mpd +-w-ntd +-w-nvf +-w-hch +-w-inl +-w-lin +-w-lvc +-w-pia +-w-def +-w-nod +-w-pro +-w-rvl +-w-ccc +-w-aus +-w-par +-w-rch +-w-eff +-w-ill +-w-ias +-w-msg +-WC +-Ot +-d- +-K +-a- +-w-stu +-wbbf +-w-dpu +-wcln +-wsig +-wucp +-g200 +-H- +-v- +| $@ + + diff --git a/src/chrtrans/MAKEW32.BAT b/src/chrtrans/MAKEW32.BAT new file mode 100644 index 00000000..1259b344 --- /dev/null +++ b/src/chrtrans/MAKEW32.BAT @@ -0,0 +1,25 @@ +@echo If .tbl files are added or removed you will need to hand edit +@echo this batch file. +@echo . +make -f makefile.w32 +makeuctb iso01_uni.tbl > iso01_uni.h +makeuctb iso02_uni.tbl > iso02_uni.h +makeuctb iso03_uni.tbl > iso03_uni.h +makeuctb iso04_uni.tbl > iso04_uni.h +makeuctb iso05_uni.tbl > iso05_uni.h +makeuctb iso07_uni.tbl > iso07_uni.h +makeuctb iso09_uni.tbl > iso09_uni.h +makeuctb iso10_uni.tbl > iso10_uni.h +makeuctb cp437_uni.tbl > cp437_uni.h +makeuctb cp850_uni.tbl > cp850_uni.h +makeuctb cp852_uni.tbl > cp852_uni.h +makeuctb cp1250_uni.tbl > cp1250_uni.h +makeuctb cp1252_uni.tbl > cp1252_uni.h +makeuctb utf8_uni.tbl > utf8_uni.h +makeuctb mnemonic_suni.tbl > mnemonic_suni.h +makeuctb mnem_suni.tbl > mnem_suni.h +makeuctb rfc_suni.tbl > rfc_suni.h +makeuctb def7_uni.tbl > def7_uni.h +makeuctb koi8r_uni.tbl > koi8r_uni.h + + diff --git a/src/chrtrans/Makefile b/src/chrtrans/Makefile new file mode 100644 index 00000000..055dbad2 --- /dev/null +++ b/src/chrtrans/Makefile @@ -0,0 +1,78 @@ +# +# Makefile for the makeuctb and unicode tables. +# +# This may not yet work for the general case. +# Only some dependencies included. +# +# +CFLAGS = $(MCFLAGS) -I.. -I../.. -I../../WWW/Library/Implementation + +.SUFFIXES: .tbl +# +# This file contains the font map for the default (hardware) font +# + +FONTMAP_INC = iso01_uni.h# default, if not set by recursive call + +### #include $(TOPDIR)/Rules.make ??? + +### fastdep: $(FONTMAP_INC) + +### MCFLAGS=-g -DUNIX -DLINUX -DNO_KEYPAD -DNO_TTYTYPE -DEXP_CHARTRANS -I.. -I../../WWW/Library/Implementation -I../.. + +CHRTR= + +TABLES= $(CHRTR)iso02_uni.h \ + $(CHRTR)iso01_uni.h \ + $(CHRTR)def7_uni.h \ + $(CHRTR)iso03_uni.h \ + $(CHRTR)iso04_uni.h \ + $(CHRTR)iso05_uni.h \ + $(CHRTR)iso07_uni.h \ + $(CHRTR)iso09_uni.h \ + $(CHRTR)iso10_uni.h \ + $(CHRTR)koi8r_uni.h \ + $(CHRTR)cp437_uni.h \ + $(CHRTR)cp850_uni.h \ + $(CHRTR)cp852_uni.h \ + $(CHRTR)cp1250_uni.h \ + $(CHRTR)cp1252_uni.h \ + $(CHRTR)utf8_uni.h \ + $(CHRTR)rfc_suni.h \ + $(CHRTR)mnemonic_suni.h \ + $(CHRTR)mnem_suni.h + +default: $(FONTMAP_INC) + +tables: $(TABLES) + +makeuctb: makeuctb.c UCkd.h + $(CC) $(CFLAGS) -o makeuctb makeuctb.c + +.tbl.h: + ./makeuctb $*.tbl > $@ + +iso01_uni.h: iso01_uni.tbl makeuctb +iso02_uni.h: iso02_uni.tbl makeuctb +iso03_uni.h: iso03_uni.tbl makeuctb +iso04_uni.h: iso04_uni.tbl makeuctb +iso05_uni.h: iso05_uni.tbl makeuctb +iso07_uni.h: iso07_uni.tbl makeuctb +iso09_uni.h: iso09_uni.tbl makeuctb +iso10_uni.h: iso10_uni.tbl makeuctb +cp437_uni.h: cp437_uni.tbl makeuctb +cp850_uni.h: cp850_uni.tbl makeuctb +cp852_uni.h: cp852_uni.tbl makeuctb +cp1250_uni.h: cp1250_uni.tbl makeuctb +cp1252_uni.h: cp1252_uni.tbl makeuctb +utf8_uni.h: utf8_uni.tbl makeuctb +mnemonic_suni.h: mnemonic_suni.tbl makeuctb +mnem_suni.h: mnem_suni.tbl makeuctb +rfc_suni.h: rfc_suni.tbl makeuctb + +clean: + rm -f makeuctb *.o *uni.h + +distclean: clean + -rm -rf obsolete + rm -f core *.bak *.sav *~ *.h_old diff --git a/src/chrtrans/README.format b/src/chrtrans/README.format new file mode 100644 index 00000000..e5eca7bf --- /dev/null +++ b/src/chrtrans/README.format @@ -0,0 +1,103 @@ +Some notes on the format of table files used here. +(See README.tables for what to do with them.) + +The format is derived from stuff in the console driver of the +Linux kernel (as are the guts of the chartrans machinery). +THAT DOES NOT MEAN that anything here is Linux specific - it isn't. + +[Note that the format may change, this is still somewhat experimental.] + +There are four kinds of lines: + +Summary example: + + # This line is a comment, the next line is a directive + OBrand new Charset! + 0x41 U+0041 U+0391 + U+00cd:I' + +Description: + +a) comment lines start with a '#' character. + (trailing comments are allowed on some of the other lines, if in doubt + check the examples..) + +b) directives: + start with a special character, currently recognized are the letters: + + O The name under which this should appear on the O)ptions screen + M The name for this charset in MIME syntax (one word with digits + and some other non-letters allowed, should be IANA registered) + R a number which flags some special property (encoding) for this + charset [see utf8.uni for example, see UCDefs.h for details]. + +c) character translation definitions: + they look like + + 0x41 U+0041 U+0391 ... + + and are used for "forward" translation (mapping this charset to Unicode) + AS WELL AS "back" translation (mapping Unicodes to an 8-bit + [incl. 7-bit ASCII] code). + + For the "forward" direction, only the first Unicode is used; for + "back" translation, all listed Unicodes are mapped to the byte (i.e. + code point) on the left. + + The above example line would tell the chartrans mechanism: + "For this charset, code position 65 [hex 0x41] contains Unicode + U+0041 (LATIN CAPITAL LETTER A). For translation of Unicodes to + this charset, use byte value 65 [hex 0x41] for U+0041 (LATIN CAPITAL + LETTER A) as well as for U+0391 (GREEK CAPITAL LETTER ALPHA)." + + [Note that for bytes in the ASCII range 0x00-0x7F, the forward translations + will (probably) not be used by Lynx. It doesn't hurt to list those, + too, for completeness.] + + Some other forms are also accepted: + + * Syntax accepted: + * <fontpos> <unicode> <unicode> ... + * <fontpos> <unicode range> <unicode range> ... + * <fontpos> idem + * <range> idem + * <range> <unicode range> + * + * where <range> ::= <fontpos>-<fontpos> + * and <unicode> ::= U+<h><h><h><h> + * and <h> ::= <hexadecimal digit> + +d) string replacement definitions: + + They look like + + U+00cd:I' + + which would mean "Replace Unicode U+00cd (LATIN CAPITAL LETTER I WITH + ACUTE" with the string (consisting of two character) I' (if no other + translation is available)." + + Note that everything after the ':' is currently taken VERBATIM, so + careful with trailing blanks etc. + + * Syntax accepted: + * <unicode> :<replace> + * <unicode range> :<replace> + * + * where <unicode range> ::= <unicode>-<unicode> + * and <unicode> ::= U+<h><h><h><h> + * and <h> ::= <hexadecimal digit> + * and <replace> any string not containing '\n' or '\0' + +Motivation: + +- It is an extention of the format already in use for Linux (kernel, + kbd package), those files can be used with some minimal editing. + +- It is easy to convert Unicode tables for other charsets, as they + are commonly found on ftp sites etc., to this format - the right + sed command should do 99% of the work. + +- The format is independent of details of other parts of the Lynx code, + unlike the "old" LYCharsets.c mechanism. The tables don't have to + be changed in synch when e.g. new entities are added to the HTMLDTD. diff --git a/src/chrtrans/README.tables b/src/chrtrans/README.tables new file mode 100644 index 00000000..94622a99 --- /dev/null +++ b/src/chrtrans/README.tables @@ -0,0 +1,52 @@ +The translation table files in this directory are _examples only_. +They were collected from several sources (among them Linux kbd package, +ftp://dkuug.dk/, ftp://unicode.org/) and automatically comverted (if +applicable), but not checked in detail. The Unicode/UCS2 values +for some of the RFC1345 Mnemonic codes are out of date, a cleanup and +update would be needed for serious use (including removing the mappings +from the "private zone" U+E000 etc.). + +More tranlation files can be easily provided (and new character entities +added to HTMLDTD.c), this set is just to test whether the system works +in principle (and also how it behaves with of incomplete data...) + +See the file README.format for a brief explanation of what's in the +table files. + +The examples have names *_uni or *_suni with a .tbl suffix, but it +doesn't really matter. The auxiliary program makeuctb (MAKE UniCode +TaBle) is used to "compile" them into C header files, which can be +included by UCdomap.c. + +Ideally this should be taken care of by the Makefiles.. + + +To make a new chartrans table available to Lynx (and thereby make a new +charset known to Lynx) you currently have to manually edit UCdomap.c, in +two places: + +a) Near the top, you will find a bunch of lines (some may be commented out) + + #include "chrtrans/<fn>.h" + +Add or comment out as you wish. (But it's probably safest to leave the +first one, referring to "chrtrans/iso01_uni.h", in place...) + +b) At the bottom, you will find a bunch of lines (again, some may be + commented out by default) of the form + + UC_CHARSET_SETUP_<something>; + +which should correspond to the #include lines from a). Again, +add or substract as you wish (but preferably consistent with what you +did under a)...) [The <something> is derived from the charset's MIME name. +if in doubt, check the last lines of the corresponding ...uni.h file.] + +c) To let make automatically notice when you have changed one of the + table files, and automatically regenerate the *uni.h file(s), +you also have to add any new tables to both src/Makefile *and* +src/chrtrans/Makefile. (That may be inconvenient, but I didn't want to +depend on features than not all makes may have.) Note that for recompiling +Lynx, a `make clean' should not be necessary if you have *only* made +changes to the files in src/chrtrans. + diff --git a/src/chrtrans/UCkd.h b/src/chrtrans/UCkd.h new file mode 100644 index 00000000..2cc2ebdb --- /dev/null +++ b/src/chrtrans/UCkd.h @@ -0,0 +1,59 @@ +#ifndef _UC_KD_H +#define _UC_KD_H +#include <sys/types.h> + +/* NOTE: THE FOLLOWING #define MAY NEED ADJUSTMENT. + u16 should be an unsigned type of 16 bit length (two octets). + u8 should be an unsigned type of 8 bit length (one octet). + */ +#ifndef u16 +#define u16 unsigned short +#endif + + +#ifndef u8 +#define u8 unsigned char +#endif + +#ifdef NOTDEFINED +struct consolefontdesc { + u_short charcount; /* characters in font (256 or 512) */ + u_short charheight; /* scan lines per character (1-32) */ + char *chardata; /* font data in expanded form */ +}; +#endif +typedef char scrnmap_t; +#define E_TABSZ 256 + +struct unipair { + u16 unicode; + u16 fontpos; +}; +struct unipair_str { + u16 unicode; + char * replace_str; +}; +struct unimapdesc { + u16 entry_ct; + struct unipair *entries; +}; +struct unimapdesc_str { + u16 entry_ct; + struct unipair_str *entries; +}; + + +#define UNI_DIRECT_BASE 0xF000 /* start of Direct Font Region */ +#define UNI_DIRECT_MASK 0x01FF /* Direct Font Region bitmask */ + +#define UC_MAXLEN_ID_APPEND 20 +#define UC_MAXLEN_MIMECSNAME 40 +#define UC_MAXLEN_LYNXCSNAME 40 +#define UC_LEN_LYNXCSNAME 20 + +#define EX_OK 0 /* successful termination */ +#define EX_USAGE 64 /* command line usage error */ +#define EX_DATAERR 65 /* data format error */ +#define EX_NOINPUT 66 /* cannot open input */ + +#endif /* _UC_KD_H */ diff --git a/src/chrtrans/cp1250_uni.tbl b/src/chrtrans/cp1250_uni.tbl new file mode 100644 index 00000000..75416b67 --- /dev/null +++ b/src/chrtrans/cp1250_uni.tbl @@ -0,0 +1,281 @@ +#The MIME name of this charset. +Mwindows-1250 + +#Name as a Display Charset (used on Options screen) +O MS Windows CP 1250 + +# +# Name: cp1250_WinLatin2 to Unicode table +# Unicode version: 2.0 +# Table version: 2.00 +# Table format: Format A +# Date: 04/24/96 +# Authors: Lori Brownell <loribr@microsoft.com> +# K.D. Chang <a-kchang@microsoft.com> +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp1250_WinLatin2 code (in hex) +# Column #2 is the Unicode (in hex as 0xXXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp1250_WinLatin2 order +# +#0x00 U+0000 #NULL +#0x01 U+0001 #START OF HEADING +#0x02 U+0002 #START OF TEXT +#0x03 U+0003 #END OF TEXT +#0x04 U+0004 #END OF TRANSMISSION +#0x05 U+0005 #ENQUIRY +#0x06 U+0006 #ACKNOWLEDGE +#0x07 U+0007 #BELL +#0x08 U+0008 #BACKSPACE +#0x09 U+0009 #HORIZONTAL TABULATION +#0x0A U+000A #LINE FEED +#0x0B U+000B #VERTICAL TABULATION +#0x0C U+000C #FORM FEED +#0x0D U+000D #CARRIAGE RETURN +#0x0E U+000E #SHIFT OUT +#0x0F U+000F #SHIFT IN +#0x10 U+0010 #DATA LINK ESCAPE +#0x11 U+0011 #DEVICE CONTROL ONE +#0x12 U+0012 #DEVICE CONTROL TWO +#0x13 U+0013 #DEVICE CONTROL THREE +#0x14 U+0014 #DEVICE CONTROL FOUR +#0x15 U+0015 #NEGATIVE ACKNOWLEDGE +#0x16 U+0016 #SYNCHRONOUS IDLE +#0x17 U+0017 #END OF TRANSMISSION BLOCK +#0x18 U+0018 #CANCEL +#0x19 U+0019 #END OF MEDIUM +#0x1A U+001A #SUBSTITUTE +#0x1B U+001B #ESCAPE +#0x1C U+001C #FILE SEPARATOR +#0x1D U+001D #GROUP SEPARATOR +#0x1E U+001E #RECORD SEPARATOR +#0x1F U+001F #UNIT SEPARATOR +0x20 U+0020 #SPACE +0x21 U+0021 #EXCLAMATION MARK +0x22 U+0022 #QUOTATION MARK +0x23 U+0023 #NUMBER SIGN +0x24 U+0024 #DOLLAR SIGN +0x25 U+0025 #PERCENT SIGN +0x26 U+0026 #AMPERSAND +0x27 U+0027 #APOSTROPHE +0x28 U+0028 #LEFT PARENTHESIS +0x29 U+0029 #RIGHT PARENTHESIS +0x2A U+002A #ASTERISK +0x2B U+002B #PLUS SIGN +0x2C U+002C #COMMA +0x2D U+002D #HYPHEN-MINUS +0x2E U+002E #FULL STOP +0x2F U+002F #SOLIDUS +0x30 U+0030 #DIGIT ZERO +0x31 U+0031 #DIGIT ONE +0x32 U+0032 #DIGIT TWO +0x33 U+0033 #DIGIT THREE +0x34 U+0034 #DIGIT FOUR +0x35 U+0035 #DIGIT FIVE +0x36 U+0036 #DIGIT SIX +0x37 U+0037 #DIGIT SEVEN +0x38 U+0038 #DIGIT EIGHT +0x39 U+0039 #DIGIT NINE +0x3A U+003A #COLON +0x3B U+003B #SEMICOLON +0x3C U+003C #LESS-THAN SIGN +0x3D U+003D #EQUALS SIGN +0x3E U+003E #GREATER-THAN SIGN +0x3F U+003F #QUESTION MARK +0x40 U+0040 #COMMERCIAL AT +0x41 U+0041 #LATIN CAPITAL LETTER A +0x42 U+0042 #LATIN CAPITAL LETTER B +0x43 U+0043 #LATIN CAPITAL LETTER C +0x44 U+0044 #LATIN CAPITAL LETTER D +0x45 U+0045 #LATIN CAPITAL LETTER E +0x46 U+0046 #LATIN CAPITAL LETTER F +0x47 U+0047 #LATIN CAPITAL LETTER G +0x48 U+0048 #LATIN CAPITAL LETTER H +0x49 U+0049 #LATIN CAPITAL LETTER I +0x4A U+004A #LATIN CAPITAL LETTER J +0x4B U+004B #LATIN CAPITAL LETTER K +0x4C U+004C #LATIN CAPITAL LETTER L +0x4D U+004D #LATIN CAPITAL LETTER M +0x4E U+004E #LATIN CAPITAL LETTER N +0x4F U+004F #LATIN CAPITAL LETTER O +0x50 U+0050 #LATIN CAPITAL LETTER P +0x51 U+0051 #LATIN CAPITAL LETTER Q +0x52 U+0052 #LATIN CAPITAL LETTER R +0x53 U+0053 #LATIN CAPITAL LETTER S +0x54 U+0054 #LATIN CAPITAL LETTER T +0x55 U+0055 #LATIN CAPITAL LETTER U +0x56 U+0056 #LATIN CAPITAL LETTER V +0x57 U+0057 #LATIN CAPITAL LETTER W +0x58 U+0058 #LATIN CAPITAL LETTER X +0x59 U+0059 #LATIN CAPITAL LETTER Y +0x5A U+005A #LATIN CAPITAL LETTER Z +0x5B U+005B #LEFT SQUARE BRACKET +0x5C U+005C #REVERSE SOLIDUS +0x5D U+005D #RIGHT SQUARE BRACKET +0x5E U+005E #CIRCUMFLEX ACCENT +0x5F U+005F #LOW LINE +0x60 U+0060 #GRAVE ACCENT +0x61 U+0061 #LATIN SMALL LETTER A +0x62 U+0062 #LATIN SMALL LETTER B +0x63 U+0063 #LATIN SMALL LETTER C +0x64 U+0064 #LATIN SMALL LETTER D +0x65 U+0065 #LATIN SMALL LETTER E +0x66 U+0066 #LATIN SMALL LETTER F +0x67 U+0067 #LATIN SMALL LETTER G +0x68 U+0068 #LATIN SMALL LETTER H +0x69 U+0069 #LATIN SMALL LETTER I +0x6A U+006A #LATIN SMALL LETTER J +0x6B U+006B #LATIN SMALL LETTER K +0x6C U+006C #LATIN SMALL LETTER L +0x6D U+006D #LATIN SMALL LETTER M +0x6E U+006E #LATIN SMALL LETTER N +0x6F U+006F #LATIN SMALL LETTER O +0x70 U+0070 #LATIN SMALL LETTER P +0x71 U+0071 #LATIN SMALL LETTER Q +0x72 U+0072 #LATIN SMALL LETTER R +0x73 U+0073 #LATIN SMALL LETTER S +0x74 U+0074 #LATIN SMALL LETTER T +0x75 U+0075 #LATIN SMALL LETTER U +0x76 U+0076 #LATIN SMALL LETTER V +0x77 U+0077 #LATIN SMALL LETTER W +0x78 U+0078 #LATIN SMALL LETTER X +0x79 U+0079 #LATIN SMALL LETTER Y +0x7A U+007A #LATIN SMALL LETTER Z +0x7B U+007B #LEFT CURLY BRACKET +0x7C U+007C #VERTICAL LINE +0x7D U+007D #RIGHT CURLY BRACKET +0x7E U+007E #TILDE +#0x7F U+007F #DELETE +#0x80 #UNDEFINED +#0x81 #UNDEFINED +0x82 U+201A #SINGLE LOW-9 QUOTATION MARK +#0x83 #UNDEFINED +0x84 U+201E #DOUBLE LOW-9 QUOTATION MARK +0x85 U+2026 #HORIZONTAL ELLIPSIS +0x86 U+2020 #DAGGER +0x87 U+2021 #DOUBLE DAGGER +#0x88 #UNDEFINED +0x89 U+2030 #PER MILLE SIGN +0x8A U+0160 #LATIN CAPITAL LETTER S WITH CARON +0x8B U+2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK +0x8C U+015A #LATIN CAPITAL LETTER S WITH ACUTE +0x8D U+0164 #LATIN CAPITAL LETTER T WITH CARON +0x8E U+017D #LATIN CAPITAL LETTER Z WITH CARON +0x8F U+0179 #LATIN CAPITAL LETTER Z WITH ACUTE +#0x90 #UNDEFINED +0x91 U+2018 #LEFT SINGLE QUOTATION MARK +0x92 U+2019 #RIGHT SINGLE QUOTATION MARK +0x93 U+201C #LEFT DOUBLE QUOTATION MARK +0x94 U+201D #RIGHT DOUBLE QUOTATION MARK +0x95 U+2022 #BULLET +0x96 U+2013 #EN DASH +0x97 U+2014 #EM DASH +#0x98 #UNDEFINED +0x99 U+2122 #TRADE MARK SIGN +0x9A U+0161 #LATIN SMALL LETTER S WITH CARON +0x9B U+203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +0x9C U+015B #LATIN SMALL LETTER S WITH ACUTE +0x9D U+0165 #LATIN SMALL LETTER T WITH CARON +0x9E U+017E #LATIN SMALL LETTER Z WITH CARON +0x9F U+017A #LATIN SMALL LETTER Z WITH ACUTE +0xA0 U+00A0 #NO-BREAK SPACE +0xA1 U+02C7 #CARON +0xA2 U+02D8 #BREVE +0xA3 U+0141 #LATIN CAPITAL LETTER L WITH STROKE +0xA4 U+00A4 #CURRENCY SIGN +0xA5 U+0104 #LATIN CAPITAL LETTER A WITH OGONEK +0xA6 U+00A6 #BROKEN BAR +0xA7 U+00A7 #SECTION SIGN +0xA8 U+00A8 #DIAERESIS +0xA9 U+00A9 #COPYRIGHT SIGN +0xAA U+015E #LATIN CAPITAL LETTER S WITH CEDILLA +0xAB U+00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +#0xAC #UNDEFINED +0xAD U+00AD #SOFT HYPHEN +0xAE U+00AE #REGISTERED SIGN +0xAF U+017B #LATIN CAPITAL LETTER Z WITH DOT ABOVE +0xB0 U+00B0 #DEGREE SIGN +0xB1 U+00B1 #PLUS-MINUS SIGN +0xB2 U+02DB #OGONEK +0xB3 U+0142 #LATIN SMALL LETTER L WITH STROKE +0xB4 U+00B4 #ACUTE ACCENT +0xB5 U+00B5 #MICRO SIGN +0xB6 U+00B6 #PILCROW SIGN +0xB7 U+00B7 #MIDDLE DOT +0xB8 U+00B8 #CEDILLA +0xB9 U+0105 #LATIN SMALL LETTER A WITH OGONEK +0xBA U+015F #LATIN SMALL LETTER S WITH CEDILLA +0xBB U+00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +0xBC U+013D #LATIN CAPITAL LETTER L WITH CARON +0xBD U+02DD #DOUBLE ACUTE ACCENT +0xBE U+013E #LATIN SMALL LETTER L WITH CARON +0xBF U+017C #LATIN SMALL LETTER Z WITH DOT ABOVE +0xC0 U+0154 #LATIN CAPITAL LETTER R WITH ACUTE +0xC1 U+00C1 #LATIN CAPITAL LETTER A WITH ACUTE +0xC2 U+00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX +0xC3 U+0102 #LATIN CAPITAL LETTER A WITH BREVE +0xC4 U+00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS +0xC5 U+0139 #LATIN CAPITAL LETTER L WITH ACUTE +0xC6 U+0106 #LATIN CAPITAL LETTER C WITH ACUTE +0xC7 U+00C7 #LATIN CAPITAL LETTER C WITH CEDILLA +0xC8 U+010C #LATIN CAPITAL LETTER C WITH CARON +0xC9 U+00C9 #LATIN CAPITAL LETTER E WITH ACUTE +0xCA U+0118 #LATIN CAPITAL LETTER E WITH OGONEK +0xCB U+00CB #LATIN CAPITAL LETTER E WITH DIAERESIS +0xCC U+011A #LATIN CAPITAL LETTER E WITH CARON +0xCD U+00CD #LATIN CAPITAL LETTER I WITH ACUTE +0xCE U+00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX +0xCF U+010E #LATIN CAPITAL LETTER D WITH CARON +0xD0 U+0110 #LATIN CAPITAL LETTER D WITH STROKE +0xD1 U+0143 #LATIN CAPITAL LETTER N WITH ACUTE +0xD2 U+0147 #LATIN CAPITAL LETTER N WITH CARON +0xD3 U+00D3 #LATIN CAPITAL LETTER O WITH ACUTE +0xD4 U+00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX +0xD5 U+0150 #LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +0xD6 U+00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS +0xD7 U+00D7 #MULTIPLICATION SIGN +0xD8 U+0158 #LATIN CAPITAL LETTER R WITH CARON +0xD9 U+016E #LATIN CAPITAL LETTER U WITH RING ABOVE +0xDA U+00DA #LATIN CAPITAL LETTER U WITH ACUTE +0xDB U+0170 #LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +0xDC U+00DC #LATIN CAPITAL LETTER U WITH DIAERESIS +0xDD U+00DD #LATIN CAPITAL LETTER Y WITH ACUTE +0xDE U+0162 #LATIN CAPITAL LETTER T WITH CEDILLA +0xDF U+00DF #LATIN SMALL LETTER SHARP S +0xE0 U+0155 #LATIN SMALL LETTER R WITH ACUTE +0xE1 U+00E1 #LATIN SMALL LETTER A WITH ACUTE +0xE2 U+00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX +0xE3 U+0103 #LATIN SMALL LETTER A WITH BREVE +0xE4 U+00E4 #LATIN SMALL LETTER A WITH DIAERESIS +0xE5 U+013A #LATIN SMALL LETTER L WITH ACUTE +0xE6 U+0107 #LATIN SMALL LETTER C WITH ACUTE +0xE7 U+00E7 #LATIN SMALL LETTER C WITH CEDILLA +0xE8 U+010D #LATIN SMALL LETTER C WITH CARON +0xE9 U+00E9 #LATIN SMALL LETTER E WITH ACUTE +0xEA U+0119 #LATIN SMALL LETTER E WITH OGONEK +0xEB U+00EB #LATIN SMALL LETTER E WITH DIAERESIS +0xEC U+011B #LATIN SMALL LETTER E WITH CARON +0xED U+00ED #LATIN SMALL LETTER I WITH ACUTE +0xEE U+00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX +0xEF U+010F #LATIN SMALL LETTER D WITH CARON +0xF0 U+0111 #LATIN SMALL LETTER D WITH STROKE +0xF1 U+0144 #LATIN SMALL LETTER N WITH ACUTE +0xF2 U+0148 #LATIN SMALL LETTER N WITH CARON +0xF3 U+00F3 #LATIN SMALL LETTER O WITH ACUTE +0xF4 U+00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX +0xF5 U+0151 #LATIN SMALL LETTER O WITH DOUBLE ACUTE +0xF6 U+00F6 #LATIN SMALL LETTER O WITH DIAERESIS +0xF7 U+00F7 #DIVISION SIGN +0xF8 U+0159 #LATIN SMALL LETTER R WITH CARON +0xF9 U+016F #LATIN SMALL LETTER U WITH RING ABOVE +0xFA U+00FA #LATIN SMALL LETTER U WITH ACUTE +0xFB U+0171 #LATIN SMALL LETTER U WITH DOUBLE ACUTE +0xFC U+00FC #LATIN SMALL LETTER U WITH DIAERESIS +0xFD U+00FD #LATIN SMALL LETTER Y WITH ACUTE +0xFE U+0163 #LATIN SMALL LETTER T WITH CEDILLA +0xFF U+02D9 #DOT ABOVE + + diff --git a/src/chrtrans/cp1252_uni.tbl b/src/chrtrans/cp1252_uni.tbl new file mode 100644 index 00000000..e9660295 --- /dev/null +++ b/src/chrtrans/cp1252_uni.tbl @@ -0,0 +1,287 @@ +#Shall this become the "default" translation? +#Meaning of that is currently unclear... It's different +#from the default input or defualt output charset... +#but there has to be exactly one table marked as "default". +D0 +# +#The MIME name of this charset. +Miso-8859-1-windows-3.1-latin-1 + +#Name as a Display Charset (used on Options screen) +O MS Windows CP 1252 + +# +# Name: cp1252_WinLatin1 to Unicode table +# Unicode version: 1.1 +# Table version: 1.1 +# Table format: Format A +# Date: 03/31/95 +# Authors: Michel Suignard <michelsu@microsoft.com> +# Lori Hoerth <lorih@microsoft.com> +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp1252_WinLatin1 code (in hex) +# Column #2 is the Unicode (in hex as U+XXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp1252_WinLatin1 order +# +0x00 U+0000 #Null +0x01 U+0001 #START OF HEADING +0x02 U+0002 #START OF TEXT +0x03 U+0003 #END OF TEXT +0x04 U+0004 #END OF TRANSMISSION +0x05 U+0005 #ENQUIRY +0x06 U+0006 #ACKNOWLEDGE +0x07 U+0007 #BELL +0x08 U+0008 #BACKSPACE +0x09 U+0009 #HORIZONTAL TABULATION +0x0a U+000a #LINE FEED +0x0b U+000b #VERTICAL TABULATION +0x0c U+000c #FORM FEED +0x0d U+000d #CARRIAGE RETURN +0x0e U+000e #SHIFT OUT +0x0f U+000f #SHIFT IN +0x10 U+0010 #DATA LINK ESCAPE +0x11 U+0011 #DEVICE CONTROL ONE +0x12 U+0012 #DEVICE CONTROL TWO +0x13 U+0013 #DEVICE CONTROL THREE +0x14 U+0014 #DEVICE CONTROL FOUR +0x15 U+0015 #NEGATIVE ACKNOWLEDGE +0x16 U+0016 #SYNCHRONOUS IDLE +0x17 U+0017 #END OF TRANSMISSION BLOCK +0x18 U+0018 #CANCEL +0x19 U+0019 #END OF MEDIUM +0x1a U+001a #SUBSTITUTE +0x1b U+001b #ESCAPE +0x1c U+001c #FILE SEPARATOR +0x1d U+001d #GROUP SEPARATOR +0x1e U+001e #RECORD SEPARATOR +0x1f U+001f #UNIT SEPARATOR +0x20 U+0020 #SPACE +0x21 U+0021 #EXCLAMATION MARK +0x22 U+0022 #QUOTATION MARK +0x23 U+0023 #NUMBER SIGN +0x24 U+0024 #DOLLAR SIGN +0x25 U+0025 #PERCENT SIGN +0x26 U+0026 #AMPERSAND +0x27 U+0027 #APOSTROPHE +0x28 U+0028 #LEFT PARENTHESIS +0x29 U+0029 #RIGHT PARENTHESIS +0x2a U+002a #ASTERISK +0x2b U+002b #PLUS SIGN +0x2c U+002c #COMMA +0x2d U+002d #HYPHEN-MINUS +0x2e U+002e #FULL STOP +0x2f U+002f #SOLIDUS +0x30 U+0030 #DIGIT ZERO +0x31 U+0031 #DIGIT ONE +0x32 U+0032 #DIGIT TWO +0x33 U+0033 #DIGIT THREE +0x34 U+0034 #DIGIT FOUR +0x35 U+0035 #DIGIT FIVE +0x36 U+0036 #DIGIT SIX +0x37 U+0037 #DIGIT SEVEN +0x38 U+0038 #DIGIT EIGHT +0x39 U+0039 #DIGIT NINE +0x3a U+003a #COLON +0x3b U+003b #SEMICOLON +0x3c U+003c #LESS-THAN SIGN +0x3d U+003d #EQUALS SIGN +0x3e U+003e #GREATER-THAN SIGN +0x3f U+003f #QUESTION MARK +0x40 U+0040 #COMMERCIAL AT +0x41 U+0041 #LATIN CAPITAL LETTER A +0x42 U+0042 #LATIN CAPITAL LETTER B +0x43 U+0043 #LATIN CAPITAL LETTER C +0x44 U+0044 #LATIN CAPITAL LETTER D +0x45 U+0045 #LATIN CAPITAL LETTER E +0x46 U+0046 #LATIN CAPITAL LETTER F +0x47 U+0047 #LATIN CAPITAL LETTER G +0x48 U+0048 #LATIN CAPITAL LETTER H +0x49 U+0049 #LATIN CAPITAL LETTER I +0x4a U+004a #LATIN CAPITAL LETTER J +0x4b U+004b #LATIN CAPITAL LETTER K +0x4c U+004c #LATIN CAPITAL LETTER L +0x4d U+004d #LATIN CAPITAL LETTER M +0x4e U+004e #LATIN CAPITAL LETTER N +0x4f U+004f #LATIN CAPITAL LETTER O +0x50 U+0050 #LATIN CAPITAL LETTER P +0x51 U+0051 #LATIN CAPITAL LETTER Q +0x52 U+0052 #LATIN CAPITAL LETTER R +0x53 U+0053 #LATIN CAPITAL LETTER S +0x54 U+0054 #LATIN CAPITAL LETTER T +0x55 U+0055 #LATIN CAPITAL LETTER U +0x56 U+0056 #LATIN CAPITAL LETTER V +0x57 U+0057 #LATIN CAPITAL LETTER W +0x58 U+0058 #LATIN CAPITAL LETTER X +0x59 U+0059 #LATIN CAPITAL LETTER Y +0x5a U+005a #LATIN CAPITAL LETTER Z +0x5b U+005b #LEFT SQUARE BRACKET +0x5c U+005c #REVERSE SOLIDUS +0x5d U+005d #RIGHT SQUARE BRACKET +0x5e U+005e #CIRCUMFLEX ACCENT +0x5f U+005f #LOW LINE +0x60 U+0060 #GRAVE ACCENT +0x61 U+0061 #LATIN SMALL LETTER A +0x62 U+0062 #LATIN SMALL LETTER B +0x63 U+0063 #LATIN SMALL LETTER C +0x64 U+0064 #LATIN SMALL LETTER D +0x65 U+0065 #LATIN SMALL LETTER E +0x66 U+0066 #LATIN SMALL LETTER F +0x67 U+0067 #LATIN SMALL LETTER G +0x68 U+0068 #LATIN SMALL LETTER H +0x69 U+0069 #LATIN SMALL LETTER I +0x6a U+006a #LATIN SMALL LETTER J +0x6b U+006b #LATIN SMALL LETTER K +0x6c U+006c #LATIN SMALL LETTER L +0x6d U+006d #LATIN SMALL LETTER M +0x6e U+006e #LATIN SMALL LETTER N +0x6f U+006f #LATIN SMALL LETTER O +0x70 U+0070 #LATIN SMALL LETTER P +0x71 U+0071 #LATIN SMALL LETTER Q +0x72 U+0072 #LATIN SMALL LETTER R +0x73 U+0073 #LATIN SMALL LETTER S +0x74 U+0074 #LATIN SMALL LETTER T +0x75 U+0075 #LATIN SMALL LETTER U +0x76 U+0076 #LATIN SMALL LETTER V +0x77 U+0077 #LATIN SMALL LETTER W +0x78 U+0078 #LATIN SMALL LETTER X +0x79 U+0079 #LATIN SMALL LETTER Y +0x7a U+007a #LATIN SMALL LETTER Z +0x7b U+007b #LEFT CURLY BRACKET +0x7c U+007c #VERTICAL LINE +0x7d U+007d #RIGHT CURLY BRACKET +0x7e U+007e #TILDE +0x7f U+007f #DELETE +# 0x80 U+0080 #NOT USED +# 0x81 U+0081 #NOT USED +0x82 U+201a #SINGLE LOW-9 QUOTATION MARK +0x83 U+0192 #LATIN SMALL LETTER F WITH HOOK +0x84 U+201e #DOUBLE LOW-9 QUOTATION MARK +0x85 U+2026 #HORIZONTAL ELLIPSIS +0x86 U+2020 #DAGGER +0x87 U+2021 #DOUBLE DAGGER +0x88 U+02c6 #MODIFIER LETTER CIRCUMFLEX ACCENT +0x89 U+2030 #PER MILLE SIGN +0x8a U+0160 #LATIN CAPITAL LETTER S WITH CARON +0x8b U+2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK +0x8c U+0152 #LATIN CAPITAL LIGATURE OE +0x8d U+008d #NOT USED +0x8e U+008e #NOT USED +0x8f U+008f #NOT USED +0x90 U+0090 #NOT USED +0x91 U+2018 #LEFT SINGLE QUOTATION MARK +0x92 U+2019 #RIGHT SINGLE QUOTATION MARK +0x93 U+201c #LEFT DOUBLE QUOTATION MARK +0x94 U+201d #RIGHT DOUBLE QUOTATION MARK +0x95 U+2022 #BULLET +0x96 U+2013 #EN DASH +0x97 U+2014 #EM DASH +0x98 U+02dc #SMALL TILDE +0x99 U+2122 #TRADE MARK SIGN +0x9a U+0161 #LATIN SMALL LETTER S WITH CARON +0x9b U+203a #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +0x9c U+0153 #LATIN SMALL LIGATURE OE +0x9d U+009d #NOT USED +0x9e U+009e #NOT USED +0x9f U+0178 #LATIN CAPITAL LETTER Y WITH DIAERESIS +0xa0 U+00a0 #NO-BREAK SPACE +0xa1 U+00a1 #INVERTED EXCLAMATION MARK +0xa2 U+00a2 #CENT SIGN +0xa3 U+00a3 #POUND SIGN +0xa4 U+00a4 #CURRENCY SIGN +0xa5 U+00a5 #YEN SIGN +0xa6 U+00a6 #BROKEN BAR +0xa7 U+00a7 #SECTION SIGN +0xa8 U+00a8 #DIAERESIS +0xa9 U+00a9 #COPYRIGHT SIGN +0xaa U+00aa #FEMININE ORDINAL INDICATOR +0xab U+00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +0xac U+00ac #NOT SIGN +0xad U+00ad #SOFT HYPHEN +0xae U+00ae #REGISTERED SIGN +0xaf U+00af #MACRON +0xb0 U+00b0 #DEGREE SIGN +0xb1 U+00b1 #PLUS-MINUS SIGN +0xb2 U+00b2 #SUPERSCRIPT TWO +0xb3 U+00b3 #SUPERSCRIPT THREE +0xb4 U+00b4 #ACUTE ACCENT +0xb5 U+00b5 #MICRO SIGN +0xb6 U+00b6 #PILCROW SIGN +0xb7 U+00b7 #MIDDLE DOT +0xb8 U+00b8 #CEDILLA +0xb9 U+00b9 #SUPERSCRIPT ONE +0xba U+00ba #MASCULINE ORDINAL INDICATOR +0xbb U+00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +0xbc U+00bc #VULGAR FRACTION ONE QUARTER +0xbd U+00bd #VULGAR FRACTION ONE HALF +0xbe U+00be #VULGAR FRACTION THREE QUARTERS +0xbf U+00bf #INVERTED QUESTION MARK +0xc0 U+00c0 #LATIN CAPITAL LETTER A WITH GRAVE +0xc1 U+00c1 #LATIN CAPITAL LETTER A WITH ACUTE +0xc2 U+00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX +0xc3 U+00c3 #LATIN CAPITAL LETTER A WITH TILDE +0xc4 U+00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS +0xc5 U+00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE +0xc6 U+00c6 #LATIN CAPITAL LIGATURE AE +0xc7 U+00c7 #LATIN CAPITAL LETTER C WITH CEDILLA +0xc8 U+00c8 #LATIN CAPITAL LETTER E WITH GRAVE +0xc9 U+00c9 #LATIN CAPITAL LETTER E WITH ACUTE +0xca U+00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX +0xcb U+00cb #LATIN CAPITAL LETTER E WITH DIAERESIS +0xcc U+00cc #LATIN CAPITAL LETTER I WITH GRAVE +0xcd U+00cd #LATIN CAPITAL LETTER I WITH ACUTE +0xce U+00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX +0xcf U+00cf #LATIN CAPITAL LETTER I WITH DIAERESIS +0xd0 U+00d0 #LATIN CAPITAL LETTER ETH +0xd1 U+00d1 #LATIN CAPITAL LETTER N WITH TILDE +0xd2 U+00d2 #LATIN CAPITAL LETTER O WITH GRAVE +0xd3 U+00d3 #LATIN CAPITAL LETTER O WITH ACUTE +0xd4 U+00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX +0xd5 U+00d5 #LATIN CAPITAL LETTER O WITH TILDE +0xd6 U+00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS +0xd7 U+00d7 #MULTIPLICATION SIGN +0xd8 U+00d8 #LATIN CAPITAL LETTER O WITH STROKE +0xd9 U+00d9 #LATIN CAPITAL LETTER U WITH GRAVE +0xda U+00da #LATIN CAPITAL LETTER U WITH ACUTE +0xdb U+00db #LATIN CAPITAL LETTER U WITH CIRCUMFLEX +0xdc U+00dc #LATIN CAPITAL LETTER U WITH DIAERESIS +0xdd U+00dd #LATIN CAPITAL LETTER Y WITH ACUTE +0xde U+00de #LATIN CAPITAL LETTER THORN +0xdf U+00df #LATIN SMALL LETTER SHARP S +0xe0 U+00e0 #LATIN SMALL LETTER A WITH GRAVE +0xe1 U+00e1 #LATIN SMALL LETTER A WITH ACUTE +0xe2 U+00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX +0xe3 U+00e3 #LATIN SMALL LETTER A WITH TILDE +0xe4 U+00e4 #LATIN SMALL LETTER A WITH DIAERESIS +0xe5 U+00e5 #LATIN SMALL LETTER A WITH RING ABOVE +0xe6 U+00e6 #LATIN SMALL LIGATURE AE +0xe7 U+00e7 #LATIN SMALL LETTER C WITH CEDILLA +0xe8 U+00e8 #LATIN SMALL LETTER E WITH GRAVE +0xe9 U+00e9 #LATIN SMALL LETTER E WITH ACUTE +0xea U+00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX +0xeb U+00eb #LATIN SMALL LETTER E WITH DIAERESIS +0xec U+00ec #LATIN SMALL LETTER I WITH GRAVE +0xed U+00ed #LATIN SMALL LETTER I WITH ACUTE +0xee U+00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX +0xef U+00ef #LATIN SMALL LETTER I WITH DIAERESIS +0xf0 U+00f0 #LATIN SMALL LETTER ETH +0xf1 U+00f1 #LATIN SMALL LETTER N WITH TILDE +0xf2 U+00f2 #LATIN SMALL LETTER O WITH GRAVE +0xf3 U+00f3 #LATIN SMALL LETTER O WITH ACUTE +0xf4 U+00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX +0xf5 U+00f5 #LATIN SMALL LETTER O WITH TILDE +0xf6 U+00f6 #LATIN SMALL LETTER O WITH DIAERESIS +0xf7 U+00f7 #DIVISION SIGN +0xf8 U+00f8 #LATIN SMALL LETTER O WITH STROKE +0xf9 U+00f9 #LATIN SMALL LETTER U WITH GRAVE +0xfa U+00fa #LATIN SMALL LETTER U WITH ACUTE +0xfb U+00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX +0xfc U+00fc #LATIN SMALL LETTER U WITH DIAERESIS +0xfd U+00fd #LATIN SMALL LETTER Y WITH ACUTE +0xfe U+00fe #LATIN SMALL LETTER THORN +0xff U+00ff #LATIN SMALL LETTER Y WITH DIAERESIS + + diff --git a/src/chrtrans/cp437_uni.tbl b/src/chrtrans/cp437_uni.tbl new file mode 100644 index 00000000..ed97a69c --- /dev/null +++ b/src/chrtrans/cp437_uni.tbl @@ -0,0 +1,303 @@ +#Shall this become the "default" translation? +#Meaning of that is currently unclear... It's different +#from the default input or defualt output charset... +#but there has to be exactly one table marked as "default". +D0 +# +#The MIME name of this charset. +Mcp437 + +#Name as a Display Charset (used on Options screen) +OIBM PC character set +# +# Name: cp437_DOSLatinUS to Unicode table +# Unicode version: 1.1 +# Table version: 1.1 +# Table format: Format A +# Date: 03/31/95 +# Authors: Michel Suignard <michelsu@microsoft.com> +# Lori Hoerth <lorih@microsoft.com> +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp1255_WinHebrew code (in hex) +# Column #2 is the Unicode (in hex as U+XXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp437_DOSLatinUS order +# +# some mapppings of greek letters to latin letters added, +# just for fun.. -kw +# +0x00 U+0000 #NULL +0x01 U+0001 #START OF HEADING +0x02 U+0002 #START OF TEXT +0x03 U+0003 #END OF TEXT +0x04 U+0004 #END OF TRANSMISSION +0x05 U+0005 #ENQUIRY +0x06 U+0006 #ACKNOWLEDGE +0x07 U+0007 #BELL +0x08 U+0008 #BACKSPACE +0x09 U+0009 #HORIZONTAL TABULATION +0x0a U+000a #LINE FEED +0x0b U+000b #VERTICAL TABULATION +0x0c U+000c #FORM FEED +0x0d U+000d #CARRIAGE RETURN +0x0e U+000e #SHIFT OUT +0x0f U+000f #SHIFT IN +0x10 U+0010 #DATA LINK ESCAPE +0x11 U+0011 #DEVICE CONTROL ONE +0x12 U+0012 #DEVICE CONTROL TWO +0x13 U+0013 #DEVICE CONTROL THREE +0x14 U+0014 U+03a0 #DEVICE CONTROL FOUR +0x15 U+0015 #NEGATIVE ACKNOWLEDGE +0x16 U+0016 #SYNCHRONOUS IDLE +0x17 U+0017 #END OF TRANSMISSION BLOCK +0x18 U+0018 #CANCEL +0x19 U+0019 #END OF MEDIUM +0x1a U+001a #SUBSTITUTE +0x1b U+001b #ESCAPE +0x1c U+001c #FILE SEPARATOR +0x1d U+001d #GROUP SEPARATOR +0x1e U+001e #RECORD SEPARATOR +0x1f U+001f #UNIT SEPARATOR +0x20 U+0020 #SPACE +0x21 U+0021 #EXCLAMATION MARK +0x22 U+0022 #QUOTATION MARK +0x23 U+0023 #NUMBER SIGN +0x24 U+0024 #DOLLAR SIGN +0x25 U+0025 #PERCENT SIGN +0x26 U+0026 #AMPERSAND +0x27 U+0027 #APOSTROPHE +0x28 U+0028 #LEFT PARENTHESIS +0x29 U+0029 #RIGHT PARENTHESIS +0x2a U+002a #ASTERISK +0x2b U+002b #PLUS SIGN +0x2c U+002c #COMMA +0x2d U+002d #HYPHEN-MINUS +0x2e U+002e #FULL STOP +0x2f U+002f #SOLIDUS +0x30 U+0030 #DIGIT ZERO +0x31 U+0031 #DIGIT ONE +0x32 U+0032 #DIGIT TWO +0x33 U+0033 #DIGIT THREE +0x34 U+0034 #DIGIT FOUR +0x35 U+0035 #DIGIT FIVE +0x36 U+0036 #DIGIT SIX +0x37 U+0037 #DIGIT SEVEN +0x38 U+0038 #DIGIT EIGHT +0x39 U+0039 #DIGIT NINE +0x3a U+003a #COLON +0x3b U+003b #SEMICOLON +0x3c U+003c #LESS-THAN SIGN +0x3d U+003d #EQUALS SIGN +0x3e U+003e #GREATER-THAN SIGN +0x3f U+003f #QUESTION MARK +0x40 U+0040 #COMMERCIAL AT +0x41 U+0041 U+0391 #LATIN CAPITAL LETTER A +0x42 U+0042 U+0392 #LATIN CAPITAL LETTER B +0x43 U+0043 #LATIN CAPITAL LETTER C +0x44 U+0044 #LATIN CAPITAL LETTER D +0x45 U+0045 U+0395 #LATIN CAPITAL LETTER E +0x46 U+0046 #LATIN CAPITAL LETTER F +0x47 U+0047 #LATIN CAPITAL LETTER G +0x48 U+0048 U+0397 #LATIN CAPITAL LETTER H +0x49 U+0049 U+0399 #LATIN CAPITAL LETTER I +0x4a U+004a #LATIN CAPITAL LETTER J +0x4b U+004b U+039a #LATIN CAPITAL LETTER K +0x4c U+004c #LATIN CAPITAL LETTER L +0x4d U+004d U+039c #LATIN CAPITAL LETTER M +0x4e U+004e U+039d #LATIN CAPITAL LETTER N +0x4f U+004f U+039f #LATIN CAPITAL LETTER O +0x50 U+0050 U+03a1 #LATIN CAPITAL LETTER P +0x51 U+0051 #LATIN CAPITAL LETTER Q +0x52 U+0052 #LATIN CAPITAL LETTER R +0x53 U+0053 #LATIN CAPITAL LETTER S +0x54 U+0054 U+03a4 #LATIN CAPITAL LETTER T +0x55 U+0055 #LATIN CAPITAL LETTER U +0x56 U+0056 #LATIN CAPITAL LETTER V +0x57 U+0057 #LATIN CAPITAL LETTER W +0x58 U+0058 U+03a7 #LATIN CAPITAL LETTER X +0x59 U+0059 U+03a5 #LATIN CAPITAL LETTER Y +0x5a U+005a U+0396 #LATIN CAPITAL LETTER Z +0x5b U+005b #LEFT SQUARE BRACKET +0x5c U+005c #REVERSE SOLIDUS +0x5d U+005d #RIGHT SQUARE BRACKET +0x5e U+005e #CIRCUMFLEX ACCENT +0x5f U+005f #LOW LINE +0x60 U+0060 #GRAVE ACCENT +0x61 U+0061 #LATIN SMALL LETTER A +0x62 U+0062 #LATIN SMALL LETTER B +0x63 U+0063 #LATIN SMALL LETTER C +0x64 U+0064 #LATIN SMALL LETTER D +0x65 U+0065 #LATIN SMALL LETTER E +0x66 U+0066 #LATIN SMALL LETTER F +0x67 U+0067 U+03b3 #LATIN SMALL LETTER G +0x68 U+0068 U+03b7 #LATIN SMALL LETTER H +0x69 U+0069 U+03b9 #LATIN SMALL LETTER I +0x6a U+006a #LATIN SMALL LETTER J +0x6b U+006b U+03ba #LATIN SMALL LETTER K +0x6c U+006c U+03bb #LATIN SMALL LETTER L +0x6d U+006d #LATIN SMALL LETTER M +0x6e U+006e #LATIN SMALL LETTER N +0x6f U+006f U+03bf #LATIN SMALL LETTER O +0x70 U+0070 U+03c1 #LATIN SMALL LETTER P +0x71 U+0071 #LATIN SMALL LETTER Q +0x72 U+0072 #LATIN SMALL LETTER R +0x73 U+0073 U+03c2 #LATIN SMALL LETTER S +0x74 U+0074 #LATIN SMALL LETTER T +0x75 U+0075 U+03c5 #LATIN SMALL LETTER U +0x76 U+0076 U+03bd #LATIN SMALL LETTER V +0x77 U+0077 U+03c9 #LATIN SMALL LETTER W +0x78 U+0078 U+03c7 #LATIN SMALL LETTER X +0x79 U+0079 #LATIN SMALL LETTER Y +0x7a U+007a U+03b6 #LATIN SMALL LETTER Z +0x7b U+007b #LEFT CURLY BRACKET +0x7c U+007c #VERTICAL LINE +0x7d U+007d #RIGHT CURLY BRACKET +0x7e U+007e #TILDE +0x7f U+007f #DELETE +0x80 U+00c7 #LATIN CAPITAL LETTER C WITH CEDILLA +0x81 U+00fc U+03cb #LATIN SMALL LETTER U WITH DIAERESIS +0x82 U+00e9 #LATIN SMALL LETTER E WITH ACUTE +0x83 U+00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX +0x84 U+00e4 #LATIN SMALL LETTER A WITH DIAERESIS +0x85 U+00e0 #LATIN SMALL LETTER A WITH GRAVE +0x86 U+00e5 #LATIN SMALL LETTER A WITH RING ABOVE +0x87 U+00e7 #LATIN SMALL LETTER C WITH CEDILLA +0x88 U+00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX +0x89 U+00eb #LATIN SMALL LETTER E WITH DIAERESIS +0x8a U+00e8 #LATIN SMALL LETTER E WITH GRAVE +0x8b U+00ef U+03ca #LATIN SMALL LETTER I WITH DIAERESIS +0x8c U+00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX +0x8d U+00ec #LATIN SMALL LETTER I WITH GRAVE +0x8e U+00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS +0x8f U+00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE +0x90 U+00c9 #LATIN CAPITAL LETTER E WITH ACUTE +0x91 U+00e6 #LATIN SMALL LIGATURE AE +0x92 U+00c6 #LATIN CAPITAL LIGATURE AE +0x93 U+00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX +0x94 U+00f6 #LATIN SMALL LETTER O WITH DIAERESIS +0x95 U+00f2 #LATIN SMALL LETTER O WITH GRAVE +0x96 U+00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX +0x97 U+00f9 #LATIN SMALL LETTER U WITH GRAVE +0x98 U+00ff #LATIN SMALL LETTER Y WITH DIAERESIS +0x99 U+00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS +0x9a U+00dc #LATIN CAPITAL LETTER U WITH DIAERESIS +0x9b U+00a2 #CENT SIGN +0x9c U+00a3 #POUND SIGN +0x9d U+00a5 #YEN SIGN +0x9e U+20a7 #PESETA SIGN +0x9f U+0192 #LATIN SMALL LETTER F WITH HOOK +0xa0 U+00e1 U+03ac #LATIN SMALL LETTER A WITH ACUTE +0xa1 U+00ed U+03af #LATIN SMALL LETTER I WITH ACUTE +0xa2 U+00f3 U+03cc #LATIN SMALL LETTER O WITH ACUTE +0xa3 U+00fa U+03cd #LATIN SMALL LETTER U WITH ACUTE +0xa4 U+00f1 #LATIN SMALL LETTER N WITH TILDE +0xa5 U+00d1 #LATIN CAPITAL LETTER N WITH TILDE +0xa6 U+00aa #FEMININE ORDINAL INDICATOR +0xa7 U+00ba #MASCULINE ORDINAL INDICATOR +0xa8 U+00bf #INVERTED QUESTION MARK +0xa9 U+2310 #REVERSED NOT SIGN +0xaa U+00ac #NOT SIGN +0xab U+00bd #VULGAR FRACTION ONE HALF +0xac U+00bc #VULGAR FRACTION ONE QUARTER +0xad U+00a1 #INVERTED EXCLAMATION MARK +0xae U+00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +0xaf U+00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +0xb0 U+2591 #LIGHT SHADE +0xb1 U+2592 #MEDIUM SHADE +0xb2 U+2593 #DARK SHADE +0xb3 U+2502 #BOX DRAWINGS LIGHT VERTICAL +0xb4 U+2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT +0xb5 U+2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE +0xb6 U+2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE +0xb7 U+2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE +0xb8 U+2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE +0xb9 U+2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT +0xba U+2551 #BOX DRAWINGS DOUBLE VERTICAL +0xbb U+2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT +0xbc U+255d #BOX DRAWINGS DOUBLE UP AND LEFT +0xbd U+255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE +0xbe U+255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE +0xbf U+2510 #BOX DRAWINGS LIGHT DOWN AND LEFT +0xc0 U+2514 #BOX DRAWINGS LIGHT UP AND RIGHT +0xc1 U+2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL +0xc2 U+252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +0xc3 U+251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT +0xc4 U+2500 #BOX DRAWINGS LIGHT HORIZONTAL +0xc5 U+253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +0xc6 U+255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE +0xc7 U+255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE +0xc8 U+255a #BOX DRAWINGS DOUBLE UP AND RIGHT +0xc9 U+2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT +0xca U+2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL +0xcb U+2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +0xcc U+2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +0xcd U+2550 #BOX DRAWINGS DOUBLE HORIZONTAL +0xce U+256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +0xcf U+2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE +0xd0 U+2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE +0xd1 U+2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE +0xd2 U+2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE +0xd3 U+2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE +0xd4 U+2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE +0xd5 U+2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE +0xd6 U+2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE +0xd7 U+256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE +0xd8 U+256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE +0xd9 U+2518 #BOX DRAWINGS LIGHT UP AND LEFT +0xda U+250c #BOX DRAWINGS LIGHT DOWN AND RIGHT +0xdb U+2588 #FULL BLOCK +0xdc U+2584 #LOWER HALF BLOCK +0xdd U+258c #LEFT HALF BLOCK +0xde U+2590 #RIGHT HALF BLOCK +0xdf U+2580 #UPPER HALF BLOCK +0xe0 U+03b1 #GREEK SMALL LETTER ALPHA +0xe1 U+00df U+03b2 #LATIN SMALL LETTER SHARP S +0xe2 U+0393 #GREEK CAPITAL LETTER GAMMA +0xe3 U+03c0 #GREEK SMALL LETTER PI +0xe4 U+03a3 #GREEK CAPITAL LETTER SIGMA +0xe5 U+03c3 #GREEK SMALL LETTER SIGMA +0xe6 U+00b5 U+03bc #MICRO SIGN +0xe7 U+03c4 #GREEK SMALL LETTER TAU +0xe8 U+03a6 #GREEK CAPITAL LETTER PHI +0xe9 U+0398 U+03b8 #GREEK CAPITAL LETTER THETA +0xea U+03a9 #GREEK CAPITAL LETTER OMEGA +0xeb U+03b4 #GREEK SMALL LETTER DELTA +0xec U+221e #INFINITY +0xed U+03c6 #GREEK SMALL LETTER PHI +0xee U+03b5 #GREEK SMALL LETTER EPSILON +0xef U+2229 #INTERSECTION +0xf0 U+2261 #IDENTICAL TO +0xf1 U+00b1 #PLUS-MINUS SIGN +0xf2 U+2265 #GREATER-THAN OR EQUAL TO +0xf3 U+2264 #LESS-THAN OR EQUAL TO +0xf4 U+2320 #TOP HALF INTEGRAL +0xf5 U+2321 #BOTTOM HALF INTEGRAL +0xf6 U+00f7 #DIVISION SIGN +0xf7 U+2248 #ALMOST EQUAL TO +0xf8 U+00b0 #DEGREE SIGN +0xf9 U+2219 #BULLET OPERATOR +0xfa U+00b7 #MIDDLE DOT +0xfb U+221a #SQUARE ROOT +0xfc U+207f #SUPERSCRIPT LATIN SMALL LETTER N +0xfd U+00b2 #SUPERSCRIPT TWO +0xfe U+25a0 #BLACK SQUARE +0xff U+00a0 #NO-BREAK SPACE + +U+03ac:a' +U+03ad:î' +U+03ae:h' +U+03af:i' +U+03cc:o' +U+03cd:u' +U+03ce:w' + + +# TRADE MARK SIGN: +U+2122:(TM) + +0x60 U+2018 # left single quotation mark +0x27 U+2019-U+201b # various single quotation marks +0x22 U+201c-U+201f # various double quotation marks diff --git a/src/chrtrans/cp850_uni.tbl b/src/chrtrans/cp850_uni.tbl new file mode 100644 index 00000000..96de277b --- /dev/null +++ b/src/chrtrans/cp850_uni.tbl @@ -0,0 +1,292 @@ +#Shall this become the "default" translation? +#Meaning of that is currently unclear... It's different +#from the default input or defualt output charset... +#but there has to be exactly one table marked as "default". +D0 +# +#The MIME name of this charset. +Mcp850 + +#Name as a Display Charset (used on Options screen) +OIBM PC codepage 850 +# +# Name: cp850_DOSLatin1 to Unicode table +# Unicode version: 1.1 +# Table version: 1.1 +# Table format: Format A +# Date: 03/31/95 +# Authors: Michel Suignard <michelsu@microsoft.com> +# Lori Hoerth <lorih@microsoft.com> +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp1255_WinHebrew code (in hex) +# Column #2 is the Unicode (in hex as U+XXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp850_DOSLatin1 order +# +0x00 U+0000 #NULL +0x01 U+0001 #START OF HEADING +0x02 U+0002 #START OF TEXT +0x03 U+0003 #END OF TEXT +0x04 U+0004 #END OF TRANSMISSION +0x05 U+0005 #ENQUIRY +0x06 U+0006 #ACKNOWLEDGE +0x07 U+0007 #BELL +0x08 U+0008 #BACKSPACE +0x09 U+0009 #HORIZONTAL TABULATION +0x0a U+000a #LINE FEED +0x0b U+000b #VERTICAL TABULATION +0x0c U+000c #FORM FEED +0x0d U+000d #CARRIAGE RETURN +0x0e U+000e #SHIFT OUT +0x0f U+000f #SHIFT IN +0x10 U+0010 #DATA LINK ESCAPE +0x11 U+0011 #DEVICE CONTROL ONE +0x12 U+0012 #DEVICE CONTROL TWO +0x13 U+0013 #DEVICE CONTROL THREE +0x14 U+0014 #DEVICE CONTROL FOUR +0x15 U+0015 #NEGATIVE ACKNOWLEDGE +0x16 U+0016 #SYNCHRONOUS IDLE +0x17 U+0017 #END OF TRANSMISSION BLOCK +0x18 U+0018 #CANCEL +0x19 U+0019 #END OF MEDIUM +0x1a U+001a #SUBSTITUTE +0x1b U+001b #ESCAPE +0x1c U+001c #FILE SEPARATOR +0x1d U+001d #GROUP SEPARATOR +0x1e U+001e #RECORD SEPARATOR +0x1f U+001f #UNIT SEPARATOR +0x20 U+0020 #SPACE +0x21 U+0021 #EXCLAMATION MARK +0x22 U+0022 #QUOTATION MARK +0x23 U+0023 #NUMBER SIGN +0x24 U+0024 #DOLLAR SIGN +0x25 U+0025 #PERCENT SIGN +0x26 U+0026 #AMPERSAND +0x27 U+0027 #APOSTROPHE +0x28 U+0028 #LEFT PARENTHESIS +0x29 U+0029 #RIGHT PARENTHESIS +0x2a U+002a #ASTERISK +0x2b U+002b #PLUS SIGN +0x2c U+002c #COMMA +0x2d U+002d #HYPHEN-MINUS +0x2e U+002e #FULL STOP +0x2f U+002f #SOLIDUS +0x30 U+0030 #DIGIT ZERO +0x31 U+0031 #DIGIT ONE +0x32 U+0032 #DIGIT TWO +0x33 U+0033 #DIGIT THREE +0x34 U+0034 #DIGIT FOUR +0x35 U+0035 #DIGIT FIVE +0x36 U+0036 #DIGIT SIX +0x37 U+0037 #DIGIT SEVEN +0x38 U+0038 #DIGIT EIGHT +0x39 U+0039 #DIGIT NINE +0x3a U+003a #COLON +0x3b U+003b #SEMICOLON +0x3c U+003c #LESS-THAN SIGN +0x3d U+003d #EQUALS SIGN +0x3e U+003e #GREATER-THAN SIGN +0x3f U+003f #QUESTION MARK +0x40 U+0040 #COMMERCIAL AT +0x41 U+0041 #LATIN CAPITAL LETTER A +0x42 U+0042 #LATIN CAPITAL LETTER B +0x43 U+0043 #LATIN CAPITAL LETTER C +0x44 U+0044 #LATIN CAPITAL LETTER D +0x45 U+0045 #LATIN CAPITAL LETTER E +0x46 U+0046 #LATIN CAPITAL LETTER F +0x47 U+0047 #LATIN CAPITAL LETTER G +0x48 U+0048 #LATIN CAPITAL LETTER H +0x49 U+0049 #LATIN CAPITAL LETTER I +0x4a U+004a #LATIN CAPITAL LETTER J +0x4b U+004b #LATIN CAPITAL LETTER K +0x4c U+004c #LATIN CAPITAL LETTER L +0x4d U+004d #LATIN CAPITAL LETTER M +0x4e U+004e #LATIN CAPITAL LETTER N +0x4f U+004f #LATIN CAPITAL LETTER O +0x50 U+0050 #LATIN CAPITAL LETTER P +0x51 U+0051 #LATIN CAPITAL LETTER Q +0x52 U+0052 #LATIN CAPITAL LETTER R +0x53 U+0053 #LATIN CAPITAL LETTER S +0x54 U+0054 #LATIN CAPITAL LETTER T +0x55 U+0055 #LATIN CAPITAL LETTER U +0x56 U+0056 #LATIN CAPITAL LETTER V +0x57 U+0057 #LATIN CAPITAL LETTER W +0x58 U+0058 #LATIN CAPITAL LETTER X +0x59 U+0059 #LATIN CAPITAL LETTER Y +0x5a U+005a #LATIN CAPITAL LETTER Z +0x5b U+005b #LEFT SQUARE BRACKET +0x5c U+005c #REVERSE SOLIDUS +0x5d U+005d #RIGHT SQUARE BRACKET +0x5e U+005e #CIRCUMFLEX ACCENT +0x5f U+005f #LOW LINE +0x60 U+0060 #GRAVE ACCENT +0x61 U+0061 #LATIN SMALL LETTER A +0x62 U+0062 #LATIN SMALL LETTER B +0x63 U+0063 #LATIN SMALL LETTER C +0x64 U+0064 #LATIN SMALL LETTER D +0x65 U+0065 #LATIN SMALL LETTER E +0x66 U+0066 #LATIN SMALL LETTER F +0x67 U+0067 #LATIN SMALL LETTER G +0x68 U+0068 #LATIN SMALL LETTER H +0x69 U+0069 #LATIN SMALL LETTER I +0x6a U+006a #LATIN SMALL LETTER J +0x6b U+006b #LATIN SMALL LETTER K +0x6c U+006c #LATIN SMALL LETTER L +0x6d U+006d #LATIN SMALL LETTER M +0x6e U+006e #LATIN SMALL LETTER N +0x6f U+006f #LATIN SMALL LETTER O +0x70 U+0070 #LATIN SMALL LETTER P +0x71 U+0071 #LATIN SMALL LETTER Q +0x72 U+0072 #LATIN SMALL LETTER R +0x73 U+0073 #LATIN SMALL LETTER S +0x74 U+0074 #LATIN SMALL LETTER T +0x75 U+0075 #LATIN SMALL LETTER U +0x76 U+0076 #LATIN SMALL LETTER V +0x77 U+0077 #LATIN SMALL LETTER W +0x78 U+0078 #LATIN SMALL LETTER X +0x79 U+0079 #LATIN SMALL LETTER Y +0x7a U+007a #LATIN SMALL LETTER Z +0x7b U+007b #LEFT CURLY BRACKET +0x7c U+007c #VERTICAL LINE +0x7d U+007d #RIGHT CURLY BRACKET +0x7e U+007e #TILDE +0x7f U+007f #DELETE +0x80 U+00c7 #LATIN CAPITAL LETTER C WITH CEDILLA +0x81 U+00fc #LATIN SMALL LETTER U WITH DIAERESIS +0x82 U+00e9 #LATIN SMALL LETTER E WITH ACUTE +0x83 U+00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX +0x84 U+00e4 #LATIN SMALL LETTER A WITH DIAERESIS +0x85 U+00e0 #LATIN SMALL LETTER A WITH GRAVE +0x86 U+00e5 #LATIN SMALL LETTER A WITH RING ABOVE +0x87 U+00e7 #LATIN SMALL LETTER C WITH CEDILLA +0x88 U+00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX +0x89 U+00eb #LATIN SMALL LETTER E WITH DIAERESIS +0x8a U+00e8 #LATIN SMALL LETTER E WITH GRAVE +0x8b U+00ef #LATIN SMALL LETTER I WITH DIAERESIS +0x8c U+00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX +0x8d U+00ec #LATIN SMALL LETTER I WITH GRAVE +0x8e U+00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS +0x8f U+00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE +0x90 U+00c9 #LATIN CAPITAL LETTER E WITH ACUTE +0x91 U+00e6 #LATIN SMALL LIGATURE AE +0x92 U+00c6 #LATIN CAPITAL LIGATURE AE +0x93 U+00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX +0x94 U+00f6 #LATIN SMALL LETTER O WITH DIAERESIS +0x95 U+00f2 #LATIN SMALL LETTER O WITH GRAVE +0x96 U+00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX +0x97 U+00f9 #LATIN SMALL LETTER U WITH GRAVE +0x98 U+00ff #LATIN SMALL LETTER Y WITH DIAERESIS +0x99 U+00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS +0x9a U+00dc #LATIN CAPITAL LETTER U WITH DIAERESIS +0x9b U+00f8 #LATIN SMALL LETTER O WITH STROKE +0x9c U+00a3 #POUND SIGN +0x9d U+00d8 #LATIN CAPITAL LETTER O WITH STROKE +0x9e U+00d7 #MULTIPLICATION SIGN +0x9f U+0192 #LATIN SMALL LETTER F WITH HOOK +0xa0 U+00e1 #LATIN SMALL LETTER A WITH ACUTE +0xa1 U+00ed #LATIN SMALL LETTER I WITH ACUTE +0xa2 U+00f3 #LATIN SMALL LETTER O WITH ACUTE +0xa3 U+00fa #LATIN SMALL LETTER U WITH ACUTE +0xa4 U+00f1 #LATIN SMALL LETTER N WITH TILDE +0xa5 U+00d1 #LATIN CAPITAL LETTER N WITH TILDE +0xa6 U+00aa #FEMININE ORDINAL INDICATOR +0xa7 U+00ba #MASCULINE ORDINAL INDICATOR +0xa8 U+00bf #INVERTED QUESTION MARK +0xa9 U+00ae #REGISTERED SIGN +0xaa U+00ac #NOT SIGN +0xab U+00bd #VULGAR FRACTION ONE HALF +0xac U+00bc #VULGAR FRACTION ONE QUARTER +0xad U+00a1 #INVERTED EXCLAMATION MARK +0xae U+00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +0xaf U+00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +0xb0 U+2591 #LIGHT SHADE +0xb1 U+2592 #MEDIUM SHADE +0xb2 U+2593 #DARK SHADE +0xb3 U+2502 #BOX DRAWINGS LIGHT VERTICAL +0xb4 U+2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT +0xb5 U+00c1 #LATIN CAPITAL LETTER A WITH ACUTE +0xb6 U+00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX +0xb7 U+00c0 #LATIN CAPITAL LETTER A WITH GRAVE +0xb8 U+00a9 #COPYRIGHT SIGN +0xb9 U+2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT +0xba U+2551 #BOX DRAWINGS DOUBLE VERTICAL +0xbb U+2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT +0xbc U+255d #BOX DRAWINGS DOUBLE UP AND LEFT +0xbd U+00a2 #CENT SIGN +0xbe U+00a5 #YEN SIGN +0xbf U+2510 #BOX DRAWINGS LIGHT DOWN AND LEFT +0xc0 U+2514 #BOX DRAWINGS LIGHT UP AND RIGHT +0xc1 U+2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL +0xc2 U+252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +0xc3 U+251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT +0xc4 U+2500 #BOX DRAWINGS LIGHT HORIZONTAL +0xc5 U+253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +0xc6 U+00e3 #LATIN SMALL LETTER A WITH TILDE +0xc7 U+00c3 #LATIN CAPITAL LETTER A WITH TILDE +0xc8 U+255a #BOX DRAWINGS DOUBLE UP AND RIGHT +0xc9 U+2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT +0xca U+2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL +0xcb U+2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +0xcc U+2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +0xcd U+2550 #BOX DRAWINGS DOUBLE HORIZONTAL +0xce U+256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +0xcf U+00a4 #CURRENCY SIGN +0xd0 U+00f0 #LATIN SMALL LETTER ETH +0xd1 U+00d0 #LATIN CAPITAL LETTER ETH +0xd2 U+00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX +0xd3 U+00cb #LATIN CAPITAL LETTER E WITH DIAERESIS +0xd4 U+00c8 #LATIN CAPITAL LETTER E WITH GRAVE +0xd5 U+0131 #LATIN SMALL LETTER DOTLESS I +0xd6 U+00cd #LATIN CAPITAL LETTER I WITH ACUTE +0xd7 U+00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX +0xd8 U+00cf #LATIN CAPITAL LETTER I WITH DIAERESIS +0xd9 U+2518 #BOX DRAWINGS LIGHT UP AND LEFT +0xda U+250c #BOX DRAWINGS LIGHT DOWN AND RIGHT +0xdb U+2588 #FULL BLOCK +0xdc U+2584 #LOWER HALF BLOCK +0xdd U+00a6 #BROKEN BAR +0xde U+00cc #LATIN CAPITAL LETTER I WITH GRAVE +0xdf U+2580 #UPPER HALF BLOCK +0xe0 U+00d3 #LATIN CAPITAL LETTER O WITH ACUTE +0xe1 U+00df #LATIN SMALL LETTER SHARP S +0xe2 U+00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX +0xe3 U+00d2 #LATIN CAPITAL LETTER O WITH GRAVE +0xe4 U+00f5 #LATIN SMALL LETTER O WITH TILDE +0xe5 U+00d5 #LATIN CAPITAL LETTER O WITH TILDE +0xe6 U+00b5 #MICRO SIGN +0xe7 U+00fe #LATIN SMALL LETTER THORN +0xe8 U+00de #LATIN CAPITAL LETTER THORN +0xe9 U+00da #LATIN CAPITAL LETTER U WITH ACUTE +0xea U+00db #LATIN CAPITAL LETTER U WITH CIRCUMFLEX +0xeb U+00d9 #LATIN CAPITAL LETTER U WITH GRAVE +0xec U+00fd #LATIN SMALL LETTER Y WITH ACUTE +0xed U+00dd #LATIN CAPITAL LETTER Y WITH ACUTE +0xee U+00af #MACRON +0xef U+00b4 #ACUTE ACCENT +0xf0 U+00ad #SOFT HYPHEN +0xf1 U+00b1 #PLUS-MINUS SIGN +0xf2 U+2017 #DOUBLE LOW LINE +0xf3 U+00be #VULGAR FRACTION THREE QUARTERS +0xf4 U+00b6 #PILCROW SIGN +0xf5 U+00a7 #SECTION SIGN +0xf6 U+00f7 #DIVISION SIGN +0xf7 U+00b8 #CEDILLA +0xf8 U+00b0 #DEGREE SIGN +0xf9 U+00a8 #DIAERESIS +0xfa U+00b7 #MIDDLE DOT +0xfb U+00b9 #SUPERSCRIPT ONE +0xfc U+00b3 #SUPERSCRIPT THREE +0xfd U+00b2 #SUPERSCRIPT TWO +0xfe U+25a0 #BLACK SQUARE +0xff U+00a0 #NO-BREAK SPACE + + +# TRADE MARK SIGN: +U+2122:(TM) + +0x60 U+2018 # left single quotation mark +0x27 U+2019-U+201b # various single quotation marks +0x22 U+201c-U+201f # various double quotation marks diff --git a/src/chrtrans/cp852_uni.tbl b/src/chrtrans/cp852_uni.tbl new file mode 100644 index 00000000..e84454a8 --- /dev/null +++ b/src/chrtrans/cp852_uni.tbl @@ -0,0 +1,287 @@ +#The MIME name of this charset. +Mcp852 + +#Name as a Display Charset (used on Options screen) +O PC Latin2 CP 852 + +# +# Name: cp852_DOSLatin2 to Unicode table +# Unicode version: 2.0 +# Table version: 2.00 +# Table format: Format A +# Date: 04/24/96 +# Authors: Lori Brownell <loribr@microsoft.com> +# K.D. Chang <a-kchang@microsoft.com> +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp852_DOSLatin2 code (in hex) +# Column #2 is the Unicode (in hex as 0xXXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp852_DOSLatin2 order +# +#0x00 U+0000 #NULL +#0x01 U+0001 #START OF HEADING +#0x02 U+0002 #START OF TEXT +#0x03 U+0003 #END OF TEXT +#0x04 U+0004 #END OF TRANSMISSION +#0x05 U+0005 #ENQUIRY +#0x06 U+0006 #ACKNOWLEDGE +#0x07 U+0007 #BELL +#0x08 U+0008 #BACKSPACE +#0x09 U+0009 #HORIZONTAL TABULATION +#0x0a U+000a #LINE FEED +#0x0b U+000b #VERTICAL TABULATION +#0x0c U+000c #FORM FEED +#0x0d U+000d #CARRIAGE RETURN +#0x0e U+000e #SHIFT OUT +#0x0f U+000f #SHIFT IN +#0x10 U+0010 #DATA LINK ESCAPE +#0x11 U+0011 #DEVICE CONTROL ONE +#0x12 U+0012 #DEVICE CONTROL TWO +#0x13 U+0013 #DEVICE CONTROL THREE +#0x14 U+0014 #DEVICE CONTROL FOUR +#0x15 U+0015 #NEGATIVE ACKNOWLEDGE +#0x16 U+0016 #SYNCHRONOUS IDLE +#0x17 U+0017 #END OF TRANSMISSION BLOCK +#0x18 U+0018 #CANCEL +#0x19 U+0019 #END OF MEDIUM +#0x1a U+001a #SUBSTITUTE +#0x1b U+001b #ESCAPE +#0x1c U+001c #FILE SEPARATOR +#0x1d U+001d #GROUP SEPARATOR +#0x1e U+001e #RECORD SEPARATOR +#0x1f U+001f #UNIT SEPARATOR +0x20 U+0020 #SPACE +0x21 U+0021 #EXCLAMATION MARK +0x22 U+0022 #QUOTATION MARK +0x23 U+0023 #NUMBER SIGN +0x24 U+0024 #DOLLAR SIGN +0x25 U+0025 #PERCENT SIGN +0x26 U+0026 #AMPERSAND +0x27 U+0027 #APOSTROPHE +0x28 U+0028 #LEFT PARENTHESIS +0x29 U+0029 #RIGHT PARENTHESIS +0x2a U+002a #ASTERISK +0x2b U+002b #PLUS SIGN +0x2c U+002c #COMMA +0x2d U+002d #HYPHEN-MINUS +0x2e U+002e #FULL STOP +0x2f U+002f #SOLIDUS +0x30 U+0030 #DIGIT ZERO +0x31 U+0031 #DIGIT ONE +0x32 U+0032 #DIGIT TWO +0x33 U+0033 #DIGIT THREE +0x34 U+0034 #DIGIT FOUR +0x35 U+0035 #DIGIT FIVE +0x36 U+0036 #DIGIT SIX +0x37 U+0037 #DIGIT SEVEN +0x38 U+0038 #DIGIT EIGHT +0x39 U+0039 #DIGIT NINE +0x3a U+003a #COLON +0x3b U+003b #SEMICOLON +0x3c U+003c #LESS-THAN SIGN +0x3d U+003d #EQUALS SIGN +0x3e U+003e #GREATER-THAN SIGN +0x3f U+003f #QUESTION MARK +0x40 U+0040 #COMMERCIAL AT +0x41 U+0041 #LATIN CAPITAL LETTER A +0x42 U+0042 #LATIN CAPITAL LETTER B +0x43 U+0043 #LATIN CAPITAL LETTER C +0x44 U+0044 #LATIN CAPITAL LETTER D +0x45 U+0045 #LATIN CAPITAL LETTER E +0x46 U+0046 #LATIN CAPITAL LETTER F +0x47 U+0047 #LATIN CAPITAL LETTER G +0x48 U+0048 #LATIN CAPITAL LETTER H +0x49 U+0049 #LATIN CAPITAL LETTER I +0x4a U+004a #LATIN CAPITAL LETTER J +0x4b U+004b #LATIN CAPITAL LETTER K +0x4c U+004c #LATIN CAPITAL LETTER L +0x4d U+004d #LATIN CAPITAL LETTER M +0x4e U+004e #LATIN CAPITAL LETTER N +0x4f U+004f #LATIN CAPITAL LETTER O +0x50 U+0050 #LATIN CAPITAL LETTER P +0x51 U+0051 #LATIN CAPITAL LETTER Q +0x52 U+0052 #LATIN CAPITAL LETTER R +0x53 U+0053 #LATIN CAPITAL LETTER S +0x54 U+0054 #LATIN CAPITAL LETTER T +0x55 U+0055 #LATIN CAPITAL LETTER U +0x56 U+0056 #LATIN CAPITAL LETTER V +0x57 U+0057 #LATIN CAPITAL LETTER W +0x58 U+0058 #LATIN CAPITAL LETTER X +0x59 U+0059 #LATIN CAPITAL LETTER Y +0x5a U+005a #LATIN CAPITAL LETTER Z +0x5b U+005b #LEFT SQUARE BRACKET +0x5c U+005c #REVERSE SOLIDUS +0x5d U+005d #RIGHT SQUARE BRACKET +0x5e U+005e #CIRCUMFLEX ACCENT +0x5f U+005f #LOW LINE +0x60 U+0060 #GRAVE ACCENT +0x61 U+0061 #LATIN SMALL LETTER A +0x62 U+0062 #LATIN SMALL LETTER B +0x63 U+0063 #LATIN SMALL LETTER C +0x64 U+0064 #LATIN SMALL LETTER D +0x65 U+0065 #LATIN SMALL LETTER E +0x66 U+0066 #LATIN SMALL LETTER F +0x67 U+0067 #LATIN SMALL LETTER G +0x68 U+0068 #LATIN SMALL LETTER H +0x69 U+0069 #LATIN SMALL LETTER I +0x6a U+006a #LATIN SMALL LETTER J +0x6b U+006b #LATIN SMALL LETTER K +0x6c U+006c #LATIN SMALL LETTER L +0x6d U+006d #LATIN SMALL LETTER M +0x6e U+006e #LATIN SMALL LETTER N +0x6f U+006f #LATIN SMALL LETTER O +0x70 U+0070 #LATIN SMALL LETTER P +0x71 U+0071 #LATIN SMALL LETTER Q +0x72 U+0072 #LATIN SMALL LETTER R +0x73 U+0073 #LATIN SMALL LETTER S +0x74 U+0074 #LATIN SMALL LETTER T +0x75 U+0075 #LATIN SMALL LETTER U +0x76 U+0076 #LATIN SMALL LETTER V +0x77 U+0077 #LATIN SMALL LETTER W +0x78 U+0078 #LATIN SMALL LETTER X +0x79 U+0079 #LATIN SMALL LETTER Y +0x7a U+007a #LATIN SMALL LETTER Z +0x7b U+007b #LEFT CURLY BRACKET +0x7c U+007c #VERTICAL LINE +0x7d U+007d #RIGHT CURLY BRACKET +0x7e U+007e #TILDE +#0x7f U+007f #DELETE +0x80 U+00c7 #LATIN CAPITAL LETTER C WITH CEDILLA +0x81 U+00fc #LATIN SMALL LETTER U WITH DIAERESIS +0x82 U+00e9 #LATIN SMALL LETTER E WITH ACUTE +0x83 U+00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX +0x84 U+00e4 #LATIN SMALL LETTER A WITH DIAERESIS +0x85 U+016f #LATIN SMALL LETTER U WITH RING ABOVE +0x86 U+0107 #LATIN SMALL LETTER C WITH ACUTE +0x87 U+00e7 #LATIN SMALL LETTER C WITH CEDILLA +0x88 U+0142 #LATIN SMALL LETTER L WITH STROKE +0x89 U+00eb #LATIN SMALL LETTER E WITH DIAERESIS +0x8a U+0150 #LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +0x8b U+0151 #LATIN SMALL LETTER O WITH DOUBLE ACUTE +0x8c U+00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX +0x8d U+0179 #LATIN CAPITAL LETTER Z WITH ACUTE +0x8e U+00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS +0x8f U+0106 #LATIN CAPITAL LETTER C WITH ACUTE +0x90 U+00c9 #LATIN CAPITAL LETTER E WITH ACUTE +0x91 U+0139 #LATIN CAPITAL LETTER L WITH ACUTE +0x92 U+013a #LATIN SMALL LETTER L WITH ACUTE +0x93 U+00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX +0x94 U+00f6 #LATIN SMALL LETTER O WITH DIAERESIS +0x95 U+013d #LATIN CAPITAL LETTER L WITH CARON +0x96 U+013e #LATIN SMALL LETTER L WITH CARON +0x97 U+015a #LATIN CAPITAL LETTER S WITH ACUTE +0x98 U+015b #LATIN SMALL LETTER S WITH ACUTE +0x99 U+00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS +0x9a U+00dc #LATIN CAPITAL LETTER U WITH DIAERESIS +0x9b U+0164 #LATIN CAPITAL LETTER T WITH CARON +0x9c U+0165 #LATIN SMALL LETTER T WITH CARON +0x9d U+0141 #LATIN CAPITAL LETTER L WITH STROKE +0x9e U+00d7 #MULTIPLICATION SIGN +0x9f U+010d #LATIN SMALL LETTER C WITH CARON +0xa0 U+00e1 #LATIN SMALL LETTER A WITH ACUTE +0xa1 U+00ed #LATIN SMALL LETTER I WITH ACUTE +0xa2 U+00f3 #LATIN SMALL LETTER O WITH ACUTE +0xa3 U+00fa #LATIN SMALL LETTER U WITH ACUTE +0xa4 U+0104 #LATIN CAPITAL LETTER A WITH OGONEK +0xa5 U+0105 #LATIN SMALL LETTER A WITH OGONEK +0xa6 U+017d #LATIN CAPITAL LETTER Z WITH CARON +0xa7 U+017e #LATIN SMALL LETTER Z WITH CARON +0xa8 U+0118 #LATIN CAPITAL LETTER E WITH OGONEK +0xa9 U+0119 #LATIN SMALL LETTER E WITH OGONEK +0xaa U+00ac #NOT SIGN +0xab U+017a #LATIN SMALL LETTER Z WITH ACUTE +0xac U+010c #LATIN CAPITAL LETTER C WITH CARON +0xad U+015f #LATIN SMALL LETTER S WITH CEDILLA +0xae U+00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +0xaf U+00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +0xb0 U+2591 #LIGHT SHADE +0xb1 U+2592 #MEDIUM SHADE +0xb2 U+2593 #DARK SHADE +0xb3 U+2502 #BOX DRAWINGS LIGHT VERTICAL +0xb4 U+2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT +0xb5 U+00c1 #LATIN CAPITAL LETTER A WITH ACUTE +0xb6 U+00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX +0xb7 U+011a #LATIN CAPITAL LETTER E WITH CARON +0xb8 U+015e #LATIN CAPITAL LETTER S WITH CEDILLA +0xb9 U+2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT +0xba U+2551 #BOX DRAWINGS DOUBLE VERTICAL +0xbb U+2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT +0xbc U+255d #BOX DRAWINGS DOUBLE UP AND LEFT +0xbd U+017b #LATIN CAPITAL LETTER Z WITH DOT ABOVE +0xbe U+017c #LATIN SMALL LETTER Z WITH DOT ABOVE +0xbf U+2510 #BOX DRAWINGS LIGHT DOWN AND LEFT +0xc0 U+2514 #BOX DRAWINGS LIGHT UP AND RIGHT +0xc1 U+2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL +0xc2 U+252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +0xc3 U+251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT +0xc4 U+2500 #BOX DRAWINGS LIGHT HORIZONTAL +0xc5 U+253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +0xc6 U+0102 #LATIN CAPITAL LETTER A WITH BREVE +0xc7 U+0103 #LATIN SMALL LETTER A WITH BREVE +0xc8 U+255a #BOX DRAWINGS DOUBLE UP AND RIGHT +0xc9 U+2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT +0xca U+2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL +0xcb U+2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +0xcc U+2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +0xcd U+2550 #BOX DRAWINGS DOUBLE HORIZONTAL +0xce U+256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +0xcf U+00a4 #CURRENCY SIGN +0xd0 U+0111 #LATIN SMALL LETTER D WITH STROKE +0xd1 U+0110 #LATIN CAPITAL LETTER D WITH STROKE +0xd2 U+010e #LATIN CAPITAL LETTER D WITH CARON +0xd3 U+00cb #LATIN CAPITAL LETTER E WITH DIAERESIS +0xd4 U+010f #LATIN SMALL LETTER D WITH CARON +0xd5 U+0147 #LATIN CAPITAL LETTER N WITH CARON +0xd6 U+00cd #LATIN CAPITAL LETTER I WITH ACUTE +0xd7 U+00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX +0xd8 U+011b #LATIN SMALL LETTER E WITH CARON +0xd9 U+2518 #BOX DRAWINGS LIGHT UP AND LEFT +0xda U+250c #BOX DRAWINGS LIGHT DOWN AND RIGHT +0xdb U+2588 #FULL BLOCK +0xdc U+2584 #LOWER HALF BLOCK +0xdd U+0162 #LATIN CAPITAL LETTER T WITH CEDILLA +0xde U+016e #LATIN CAPITAL LETTER U WITH RING ABOVE +0xdf U+2580 #UPPER HALF BLOCK +0xe0 U+00d3 #LATIN CAPITAL LETTER O WITH ACUTE +0xe1 U+00df #LATIN SMALL LETTER SHARP S +0xe2 U+00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX +0xe3 U+0143 #LATIN CAPITAL LETTER N WITH ACUTE +0xe4 U+0144 #LATIN SMALL LETTER N WITH ACUTE +0xe5 U+0148 #LATIN SMALL LETTER N WITH CARON +0xe6 U+0160 #LATIN CAPITAL LETTER S WITH CARON +0xe7 U+0161 #LATIN SMALL LETTER S WITH CARON +0xe8 U+0154 #LATIN CAPITAL LETTER R WITH ACUTE +0xe9 U+00da #LATIN CAPITAL LETTER U WITH ACUTE +0xea U+0155 #LATIN SMALL LETTER R WITH ACUTE +0xeb U+0170 #LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +0xec U+00fd #LATIN SMALL LETTER Y WITH ACUTE +0xed U+00dd #LATIN CAPITAL LETTER Y WITH ACUTE +0xee U+0163 #LATIN SMALL LETTER T WITH CEDILLA +0xef U+00b4 #ACUTE ACCENT +0xf0 U+00ad #SOFT HYPHEN +0xf1 U+02dd #DOUBLE ACUTE ACCENT +0xf2 U+02db #OGONEK +0xf3 U+02c7 #CARON +0xf4 U+02d8 #BREVE +0xf5 U+00a7 #SECTION SIGN +0xf6 U+00f7 #DIVISION SIGN +0xf7 U+00b8 #CEDILLA +0xf8 U+00b0 #DEGREE SIGN +0xf9 U+00a8 #DIAERESIS +0xfa U+02d9 #DOT ABOVE +0xfb U+0171 #LATIN SMALL LETTER U WITH DOUBLE ACUTE +0xfc U+0158 #LATIN CAPITAL LETTER R WITH CARON +0xfd U+0159 #LATIN SMALL LETTER R WITH CARON +0xfe U+25a0 #BLACK SQUARE +0xff U+00a0 #NO-BREAK SPACE + + +# TRADE MARK SIGN: +U+2122:(TM) + +0x60 U+2018 # left single quotation mark +0x27 U+2019-U+201b # various single quotation marks +0x22 U+201c-U+201f # various double quotation marks diff --git a/src/chrtrans/def7_uni.tbl b/src/chrtrans/def7_uni.tbl new file mode 100644 index 00000000..ab7fd4de --- /dev/null +++ b/src/chrtrans/def7_uni.tbl @@ -0,0 +1,2150 @@ +# Default 7bit replacements. If the MIME name is set to us-ascii, +# this will be identified with the "7 bit approximations" Display +# character set. + +#The MIME name of this charset. +M us-ascii + +# Shall this become the "default" translation table? YES! +# There has to be exactly one table marked as "default". +D1 + +0x20-0x2f idem +0x3a idem +0x3f-0x7e idem + +#U+00a0:NS +U+00a1:! +U+00a2:Ct +U+00a3:Pd +U+00a4:Cu +U+00a5:Ye +U+00a6:| +U+00a7:SE +U+00a8:" +U+00a9:(C) +U+00aa:-a +U+00ab:<< +U+00ac:NO +U+00ad:-- +U+00ae:(R) +U+00af:'m +U+00b0:DG +U+00b1:+- +U+00b2:^2 +U+00b3:^3 +U+00b4:' +U+00b5:My +U+00b6:PI +U+00b7:.M +U+00b8:, +U+00b9:^1 +U+00ba:-o +U+00bb:>> +U+00bc: 1/4 +U+00bd: 1/2 +U+00be: 3/4 +U+00bf:? +0x41 U+00c0-U+00c3 +U+00c4:A: +U+00c5:AA +U+00c6:AE +U+00c7:C, +0x45 U+00c8-U+00cb +0x49 U+00cc-U+00cf +U+00d0:D- +0x4e U+00d1 +0x4f U+00d2-U+00d5 +U+00d6:O: +0x2a U+00d7 +U+00d8:O/ +0x55 U+00d9-U+00db +U+00dc:U: +0x59 U+00dd +U+00de:TH +U+00df:ss +U+00e0:`a +0x61 U+00e1-U+00e3 +U+00e4:a: +U+00e5:aa +U+00e6:ae +U+00e7:c, +0x65 U+00e8-U+00eb +U+00ec:`i +0x69 U+00ed-U+00ef +U+00f0:d- +0x6e U+00f1 +0x6f U+00f2-U+00f5 +U+00f6:o: +U+00f7:-: +U+00f8:o/ +0x75 U+00f9-U+00fb +U+00fc:u: +0x79 U+00fd +U+00fe:th +0x79 U+00ff +0x41 U+0100 U+0102 U+0104 +0x61 U+0101 U+0103 U+0105 +0x43 U+0106 U+0108 U+010a U+010c +0x63 U+0107 U+0109 U+010b U+010d +0x44 U+010e +0x64 U+010f +U+0110:D/ +U+0111:d/ +0x45 U+0112 U+0114 U+0116 U+0118 U+011a +0x65 U+0113 U+0115 U+0117 U+0119 U+011b +0x47 U+011c U+011e U+0120 U+0122 +0x67 U+011d U+011f U+0121 U+0123 +0x48 U+0124 +0x68 U+0125 +U+0126:H/ +0x48 U+0127 # LATIN SMALL LETTER H BAR -> H +0x49 U+0128 U+012a U+012c U+012e U+0130 +0x69 U+0129 U+012b U+012d U+012f U+0131 +U+0132:IJ +U+0133:ij +0x4a U+0134 +0x6a U+0135 +0x4b U+0136 +0x4b U+0137 +U+0138:kk +0x4c U+0139 U+013b U+013d +0x6c U+013a U+013c U+013e +U+013f:L. +U+0140:l. +U+0141:L/ +U+0142:l/ +0x4e U+0143 U+0145 U+0147 +0x6e U+0144 U+0146 U+0148 +U+0149:'n +U+014a:NG +0x4e U+014B # LATIN SMALL LETTER ENG -> N +0x4f U+014c U+014e +0x6f U+014e U+014f +U+0150:O" +U+0151:o" +U+0152:OE +U+0153:oe +0x52 U+0154 U+0156 U+0158 +0x72 U+0155 U+0157 U+0159 +0x53 U+015a U+015c U+015e U+0160 +0x73 U+015b U+015d U+015f U+0161 +0x54 U+0162 U+0164 +0x74 U+0163 U+0165 +U+0166:T/ +U+0167:t/ +0x55 U+0168 U+016a U+016c U+016e U+0172 +0x75 U+0169 U+016b U+016d U+016f U+0173 +U+0170:U" +U+0171:u" +0x57 U+0174 +0x77 U+0175 +0x59 U+0176 U+0178 +0x79 U+0177 +0x5a U+0179 U+017b U+017d +0x7a U+017a U+017c U+017e +U+017f:s1 +U+0187:C2 +U+0188:c2 +U+0191:F2 +U+0192:f2 +U+0198:K2 +U+0199:k2 +U+01a0:O9 +U+01a1:o9 +U+01a2:OI +U+01a3:oi +U+01a6:yr +U+01af:U9 +U+01b0:u9 +U+01b5:Z/ +U+01b6:z/ +U+01b7:ED +0x41 U+01cd +0x61 U+01ce +0x49 U+01cf +0x69 U+01d0 +0x4f U+01d1 +0x6f U+01d2 +0x55 U+01d3 +0x75 U+01d4 +U+01d5:U:- +U+01d6:u:- +U+01d7:U:' +U+01d8:u:' +U+01d9:U:< +U+01da:u:< +U+01db:U:! +U+01dc:u:! +U+01de:A1 +U+01df:a1 +U+01e0:A7 +U+01e1:a7 +U+01e2:A3 +U+01e3:a3 +U+01e4:G/ +U+01e5:g/ +0x47 U+01e6 +0x67 U+01e7 +0x4b U+01e8 +0x6b U+01e9 +0x4f U+01ea +0x6f U+01eb +U+01ec:O1 +U+01ed:o1 +U+01ee:EZ +U+01ef:ez +0x6a U+01f0 +0x47 U+01f4 +0x67 U+01f5 +U+01fa:AA' +U+01fb:aa' +U+01fc:AE' +U+01fd:ae' +U+01fe:O/' +U+01ff:o/' +U+0200:A!! +U+0201:a!! +U+0202:A) +U+0203:a) +U+0204:E!! +U+0205:e!! +U+0206:E) +U+0207:e) +U+0208:I!! +U+0209:i!! +U+020a:I) +U+020b:i) +U+020c:O!! +U+020d:o!! +U+020e:O) +U+020f:o) +U+0210:R!! +U+0211:r!! +U+0212:R) +U+0213:r) +U+0214:U!! +U+0215:u!! +U+0216:U) +U+0217:u) + +# IPA symbols, from +# Linkname: FAQ: Representing IPA Phonetics in ASCII +# URL: http://www.hpl.hp.com/personal/Evan_Kirshenbaum/IPA/faq.html +# +0x41 U+0251 # LATIN SMALL LETTER SCRIPT A -> A +U+0252:A. +U+0253:b` +0x4f U+0254 # LATIN SMALL LETTER OPEN O -> O +U+0256:d. +U+0257:d` +U+0258:@<umd> +0x40 U+0259 # LATIN SMALL LETTER SCHWA -> @ +0x52 U+025A # LATIN SMALL LETTER SCHWA HOOK -> R +0x45 U+025B # LATIN SMALL LETTER EPSILON -> E +U+025c:V" +U+025d:R<umd> +U+025e:O" +0x4a U+025F # LATIN SMALL LETTER DOTLESS J BAR -> J +U+0260:g` +0x67 U+0261 # LATIN SMALL LETTER SCRIPT G +0x47 U+0262 # LATIN LETTER SMALL CAPITAL G +0x51 U+0263 # LATIN SMALL LETTER GAMMA -> Q +U+0264:o- +U+0265:j<rnd> +U+0266:h<?> +U+0268:i" +0x49 U+026A U+0269 # LATIN LETTER SMALL CAPITAL I, LATIN SMALL LETTER IOTA +0x4c U+026B # LATIN SMALL LETTER L WITH MIDDLE TILDE +0x4c U+026C # LATIN SMALL LETTER L BELT +U+026d:l. +U+026e:z<lat> +U+026f:u- +U+0270:j<vel> +0x4d U+0271 # LATIN SMALL LETTER M HOOK +U+0273:n. +U+0274:n" +U+0275:@. +U+0276:&. +0x55 U+0277 # LATIN SMALL LETTER CLOSED OMEGA -> U +0x72 U+0279 # LATIN SMALL LETTER TURNED R -> r +U+027a:*<lat> +U+027b:r. +U+027d:*. +0x2a U+027E # LATIN SMALL LETTER FISHHOOK R -> * +U+0280:r" +0x52 U+0280 # LATIN LETTER SMALL CAPITAL R -> R +U+0281:g" +U+0282:s. +0x53 U+0283 # LATIN SMALL LETTER ESH -> S +U+0284:J` +U+0287:t! +U+0288:t. +U+0289:u" +0x55 U+028A # LATIN SMALL LETTER UPSILON -> U +U+028b:r<lbd> +0x56 U+028C # LATIN SMALL LETTER TURNED V -> V +U+028d:w<vls> +U+028e:l^ +U+028f:I. +U+0290:z. +U+0292:ed +0x3f U+0294 # LATIN SMALL LETTER GLOTTAL STOP -> ? +U+0295:H<vcd> +U+0296:l! +U+0297:c! +U+0298:p! +U+0299:b<trl> +U+029b:G` +0x6a U+029d # LATIN SMALL LETTER CROSSED-TAIL J +U+029e:k! +0x4c U+029F # LATIN LETTER SMALL CAPITAL L +U+02a0:q` +U+02b0:<h> +U+02b1:<?> +0x3b U+02b2 U+0321 +U+02b3:<r> +U+02b7:<w> +U+02bb:;S +0x60 U+02bc +U+02c6:1> +U+02c7:'< +U+02c9:1- +U+02cb:1! +0x3a U+02d0 +U+02d8:'( +U+02d9:'. +U+02da:'0 +U+02db:'; +U+02dc:1? +U+02dd:'" +0x7e U+0303 U+0334 +0x2e U+0322 U+0323 +U+0324:<?> +U+0325:<o> +0x2d U+0329 +0x5b U+032a +U+032b:<w> +U+0334:<H> +U+0374:' +U+0375:, +U+037a:j3 +U+037e:?% +U+0384:'* +U+0385:'% +U+0386:A% +U+0387:.* +U+0388:E% +U+0389:Y% +U+038a:I% +U+038c:O% +U+038e:U% +U+038f:W% +U+0390:i3 +U+0391:A +U+0392:B +U+0393:G* +U+0394:D* +U+0395:E +U+0396:Z +U+0397:Y* +U+0398:H* +U+0399:I +U+039a:K +U+039b:L* +U+039c:M +U+039d:N +U+039e:C* +U+039f:O +U+03a0:P* +U+03a1:R* +U+03a3:S* +U+03a4:T +U+03a5:U* +U+03a6:F* +U+03a7:X* +U+03a8:Q* +U+03a9:W* +U+03aa:J* +U+03ab:V* +U+03ac:a% +U+03ad:e% +U+03ae:y% +U+03af:i% +U+03b0:u3 +U+03b1:a* +U+03b2:b* +U+03b3:g* +U+03b4:d* +U+03b5:e* +U+03b6:z* +U+03b7:y* +U+03b8:h* +U+03b9:i* +U+03ba:k* +U+03bb:l* +U+03bc:m* +U+03bd:n* +U+03be:c* +U+03bf:o +U+03c0:p* +U+03c1:r* +U+03c2:*s +U+03c3:s* +U+03c4:t* +U+03c5:u* +U+03c6:f* +U+03c7:x* +U+03c8:q* +U+03c9:w* +U+03ca:j* +U+03cb:v* +U+03cc:o% +U+03cd:u% +U+03ce:w% +U+03d0:b3 +U+03da:T3 +U+03db:t3 +U+03dc:M3 +U+03dd:m3 +U+03de:K3 +U+03df:k3 +U+03e0:P3 +U+03e1:p3 +U+03f4:'% +U+03f5:j3 +# Cyrillic capital letters +0x6e U+0401 +U+0402:D% +U+0403:G% +U+0404:IE +U+0405:DS +U+0406:II +U+0407:YI +U+0408:J% +U+0409:LJ +U+040a:NJ +U+040b:Ts +U+040c:KJ +U+040e:V% +U+040f:DZ +0x61-0x62 U+0410-U+0411 +0x77 U+0412 +0x67 U+0413 +0x64-0x65 U+0414-U+0415 +0x76 U+0416 +0x7a U+0417 +0x69-0x70 U+0418-U+041f +0x72-0x75 U+0420-U+0423 +0x66 U+0424 +0x68 U+0425 +0x63 U+0426 +0x7e U+0427 +0x7b U+0428 +0x7d U+0429 +0x27 U+042a +0x79 U+042b +0x78 U+042c +0x7c U+042d +0x60 U+042e +0x71 U+042f + +# Cyrillic small letters +0x41-0x42 U+0430-U+0431 +0x57 U+0432 +0x47 U+0433 +0x44-0x45 U+0434-U+0435 +0x56 U+0436 +0x5a U+0437 +0x49-0x50 U+0438-U+043f +0x52-0x55 U+0440-U+0443 +0x46 U+0444 +0x48 U+0445 +0x43 U+0446 +0x5e U+0447 +0x5b U+0448 +0x5d U+0449 +0x27 U+044a +0x59 U+044b +0x58 U+044c +0x5c U+044d +0x40 U+044e +0x51 U+044f + +0x65 U+0451 #:io +U+0452:d% +U+0453:g% +U+0454:ie +U+0455:ds +U+0456:ii +U+0457:yi +U+0458:j% +U+0459:lj +U+045a:nj +U+045b:ts +U+045c:kj +U+045e:v% +U+045f:dz +U+0462:Y3 +U+0463:y3 +U+046a:O3 +U+046b:o3 +U+0472:F3 +U+0473:f3 +U+0474:V3 +U+0475:v3 +U+0480:C3 +U+0481:c3 +U+0490:G3 +U+0491:g3 +U+05d0:A+ +U+05d1:B+ +U+05d2:G+ +U+05d3:D+ +U+05d4:H+ +U+05d5:W+ +U+05d6:Z+ +U+05d7:X+ +U+05d8:Tj +U+05d9:J+ +U+05da:K% +U+05db:K+ +U+05dc:L+ +U+05dd:M% +U+05de:M+ +U+05df:N% +U+05e0:N+ +U+05e1:S+ +U+05e2:E+ +U+05e3:P% +U+05e4:P+ +U+05e5:Zj +U+05e6:ZJ +U+05e7:Q+ +U+05e8:R+ +U+05e9:Sh +U+05ea:T+ +U+060c:,+ +U+061b:;+ +U+061f:?+ +U+0621:H' +U+0622:aM +U+0623:aH +U+0624:wH +U+0625:ah +U+0626:yH +U+0627:a+ +U+0628:b+ +U+0629:tm +U+062a:t+ +U+062b:tk +U+062c:g+ +U+062d:hk +U+062e:x+ +U+062f:d+ +U+0630:dk +U+0631:r+ +U+0632:z+ +U+0633:s+ +U+0634:sn +U+0635:c+ +U+0636:dd +U+0637:tj +U+0638:zH +U+0639:e+ +U+063a:i+ +U+0640:++ +U+0641:f+ +U+0642:q+ +U+0643:k+ +U+0644:l+ +U+0645:m+ +U+0646:n+ +U+0647:h+ +U+0648:w+ +U+0649:j+ +U+064a:y+ +U+064b::+ +U+064c:"+ +U+064d:=+ +U+064e:/+ +U+064f:'+ +U+0650:1+ +U+0651:3+ +U+0652:0+ +U+0660:0a +U+0661:1a +U+0662:2a +U+0663:3a +U+0664:4a +U+0665:5a +U+0666:6a +U+0667:7a +U+0668:8a +U+0669:9a +U+0670:aS +U+067e:p+ +U+0681:hH +U+0686:tc +U+0698:zj +U+06a4:v+ +U+06af:gf +U+06f0:0a +U+06f1:1a +U+06f2:2a +U+06f3:3a +U+06f4:4a +U+06f5:5a +U+06f6:6a +U+06f7:7a +U+06f8:8a +U+06f9:9a + +# Replacement strings for Ethiopic characters +U+1200:he +U+1201:hu +U+1202:hi +U+1203:ha +U+1204:hE +0x68 U+1205 #:h +U+1206:ho +U+1208:le +U+1209:lu +U+120A:li +U+120B:la +U+120C:lE +0x6c U+120D #:l +U+120E:lo +U+120F:lWa +U+1210:He +U+1211:Hu +U+1212:Hi +U+1213:Ha +U+1214:HE +0x48 U+1215 #:H +U+1216:Ho +U+1217:HWa +U+1218:me +U+1219:mu +U+121A:mi +U+121B:ma +U+121C:mE +0x6d U+121D #:m +U+121E:mo +U+121F:mWa +U+1220:`se +U+1221:`su +U+1222:`si +U+1223:`sa +U+1224:`sE +U+1225:`s +U+1226:`so +U+1227:`sWa +U+1228:re +U+1229:ru +U+122A:ri +U+122B:ra +U+122C:rE +0x72 U+122D #:r +U+122E:ro +U+122F:rWa +U+1230:se +U+1231:su +U+1232:si +U+1233:sa +U+1234:sE +0x73 U+1235 #:s +U+1236:so +U+1237:sWa +U+1238:xe +U+1239:xu +U+123A:xi +U+123B:xa +U+123C:xE +U+123D:xa +U+123E:xo +U+123F:xWa +U+1240:qe +U+1241:qu +U+1242:qi +U+1243:qa +U+1244:qE +0x71 U+1245 #:q +U+1246:qo +U+1248:qWe +U+124A:qWi +U+124B:qWa +U+124C:qWE +U+124D:qW +U+1250:Qe +U+1251:Qu +U+1252:Qi +U+1253:Qa +U+1254:QE +0x51 U+1255 #:Q +U+1256:Qo +U+1258:QWe +U+125A:QWi +U+125B:QWa +U+125C:QWE +U+125D:QW +U+1260:be +U+1261:bu +U+1262:bi +U+1263:ba +U+1264:bE +0x62 U+1265 #:b +U+1266:bo +U+1267:bWa +U+1268:ve +U+1269:vu +U+126A:vi +U+126B:va +U+126C:vE +0x76 U+126D #:v +U+126E:vo +U+126F:vWa +U+1270:te +U+1271:tu +U+1272:ti +U+1273:ta +U+1274:tE +0x74 U+1275 #:t +U+1276:to +U+1277:tWa +U+1278:ce +U+1279:cu +U+127A:ci +U+127B:ca +U+127C:cE +0x63 U+127D #:c +U+127E:co +U+127F:cWa +U+1280:`he +U+1281:`hu +U+1282:`hi +U+1283:`ha +U+1284:`hE +U+1285:`h +U+1286:`ho +U+1288:hWe +U+128A:hWi +U+128B:hWa +U+128C:hWE +U+128D:hW +U+1290:na +U+1291:nu +U+1292:ni +U+1293:na +U+1294:nE +0x6e U+1295 #:n +U+1296:no +U+1297:nWa +U+1298:Ne +U+1299:Nu +U+129A:Ni +U+129B:Na +U+129C:NE +0x4e U+129D #:N +U+129E:No +U+129F:NWa +0x65 U+12A0 #:e +0x75 U+12A1 #:u +0x69 U+12A2 #:i +0x61 U+12A3 #:a +0x45 U+12A4 #:E +0x49 U+12A5 #:I +0x6f U+12A6 #:o +U+12A7:e3 +U+12A8:ke +U+12A9:ku +U+12AA:ki +U+12AB:ka +U+12AC:kE +0x6b U+12AD #:k +U+12AE:ko +U+12B0:kWe +U+12B2:kWi +U+12B3:kWa +U+12B4:kWE +U+12B5:kW +U+12B8:Ke +U+12B9:Ku +U+12BA:Ki +U+12BB:Ka +U+12BC:KE +0x4b U+12BD #:K +U+12BE:Ko +U+12C0:KWe +U+12C2:KWi +U+12C3:KWa +U+12C4:KWE +U+12C5:KW +U+12C8:we +U+12C9:wu +U+12CA:wi +U+12CB:wa +U+12CC:wE +0x77 U+12CD #:w +U+12CE:wo +U+12D0:`e +U+12D1:`u +U+12D2:`i +U+12D3:`a +U+12D4:`E +U+12D5:`I +U+12D6:`o +U+12D8:ze +U+12D9:zu +U+12DA:zi +U+12DB:za +U+12DC:zE +0x7a U+12DD #:z +U+12DE:zo +U+12DF:zWa +U+12E0:Ze +U+12E1:Zu +U+12E2:Zi +U+12E3:Za +U+12E4:ZE +0x5a U+12E5 #:Z +U+12E6:Zo +U+12E7:ZWa +U+12E8:ye +U+12E9:yu +U+12EA:yi +U+12EB:ya +U+12EC:yE +0x79 U+12ED #:y +U+12EE:yo +U+12EF:yWa +U+12F0:de +U+12F1:du +U+12F2:di +U+12F3:da +U+12F4:dE +0x64 U+12F5 #:d +U+12F6:do +U+12F7:dWa +U+12F8:De +U+12F9:Du +U+12FA:Di +U+12FB:Da +U+12FC:DE +0x44 U+12FD #:D +U+12FE:Do +U+12FF:DWa +U+1300:je +U+1301:ju +U+1302:ji +U+1303:ja +U+1304:jE +0x6a U+1305 #:j +U+1306:jo +U+1307:jWa +U+1308:ga +U+1309:gu +U+130A:gi +U+130B:ga +U+130C:gE +0x67 U+130D #:g +U+130E:go +U+1310:gWu +U+1312:gWi +U+1313:gWa +U+1314:gWE +U+1315:gW +U+1318:Ge +U+1319:Gu +U+131A:Gi +U+131B:Ga +U+131C:GE +0x47 U+131D #:G +U+131E:Go +U+131F:GWa +U+1320:Te +U+1321:Tu +U+1322:Ti +U+1323:Ta +U+1324:TE +0x54 U+1325 #:T +U+1326:To +U+1327:TWa +U+1328:Ce +U+1329:Ca +U+132A:Cu +U+132B:Ca +U+132C:CE +0x43 U+132D #:C +U+132E:Co +U+132F:CWa +U+1330:Pe +U+1331:Pu +U+1332:Pi +U+1333:Pa +U+1334:PE +0x50 U+1335 #:P +U+1336:Po +U+1337:PWa +U+1338:SWe +U+1339:SWu +U+133A:SWi +U+133B:SWa +U+133C:SWE +U+133D:SW +U+133E:SWo +U+133F:SWa +U+1340:`Sa +U+1341:`Su +U+1342:`Si +U+1343:`Sa +U+1344:`SE +U+1345:`S +U+1346:`So +U+1348:fa +U+1349:fu +U+134A:fi +U+134B:fa +U+134C:fE +0x46 U+134D #:f +U+134E:fo +U+134F:fWa +U+1350:pe +U+1351:pu +U+1352:pi +U+1353:pa +U+1354:pE +0x70 U+1355 #:p +U+1356:po +U+1357:pWa +U+1358:mYa +U+1359:rYa +U+135A:fYa +# ETHIOPIC SPACE U+1360 mapped to ASCII space above +0x3a U+1361 #:: +U+1362::: +0x2c U+1363 #:, +U+1364:; +U+1365:-: +U+1366::- +U+1367:`? +U+1368::|: +U+1369:`1 +U+136A:`2 +U+136B:`3 +U+136C:`4 +U+136D:`5 +U+136E:`6 +U+136F:`7 +U+1370:`8 +U+1371:`9 +U+1372:`10 +U+1373:`20 +U+1374:`30 +U+1375:`40 +U+1376:`50 +U+1377:`60 +U+1378:`70 +U+1379:`80 +U+137A:`90 +U+137B:`100 +U+137C:`10000 + + +U+1e00:A-0 +U+1e01:a-0 +U+1e02:B. +U+1e03:b. +U+1e04:B-. +U+1e05:b-. +U+1e06:B_ +U+1e07:b_ +U+1e08:C,' +U+1e09:c,' +U+1e0a:D. +U+1e0b:d. +U+1e0c:D-. +U+1e0d:d-. +U+1e0e:D_ +U+1e0f:d_ +U+1e10:D, +U+1e11:d, +U+1e12:D-> +U+1e13:d-> +U+1e14:E-! +U+1e15:e-! +U+1e16:E-' +U+1e17:e-' +U+1e18:E-> +U+1e19:e-> +U+1e1a:E-? +U+1e1b:e-? +U+1e1c:E,( +U+1e1d:e,( +U+1e1e:F. +U+1e1f:f. +U+1e20:G- +U+1e21:g- +U+1e22:H. +U+1e23:h. +U+1e24:H-. +U+1e25:h-. +U+1e26:H: +U+1e27:h: +U+1e28:H, +U+1e29:h, +U+1e2a:H-( +U+1e2b:h-( +U+1e2c:I-? +U+1e2d:i-? +U+1e2e:I:' +U+1e2f:i:' +U+1e30:K' +U+1e31:k' +U+1e32:K-. +U+1e33:k-. +U+1e34:K_ +U+1e35:k_ +U+1e36:L-. +U+1e37:l-. +U+1e38:L--. +U+1e39:l--. +U+1e3a:L_ +U+1e3b:l_ +U+1e3c:L-> +U+1e3d:l-> +U+1e3e:M' +U+1e3f:m' +U+1e40:M. +U+1e41:m. +U+1e42:M-. +U+1e43:m-. +U+1e44:N. +U+1e45:n. +U+1e46:N-. +U+1e47:n-. +U+1e48:N_ +U+1e49:n_ +U+1e4a:N-> +U+1e4b:n-> +U+1e4c:O?' +U+1e4d:o?' +U+1e4e:O?: +U+1e4f:o?: +U+1e50:O-! +U+1e51:o-! +U+1e52:O-' +U+1e53:o-' +U+1e54:P' +U+1e55:p' +U+1e56:P. +U+1e57:p. +U+1e58:R. +U+1e59:r. +U+1e5a:R-. +U+1e5b:r-. +U+1e5c:R--. +U+1e5d:r--. +U+1e5e:R_ +U+1e5f:r_ +U+1e60:S. +U+1e61:s. +U+1e62:S-. +U+1e63:s-. +U+1e64:S'. +U+1e65:s'. +U+1e66:S<. +U+1e67:s<. +U+1e68:S.-. +U+1e69:s.-. +U+1e6a:T. +U+1e6b:t. +U+1e6c:T-. +U+1e6d:t-. +U+1e6e:T_ +U+1e6f:t_ +U+1e70:T-> +U+1e71:t-> +U+1e72:U--: +U+1e73:u--: +U+1e74:U-? +U+1e75:u-? +U+1e76:U-> +U+1e77:u-> +U+1e78:U?' +U+1e79:u?' +U+1e7a:U-: +U+1e7b:u-: +U+1e7c:V? +U+1e7d:v? +U+1e7e:V-. +U+1e7f:v-. +U+1e80:W! +U+1e81:w! +U+1e82:W' +U+1e83:w' +U+1e84:W: +U+1e85:w: +U+1e86:W. +U+1e87:w. +U+1e88:W-. +U+1e89:w-. +U+1e8a:X. +U+1e8b:x. +U+1e8c:X: +U+1e8d:x: +U+1e8e:Y. +U+1e8f:y. +U+1e90:Z> +U+1e91:z> +U+1e92:Z-. +U+1e93:z-. +U+1e94:Z_ +U+1e95:z_ +U+1e96:h_ +U+1e97:t: +U+1e98:w0 +U+1e99:y0 +U+1ea0:A-. +U+1ea1:a-. +U+1ea2:A2 +U+1ea3:a2 +U+1ea4:A>' +U+1ea5:a>' +U+1ea6:A>! +U+1ea7:a>! +U+1ea8:A>2 +U+1ea9:a>2 +U+1eaa:A>? +U+1eab:a>? +U+1eac:A>-. +U+1ead:a>-. +U+1eae:A(' +U+1eaf:a(' +U+1eb0:A(! +U+1eb1:a(! +U+1eb2:A(2 +U+1eb3:a(2 +U+1eb4:A(? +U+1eb5:a(? +U+1eb6:A(-. +U+1eb7:a(-. +U+1eb8:E-. +U+1eb9:e-. +U+1eba:E2 +U+1ebb:e2 +U+1ebc:E? +U+1ebd:e? +U+1ebe:E>' +U+1ebf:e>' +U+1ec0:E>! +U+1ec1:e>! +U+1ec2:E>2 +U+1ec3:e>2 +U+1ec4:E>? +U+1ec5:e>? +U+1ec6:E>-. +U+1ec7:e>-. +U+1ec8:I2 +U+1ec9:i2 +U+1eca:I-. +U+1ecb:i-. +U+1ecc:O-. +U+1ecd:o-. +U+1ece:O2 +U+1ecf:o2 +U+1ed0:O>' +U+1ed1:o>' +U+1ed2:O>! +U+1ed3:o>! +U+1ed4:O>2 +U+1ed5:o>2 +U+1ed6:O>? +U+1ed7:o>? +U+1ed8:O>-. +U+1ed9:o>-. +U+1eda:O9' +U+1edb:o9' +U+1edc:O9! +U+1edd:o9! +U+1ede:O92 +U+1edf:o92 +U+1ee0:O9? +U+1ee1:o9? +U+1ee2:O9-. +U+1ee3:o9-. +U+1ee4:U-. +U+1ee5:u-. +U+1ee6:U2 +U+1ee7:u2 +U+1ee8:U9' +U+1ee9:u9' +U+1eea:U9! +U+1eeb:u9! +U+1eec:U92 +U+1eed:u92 +U+1eee:U9? +U+1eef:u9? +U+1ef0:U9-. +U+1ef1:u9-. +U+1ef2:Y! +U+1ef3:y! +U+1ef4:Y-. +U+1ef5:y-. +U+1ef6:Y2 +U+1ef7:y2 +U+1ef8:Y? +U+1ef9:y? +U+1f00:;' +U+1f01:,' +U+1f02:;! +U+1f03:,! +U+1f04:?; +U+1f05:?, +U+1f06:!: +U+1f07:?: +U+1fbf:,, +U+1fc0:?* +U+1fc1:?: +U+1fcd:,! +U+1fce:,' +U+1fcf:?, +U+1fdd:;! +U+1fde:;' +U+1fdf:?; +U+1fed:!: +U+1fef:!* +U+1ffe:;; +0x20 U+2002 U+2004-U+2006 U+2009 # spaces +U+2003: +U+200e:(->) +U+200f:(<-) +U+200a: +0x2d U+2010 U+2013-U+2015 # hyphen-like +U+2016:|| +U+2017:=2 +0x60 U+2018 # left single quotation mark +0x27 U+2019-U+201b # various single quotation marks +0x22 U+201c-U+201f # various double quotation marks +U+2020:/- +U+2021:/= +U+2022: o +U+2025:.. +U+2025:... + +# Dont wanna see these: +# POP DIRECTIONAL FORMATTING 202C +U+202c: +# LEFT-TO-RIGHT OVERRIDE 202D +U+202d: + +U+2030: 0/00 +U+2032:' +U+2033:'' +U+2034:''' +U+2035:` +U+2036:`` +U+2037:``` +U+2038:Ca +U+2039:< +U+203a:> +U+203b::X +U+203c:!! +U+203e:'- +U+2044:/ +U+2070:^0 +U+2074:^4 +U+2075:^5 +U+2076:^6 +U+2077:^7 +U+2078:^8 +U+2079:^9 +U+207a:^+ +U+207b:^- +U+207c:^= +U+207d:^( +U+207e:^) +U+207f:^n +U+2080:_0 +U+2081:_1 +U+2082:_2 +U+2083:_3 +U+2084:_4 +U+2085:_5 +U+2086:_6 +U+2087:_7 +U+2088:_8 +U+2089:_9 +U+208a:_+ +U+208b:_- +U+208c:_= +U+208d:( +U+208e:) +U+20a3:Ff +U+20a4:Li +U+20a7:Pt +U+20a9:W= +U+2103:oC +U+2105:c/o +U+2109:oF +U+2116:No. +U+2117:PO +U+211e:Rx +U+2120:(SM) +U+2122:(TM) +U+2126:Ohm +U+212b:Ang. +U+2153: 1/3 +U+2154: 2/3 +U+2155: 1/5 +U+2156: 2/5 +U+2157: 3/5 +U+2158: 4/5 +U+2159: 1/6 +U+215a: 5/6 +U+215b: 1/8 +U+215c: 3/8 +U+215d: 5/8 +U+215e: 7/8 +U+2160:I +U+2161:II +U+2162:III +U+2163:IV +U+2164:V +U+2165:VI +U+2166:VII +U+2167:VIII +U+2168:IX +U+2169:X +U+216a:XI +U+216b:XII +U+216c:L +U+216d:C +U+216e:D +U+216f:M +U+2170:i +U+2171:ii +U+2172:iii +U+2173:iv +U+2174:v +U+2175:vi +U+2176:vii +U+2177:viii +U+2178:ix +U+2179:x +U+217a:xi +U+217b:xii +U+217c:l +U+217d:c +U+217e:d +U+217f:m +U+2180:1000RCD +U+2181:5000R +U+2182:10000R +U+2190:<- +U+2191:-! +U+2192:-> +U+2193:-v +U+2194:<> +U+2195:UD +U+2196:<!! +U+2197://> +U+2198:!!> +U+2199:<// +U+21a8:UD- +U+21c0:>V +U+21d0:<= +U+21d2:=> +U+21d4:== +U+2200:FA +U+2202:d +U+2203:TE +U+2205:{} +U+2206:decr. +U+2207:Nabla +U+2208:(- +U+220b:-) +U+220f:*P +U+2211:+Z +U+2212: - +U+2213:-/+ +U+2214:.+ +U+2217:* +U+2218:Ob +U+2219:sb +U+221a:RT +U+221d:0( +U+221e:00 +U+221f:-L +U+2220:-V +U+2225:PP +U+2227:AND +U+2228:OR +U+2229:(U +U+222a:)U +U+222b:In +U+222c:DI +U+222e:Io +U+2234:.: +U+2235::. +U+2236::R +U+2237::: +U+223c:?1 +U+223e:CG +U+2243:?- +U+2245:?= +U+2248:?2 +U+224c:=? +U+2253:HI +U+2260:!= +U+2261:=3 +U+2264:=< +U+2265:>= +U+226a:<< +U+226b:>> +U+226e:!< +U+226f:!> +U+2282:(C +U+2283:)C +U+2286:(_ +U+2287:)_ +U+2299:0. +U+229a:02 +U+22a5:-T +U+22c5:.P +U+22ee::3 +U+22ef:.3 +U+2302:Eh +U+2308:<7 +U+2309:>7 +U+230a:7< +U+230b:7> +U+2310:NI +U+2312:(A +U+2315:TR +U+2318:88 +U+2320:Iu +U+2321:Il +U+2329:</ +U+232a:/> +U+2423:Vs +U+2440:1h +U+2441:3h +U+2442:2h +U+2443:4h +U+2446:1j +U+2447:2j +U+2448:3j +U+2449:4j +U+2460:1-o +U+2461:2-o +U+2462:3-o +U+2463:4-o +U+2464:5-o +U+2465:6-o +U+2466:7-o +U+2467:8-o +U+2468:9-o +U+2469:10-o +U+246a:11-o +U+246b:12-o +U+246c:13-o +U+246d:14-o +U+246e:15-o +U+246f:16-o +U+2470:17-o +U+2471:18-o +U+2472:19-o +U+2473:20-o +U+2474:(1) +U+2475:(2) +U+2476:(3) +U+2477:(4) +U+2478:(5) +U+2479:(6) +U+247a:(7) +U+247b:(8) +U+247c:(9) +U+247d:(10) +U+247e:(11) +U+247f:(12) +U+2480:(13) +U+2481:(14) +U+2482:(15) +U+2483:(16) +U+2484:(17) +U+2485:(18) +U+2486:(19) +U+2487:(20) +U+2488:1. +U+2489:2. +U+248a:3. +U+248b:4. +U+248c:5. +U+248d:6. +U+248e:7. +U+248f:8. +U+2490:9. +U+2491:10. +U+2492:11. +U+2493:12. +U+2494:13. +U+2495:14. +U+2496:15. +U+2497:16. +U+2498:17. +U+2499:18. +U+249a:19. +U+249b:20. +U+249c:(a) +U+249d:(b) +U+249e:(c) +U+249f:(d) +U+24a0:(e) +U+24a1:(f) +U+24a2:(g) +U+24a3:(h) +U+24a4:(i) +U+24a5:(j) +U+24a6:(k) +U+24a7:(l) +U+24a8:(m) +U+24a9:(n) +U+24aa:(o) +U+24ab:(p) +U+24ac:(q) +U+24ad:(r) +U+24ae:(s) +U+24af:(t) +U+24b0:(u) +U+24b1:(v) +U+24b2:(w) +U+24b3:(x) +U+24b4:(y) +U+24b5:(z) +U+24b6:A-o +U+24b7:B-o +U+24b8:C-o +U+24b9:D-o +U+24ba:E-o +U+24bb:F-o +U+24bc:G-o +U+24bd:H-o +U+24be:I-o +U+24bf:J-o +U+24c0:K-o +U+24c1:L-o +U+24c2:M-o +U+24c3:N-o +U+24c4:O-o +U+24c5:P-o +U+24c6:Q-o +U+24c7:R-o +U+24c8:S-o +U+24c9:T-o +U+24ca:U-o +U+24cb:V-o +U+24cc:W-o +U+24cd:X-o +U+24ce:Y-o +U+24cf:Z-o +U+24d0:a-o +U+24d1:b-o +U+24d2:c-o +U+24d3:d-o +U+24d4:e-o +U+24d5:f-o +U+24d6:g-o +U+24d7:h-o +U+24d8:i-o +U+24d9:j-o +U+24da:k-o +U+24db:l-o +U+24dc:m-o +U+24dd:n-o +U+24de:o-o +U+24df:p-o +U+24e0:q-o +U+24e1:r-o +U+24e2:s-o +U+24e3:t-o +U+24e4:u-o +U+24e5:v-o +U+24e6:w-o +U+24e7:x-o +U+24e8:y-o +U+24e9:z-o +U+24ea:0-o +U+2500:- +U+2501:= +U+2502:| +U+2503:| +U+2504:- +U+2505:= +U+2506:| +U+2507:| +U+2508:- +U+2509:= +U+250a:| +U+250b:| +0x2b U+250c-U+256c # box drawings, use + +U+2571:/ +U+2572:\ +U+2580:TB +U+2584:LB +U+2588:FB +U+258c:lB +U+2590:RB +U+2591:.S +U+2592::S +U+2593:?S +U+25a0:fS +U+25a1:OS +U+25a2:RO +U+25a3:Rr +U+25a4:RF +U+25a5:RY +U+25a6:RH +U+25a7:RZ +U+25a8:RK +U+25a9:RX +U+25aa:sB +U+25ac:SR +U+25ad:Or +U+25b2:UT +U+25b3:uT +U+25b6:PR +U+25b7:Tr +U+25ba:PR +U+25bc:Dt +U+25bd:dT +U+25c0:PL +U+25c1:Tl +U+25c4:PL +U+25c6:Db +U+25c7:Dw +U+25ca:LZ +U+25cb:0m +U+25ce:0o +U+25cf:0M +U+25d0:0L +U+25d1:0R +U+25d8:Sn +U+25d9:Ic +U+25e2:Fd +U+25e3:Bd +U+25ef:Ci +U+2605:*2 +U+2606:*1 +U+260e:TEL +U+260f:tel +U+261c:<-- +U+261e:--> +U+263a::-) +U+263b:(-: +U+263c:SU +U+2640:f. +U+2642:m. +U+2660:cS +U+2661:cH +U+2662:cD +U+2663:cC +U+2664:cS- +U+2665:cH- +U+2666:cD- +U+2667:cC- +U+2669:Md +U+266a:M8 +U+266b:M2 +U+266c:M16 +U+266d:b +U+266e:Mx +U+266f:# +0x58 U+2713 U+2717 # check marks +U+2720:-X +0x20 U+3000 # ideographic space +U+3001:,_ +U+3002:._ +U+3003:+" +U+3004:JIS +U+3005:*_ +U+3006:;_ +U+3007:0_ +U+300a:<+ +U+300b:>+ +U+300c:<' +U+300d:>' +U+300e:<" +U+300f:>" +U+3010:(" +U+3011:)" +U+3012:=T +U+3013:=_ +U+3014:(' +U+3015:)' +U+3016:(I +U+3017:)I +U+301c:-? +U+3020:=T:) +U+3041:A5 +U+3042:a5 +U+3043:I5 +U+3044:i5 +U+3045:U5 +U+3046:u5 +U+3047:E5 +U+3048:e5 +U+3049:O5 +U+304a:o5 +U+304b:ka +U+304c:ga +U+304d:ki +U+304e:gi +U+304f:ku +U+3050:gu +U+3051:ke +U+3052:ge +U+3053:ko +U+3054:go +U+3055:sa +U+3056:za +U+3057:si +U+3058:zi +U+3059:su +U+305a:zu +U+305b:se +U+305c:ze +U+305d:so +U+305e:zo +U+305f:ta +U+3060:da +U+3061:ti +U+3062:di +U+3063:tU +U+3064:tu +U+3065:du +U+3066:te +U+3067:de +U+3068:to +U+3069:do +U+306a:na +U+306b:ni +U+306c:nu +U+306d:ne +U+306e:no +U+306f:ha +U+3070:ba +U+3071:pa +U+3072:hi +U+3073:bi +U+3074:pi +U+3075:hu +U+3076:bu +U+3077:pu +U+3078:he +U+3079:be +U+307a:pe +U+307b:ho +U+307c:bo +U+307d:po +U+307e:ma +U+307f:mi +U+3080:mu +U+3081:me +U+3082:mo +U+3083:yA +U+3084:ya +U+3085:yU +U+3086:yu +U+3087:yO +U+3088:yo +U+3089:ra +U+308a:ri +U+308b:ru +U+308c:re +U+308d:ro +U+308e:wA +U+308f:wa +U+3090:wi +U+3091:we +U+3092:wo +U+3093:n5 +U+3094:vu +U+309b:"5 +U+309c:05 +U+309d:*5 +U+309e:+5 +U+30a1:a6 +U+30a2:A6 +U+30a3:i6 +U+30a4:I6 +U+30a5:u6 +U+30a6:U6 +U+30a7:e6 +U+30a8:E6 +U+30a9:o6 +U+30aa:O6 +U+30ab:Ka +U+30ac:Ga +U+30ad:Ki +U+30ae:Gi +U+30af:Ku +U+30b0:Gu +U+30b1:Ke +U+30b2:Ge +U+30b3:Ko +U+30b4:Go +U+30b5:Sa +U+30b6:Za +U+30b7:Si +U+30b8:Zi +U+30b9:Su +U+30ba:Zu +U+30bb:Se +U+30bc:Ze +U+30bd:So +U+30be:Zo +U+30bf:Ta +U+30c0:Da +U+30c1:Ti +U+30c2:Di +U+30c3:TU +U+30c4:Tu +U+30c5:Du +U+30c6:Te +U+30c7:De +U+30c8:To +U+30c9:Do +U+30ca:Na +U+30cb:Ni +U+30cc:Nu +U+30cd:Ne +U+30ce:No +U+30cf:Ha +U+30d0:Ba +U+30d1:Pa +U+30d2:Hi +U+30d3:Bi +U+30d4:Pi +U+30d5:Hu +U+30d6:Bu +U+30d7:Pu +U+30d8:He +U+30d9:Be +U+30da:Pe +U+30db:Ho +U+30dc:Bo +U+30dd:Po +U+30de:Ma +U+30df:Mi +U+30e0:Mu +U+30e1:Me +U+30e2:Mo +U+30e3:YA +U+30e4:Ya +U+30e5:YU +U+30e6:Yu +U+30e7:YO +U+30e8:Yo +U+30e9:Ra +U+30ea:Ri +U+30eb:Ru +U+30ec:Re +U+30ed:Ro +U+30ee:WA +U+30ef:Wa +U+30f0:Wi +U+30f1:We +U+30f2:Wo +U+30f3:N6 +U+30f4:Vu +U+30f5:KA +U+30f6:KE +U+30f7:Va +U+30f8:Vi +U+30f9:Ve +U+30fa:Vo +U+30fb:.6 +U+30fc:-6 +U+30fd:*6 +U+30fe:+6 +U+3105:b4 +U+3106:p4 +U+3107:m4 +U+3108:f4 +U+3109:d4 +U+310a:t4 +U+310b:n4 +U+310c:l4 +U+310d:g4 +U+310e:k4 +U+310f:h4 +U+3110:j4 +U+3111:q4 +U+3112:x4 +U+3113:zh +U+3114:ch +U+3115:sh +U+3116:r4 +U+3117:z4 +U+3118:c4 +U+3119:s4 +U+311a:a4 +U+311b:o4 +U+311c:e4 +U+311d:eh4 +U+311e:ai +U+311f:ei +U+3120:au +U+3121:ou +U+3122:an +U+3123:en +U+3124:aN +U+3125:eN +U+3126:er +U+3127:i4 +U+3128:u4 +U+3129:iu +U+312a:v4 +U+312b:nG +U+312c:gn +U+321c:(JU) +U+3220:1c +U+3221:2c +U+3222:3c +U+3223:4c +U+3224:5c +U+3225:6c +U+3226:7c +U+3227:8c +U+3228:9c +U+3229:10c +U+327f:KSC +U+33c2:am +U+33d8:pm +U+fb00:ff +U+fb01:fi +U+fb02:fl +U+fb03:ffi +U+fb04:ffl +U+fb05:St +U+fb06:st +U+fe7d:3+; +U+fe82:aM. +U+fe84:aH. +U+fe88:ah. +U+fe8d:a+- +U+fe8e:a+. +U+fe8f:b+- +U+fe90:b+. +U+fe91:b+, +U+fe92:b+; +U+fe93:tm- +U+fe94:tm. +U+fe95:t+- +U+fe96:t+. +U+fe97:t+, +U+fe98:t+; +U+fe99:tk- +U+fe9a:tk. +U+fe9b:tk, +U+fe9c:tk; +U+fe9d:g+- +U+fe9e:g+. +U+fe9f:g+, +U+fea0:g+; +U+fea1:hk- +U+fea2:hk. +U+fea3:hk, +U+fea4:hk; +U+fea5:x+- +U+fea6:x+. +U+fea7:x+, +U+fea8:x+; +U+fea9:d+- +U+feaa:d+. +U+feab:dk- +U+feac:dk. +U+fead:r+- +U+feae:r+. +U+feaf:z+- +U+feb0:z+. +U+feb1:s+- +U+feb2:s+. +U+feb3:s+, +U+feb4:s+; +U+feb5:sn- +U+feb6:sn. +U+feb7:sn, +U+feb8:sn; +U+feb9:c+- +U+feba:c+. +U+febb:c+, +U+febc:c+; +U+febd:dd- +U+febe:dd. +U+febf:dd, +U+fec0:dd; +U+fec1:tj- +U+fec2:tj. +U+fec3:tj, +U+fec4:tj; +U+fec5:zH- +U+fec6:zH. +U+fec7:zH, +U+fec8:zH; +U+fec9:e+- +U+feca:e+. +U+fecb:e+, +U+fecc:e+; +U+fecd:i+- +U+fece:i+. +U+fecf:i+, +U+fed0:i+; +U+fed1:f+- +U+fed2:f+. +U+fed3:f+, +U+fed4:f+; +U+fed5:q+- +U+fed6:q+. +U+fed7:q+, +U+fed8:q+; +U+fed9:k+- +U+feda:k+. +U+fedb:k+, +U+fedc:k+; +U+fedd:l+- +U+fede:l+. +U+fedf:l+, +U+fee0:l+; +U+fee1:m+- +U+fee2:m+. +U+fee3:m+, +U+fee4:m+; +U+fee5:n+- +U+fee6:n+. +U+fee7:n+, +U+fee8:n+; +U+fee9:h+- +U+feea:h+. +U+feeb:h+, +U+feec:h+; +U+feed:w+- +U+feee:w+. +U+feef:j+- +U+fef0:j+. +U+fef1:y+- +U+fef2:y+. +U+fef3:y+, +U+fef4:y+; +U+fef5:lM- +U+fef6:lM. +U+fef7:lH- +U+fef8:lH. +U+fef9:lh- +U+fefa:lh. +U+fefb:la- +U+fefc:la. +U+0000:NU +U+0001:SH +U+0002:SX +U+0003:EX +U+0004:ET +U+0005:EQ +U+0006:AK +U+0007:BL +U+0008:BS +U+0009:HT +U+000a:LF +U+000b:VT +U+000c:FF +U+000d:CR +U+000e:SO +U+000f:SI +U+0010:DL +U+0011:D1 +U+0012:D2 +U+0013:D3 +U+0014:D4 +U+0015:NK +U+0016:SY +U+0017:EB +U+0018:CN +U+0019:EM +U+001a:SB +U+001b:EC +U+001c:FS +U+001d:GS +U+001e:RS +U+001f:US +U+007f:DT +U+0080:PA +U+0081:HO +U+0082:BH +U+0083:NH +U+0084:IN +U+0085:NL +U+0086:SA +U+0087:ES +U+0088:HS +U+0089:HJ +U+008a:VS +U+008b:PD +U+008c:PU +U+008d:RI +U+008e:S2 +U+008f:S3 +U+0090:DC +U+0091:P1 +U+0092:P2 +U+0093:TS +U+0094:CC +U+0095:MW +U+0096:SG +U+0097:EG +U+0098:SS +U+0099:GC +U+009a:SC +U+009b:CI +U+009c:ST +U+009d:OC +U+009e:PM +U+009f:AC +U+e000:"3 +U+e001:"1 +U+e002:"! +U+e003:"' +U+e004:"> +U+e005:"? +U+e006:"- +U+e007:"( +U+e008:". +U+e009:": +U+e00a:"0 +U+e00b:", +U+e00c:"_ +U+e00d:"" +U+e00e:"; +U+e00f:"< +U+e010:"= +U+e011:"/ +U+e012:"p +U+e013:"d +U+e014:"i +U+e015:+_ +U+e016:a+: +U+e017:Tel +U+e018:UA +U+e019:UB +U+e01e:Mc +U+e01f:Fl + +U+e020:pm +U+e021:Tel +U+e022:a+: +U+e023:Fl +U+e024:GF +U+e025:>V +U+e026:!* +U+e027:?* +U+e028:J< diff --git a/src/chrtrans/iso01_uni.tbl b/src/chrtrans/iso01_uni.tbl new file mode 100644 index 00000000..15dc6f6a --- /dev/null +++ b/src/chrtrans/iso01_uni.tbl @@ -0,0 +1,427 @@ +# +# Unicode mapping table for ISO 8859-1 fonts iso01.* +# [use: unicode_start iso01.f16 iso01] +# +#Shall this become the "default" translation? +#Meaning of that is currently not well defined. It is different +#from the default input or default output charset... +#but there has to be exactly one table marked as "default". +D0 +# +#The MIME name of this charset. +Miso-8859-1 + +#Name as a Display Charset (used on Options screen) +OISO Latin 1 + +0x20 U+0020 U+1360 +0x21-0x62 idem +# The following line is an example for mapping several accented versions +# of small letter 'c' to 'c': +0x63 U+0063 U+0107 U+0109 U+010B U+010D +0x64-0x7e idem +0x7f U+2302 +0xa0-0xff idem +#0x00 U+fffd # don't let failed char lookups return '\0' +# Mappings of cntrl chars, left in from original, just to see what happens... +0x01 U+263A +0x02 U+263B +0x03 U+2665 +0x04 U+2666 +0x05 U+2663 +0x06 U+2660 +0x07 U+2022 +0x08 U+25D8 +0x09 U+25CB +0x0A U+25D9 +0x0B U+2642 +0x0C U+2640 +0x0D U+266A +0x0E U+266B +0x0E U+266C +0x0F U+263C +0x10 U+25B6 +0x10 U+25BA +0x11 U+25C0 +0x11 U+25C4 +0x12 U+2195 +0x13 U+203C +0x14 U+00B6 +0x15 U+00A7 +0x16 U+25AC +0x17 U+21A8 +0x18 U+2191 +0x19 U+2193 +0x1A U+2192 +0x1B U+2190 +0x1C U+221F +0x1C U+2319 +0x1D U+2194 +0x1E U+25B2 +0x1F U+25BC + +0xd0 U+0110 # Dstrok and ETH are nearly the same... + +# Dont wanna see these: +# POP DIRECTIONAL FORMATTING 202C +U+202c: +# LEFT-TO-RIGHT OVERRIDE 202D +U+202d: + +# Replacement strings for Ethiopic characters +U+1200:he +U+1201:hu +U+1202:hi +U+1203:ha +U+1204:hE +U+1205:h +U+1206:ho +U+1208:le +U+1209:lu +U+120A:li +U+120B:la +U+120C:lE +U+120D:l +U+120E:lo +U+120F:lWa +U+1210:He +U+1211:Hu +U+1212:Hi +U+1213:Ha +U+1214:HE +U+1215:H +U+1216:Ho +U+1217:HWa +U+1218:me +U+1219:mu +U+121A:mi +U+121B:ma +U+121C:mE +U+121D:m +U+121E:mo +U+121F:mWa +U+1220:`se +U+1221:`su +U+1222:`si +U+1223:`sa +U+1224:`sE +U+1225:`s +U+1226:`so +U+1227:`sWa +U+1228:re +U+1229:ru +U+122A:ri +U+122B:ra +U+122C:rE +U+122D:r +U+122E:ro +U+122F:rWa +U+1230:se +U+1231:su +U+1232:si +U+1233:sa +U+1234:sE +U+1235:s +U+1236:so +U+1237:sWa +U+1238:xe +U+1239:xu +U+123A:xi +U+123B:xa +U+123C:xE +U+123D:xa +U+123E:xo +U+123F:xWa +U+1240:qe +U+1241:qu +U+1242:qi +U+1243:qa +U+1244:qE +U+1245:q +U+1246:qo +U+1248:qWe +U+124A:qWi +U+124B:qWa +U+124C:qWE +U+124D:qW +U+1250:Qe +U+1251:Qu +U+1252:Qi +U+1253:Qa +U+1254:QE +U+1255:Q +U+1256:Qo +U+1258:QWe +U+125A:QWi +U+125B:QWa +U+125C:QWE +U+125D:QW +U+1260:be +U+1261:bu +U+1262:bi +U+1263:ba +U+1264:bE +U+1265:b +U+1266:bo +U+1267:bWa +U+1268:ve +U+1269:vu +U+126A:vi +U+126B:va +U+126C:vE +U+126D:v +U+126E:vo +U+126F:vWa +U+1270:te +U+1271:tu +U+1272:ti +U+1273:ta +U+1274:tE +U+1275:t +U+1276:to +U+1277:tWa +U+1278:ce +U+1279:cu +U+127A:ci +U+127B:ca +U+127C:cE +U+127D:c +U+127E:co +U+127F:cWa +U+1280:`he +U+1281:`hu +U+1282:`hi +U+1283:`ha +U+1284:`hE +U+1285:`h +U+1286:`ho +U+1288:hWe +U+128A:hWi +U+128B:hWa +U+128C:hWE +U+128D:hW +U+1290:na +U+1291:nu +U+1292:ni +U+1293:na +U+1294:nE +U+1295:n +U+1296:no +U+1297:nWa +U+1298:Ne +U+1299:Nu +U+129A:Ni +U+129B:Na +U+129C:NE +U+129D:N +U+129E:No +U+129F:NWa +U+12A0:e +U+12A1:u +U+12A2:i +U+12A3:a +U+12A4:E +U+12A5:I +U+12A6:o +U+12A7:e3 +U+12A8:ke +U+12A9:ku +U+12AA:ki +U+12AB:ka +U+12AC:kE +U+12AD:k +U+12AE:ko +U+12B0:kWe +U+12B2:kWi +U+12B3:kWa +U+12B4:kWE +U+12B5:kW +U+12B8:Ke +U+12B9:Ku +U+12BA:Ki +U+12BB:Ka +U+12BC:KE +U+12BD:K +U+12BE:Ko +U+12C0:KWe +U+12C2:KWi +U+12C3:KWa +U+12C4:KWE +U+12C5:KW +U+12C8:we +U+12C9:wu +U+12CA:wi +U+12CB:wa +U+12CC:wE +U+12CD:w +U+12CE:wo +U+12D0:`e +U+12D1:`u +U+12D2:`i +U+12D3:`a +U+12D4:`E +U+12D5:`I +U+12D6:`o +U+12D8:ze +U+12D9:zu +U+12DA:zi +U+12DB:za +U+12DC:zE +U+12DD:z +U+12DE:zo +U+12DF:zWa +U+12E0:Ze +U+12E1:Zu +U+12E2:Zi +U+12E3:Za +U+12E4:ZE +U+12E5:Z +U+12E6:Zo +U+12E7:ZWa +U+12E8:ye +U+12E9:yu +U+12EA:yi +U+12EB:ya +U+12EC:yE +U+12ED:y +U+12EE:yo +U+12EF:yWa +U+12F0:de +U+12F1:du +U+12F2:di +U+12F3:da +U+12F4:dE +U+12F5:d +U+12F6:do +U+12F7:dWa +U+12F8:De +U+12F9:Du +U+12FA:Di +U+12FB:Da +U+12FC:DE +U+12FD:D +U+12FE:Do +U+12FF:DWa +U+1300:je +U+1301:ju +U+1302:ji +U+1303:ja +U+1304:jE +U+1305:j +U+1306:jo +U+1307:jWa +U+1308:ga +U+1309:gu +U+130A:gi +U+130B:ga +U+130C:gE +U+130D:g +U+130E:go +U+1310:gWu +U+1312:gWi +U+1313:gWa +U+1314:gWE +U+1315:gW +U+1318:Ge +U+1319:Gu +U+131A:Gi +U+131B:Ga +U+131C:GE +U+131D:G +U+131E:Go +U+131F:GWa +U+1320:Te +U+1321:Tu +U+1322:Ti +U+1323:Ta +U+1324:TE +U+1325:T +U+1326:To +U+1327:TWa +U+1328:Ce +U+1329:Ca +U+132A:Cu +U+132B:Ca +U+132C:CE +U+132D:C +U+132E:Co +U+132F:CWa +U+1330:Pe +U+1331:Pu +U+1332:Pi +U+1333:Pa +U+1334:PE +U+1335:P +U+1336:Po +U+1337:PWa +U+1338:SWe +U+1339:SWu +U+133A:SWi +U+133B:SWa +U+133C:SWE +U+133D:SW +U+133E:SWo +U+133F:SWa +U+1340:`Sa +U+1341:`Su +U+1342:`Si +U+1343:`Sa +U+1344:`SE +U+1345:`S +U+1346:`So +U+1348:fa +U+1349:fu +U+134A:fi +U+134B:fa +U+134C:fE +U+134D:f +U+134E:fo +U+134F:fWa +U+1350:pe +U+1351:pu +U+1352:pi +U+1353:pa +U+1354:pE +U+1355:p +U+1356:po +U+1357:pWa +U+1358:mYa +U+1359:rYa +U+135A:fYa +# ETHIOPIC SPACE U+1360 mapped to ASCII space above +U+1361:: +U+1362::: +U+1363:, +U+1364:; +U+1365:-: +U+1366::- +U+1367:`? +U+1368::|: +U+1369:`1 +U+136A:`2 +U+136B:`3 +U+136C:`4 +U+136D:`5 +U+136E:`6 +U+136F:`7 +U+1370:`8 +U+1371:`9 +U+1372:`10 +U+1373:`20 +U+1374:`30 +U+1375:`40 +U+1376:`50 +U+1377:`60 +U+1378:`70 +U+1379:`80 +U+137A:`90 +U+137B:`100 +U+137C:`10000 + + +# TRADE MARK SIGN: +U+2122:(TM) + +0x60 U+2018 # left single quotation mark +0x27 U+2019-U+201b # various single quotation marks +0x22 U+201c-U+201f # various double quotation marks diff --git a/src/chrtrans/iso02_uni.tbl b/src/chrtrans/iso02_uni.tbl new file mode 100644 index 00000000..dec4d843 --- /dev/null +++ b/src/chrtrans/iso02_uni.tbl @@ -0,0 +1,155 @@ +# +# Unicode mapping table for ISO 8859-2 fonts iso02.* +# [use: unicode_start iso02.f16 iso02] +# +0x20-0x7e idem +0x7f U+2302 + +#The MIME name of this charset. +Miso-8859-2 + +#Name as a Display Charset (used on Options screen) +OISO Latin 2 + +# +#0x00 U+fffd +0x01 U+263A +0x02 U+263B +0x03 U+2665 +0x04 U+2666 +0x05 U+2663 +0x06 U+2660 +0x07 U+2022 +0x08 U+25D8 +0x09 U+25CB +0x0A U+25D9 +0x0B U+2642 +0x0C U+2640 +0x0D U+266A +0x0E U+266B +0x0E U+266C +0x0F U+263C +0x10 U+25B6 +0x10 U+25BA +0x11 U+25C0 +0x11 U+25C4 +0x12 U+2195 +0x13 U+203C +0x14 U+00B6 +0x15 U+00A7 +0x16 U+25AC +0x17 U+21A8 +0x18 U+2191 +0x19 U+2193 +0x1A U+2192 +0x1B U+2190 +0x1C U+221F +0x1C U+2319 +0x1D U+2194 +0x1E U+25B2 +0x1F U+25BC +# +0xa0 U+00a0 +0xa1 U+0104 +0xa2 U+02d8 +0xa3 U+0141 +0xa4 U+00a4 +0xa5 U+013d +0xa6 U+015a +0xa7 U+00a7 +0xa8 U+00a8 +0xa9 U+0160 +0xaa U+015e +0xab U+0164 +0xac U+0179 +0xad U+00ad +0xae U+017d +0xaf U+017b +0xb0 U+00b0 +0xb1 U+0105 +0xb2 U+02db +0xb3 U+0142 +0xb4 U+00b4 +0xb5 U+013e +0xb6 U+015b +0xb7 U+02c7 +0xb8 U+00b8 +0xb9 U+0161 +0xba U+015f +0xbb U+0165 +0xbc U+017a +0xbd U+02dd +0xbe U+017e +0xbf U+017c +0xc0 U+0154 +0xc1 U+00c1 +0xc2 U+00c2 +0xc3 U+0102 +0xc4 U+00c4 +0xc5 U+0139 +0xc6 U+0106 +0xc7 U+00c7 +0xc8 U+010c +0xc9 U+00c9 +0xca U+0118 +0xcb U+00cb +0xcc U+011a +0xcd U+00cd +0xce U+00ce +0xcf U+010e +0xd0 U+0110 U+00d0 +0xd1 U+0143 +0xd2 U+0147 +0xd3 U+00d3 +0xd4 U+00d4 +0xd5 U+0150 +0xd6 U+00d6 +0xd7 U+00d7 +0xd8 U+0158 +0xd9 U+016e +0xda U+00da +0xdb U+0170 +0xdc U+00dc +0xdd U+00dd +0xde U+0162 +0xdf U+00df +0xe0 U+0155 +0xe1 U+00e1 +0xe2 U+00e2 +0xe3 U+0103 +0xe4 U+00e4 +0xe5 U+013a +0xe6 U+0107 +0xe7 U+00e7 +0xe8 U+010d +0xe9 U+00e9 +0xea U+0119 +0xeb U+00eb +0xec U+011b +0xed U+00ed +0xee U+00ee +0xef U+010f +0xf0 U+0111 +0xf1 U+0144 +0xf2 U+0148 +0xf3 U+00f3 +0xf4 U+00f4 +0xf5 U+0151 +0xf6 U+00f6 +0xf7 U+00f7 +0xf8 U+0159 +0xf9 U+016f +0xfa U+00fa +0xfb U+0171 +0xfc U+00fc +0xfd U+00fd +0xfe U+0163 +0xff U+02d9 + + +# TRADE MARK SIGN: +U+2122:(TM) + +0x60 U+2018 # left single quotation mark +0x27 U+2019-U+201b # various single quotation marks +0x22 U+201c-U+201f # various double quotation marks diff --git a/src/chrtrans/iso03_uni.tbl b/src/chrtrans/iso03_uni.tbl new file mode 100644 index 00000000..875f4d41 --- /dev/null +++ b/src/chrtrans/iso03_uni.tbl @@ -0,0 +1,149 @@ +# +# Unicode mapping table for ISO 8859-3 fonts iso03.* +# [use: unicode_start iso03.f16 iso03] +# +#The MIME name of this charset. +Miso-8859-3 + +#Name as a Display Charset (used on Options screen) +OISO Latin 3 + +0x20-0x7e idem +0x7f U+2302 +# +#0x00 U+fffd +0x01 U+263A +0x02 U+263B +0x03 U+2665 +0x04 U+2666 +0x05 U+2663 +0x06 U+2660 +0x07 U+2022 +0x08 U+25D8 +0x09 U+25CB +0x0A U+25D9 +0x0B U+2642 +0x0C U+2640 +0x0D U+266A +0x0E U+266B +0x0E U+266C +0x0F U+263C +0x10 U+25B6 +0x10 U+25BA +0x11 U+25C0 +0x11 U+25C4 +0x12 U+2195 +0x13 U+203C +0x14 U+00B6 +0x15 U+00A7 +0x16 U+25AC +0x17 U+21A8 +0x18 U+2191 +0x19 U+2193 +0x1A U+2192 +0x1B U+2190 +0x1C U+221F +0x1C U+2319 +0x1D U+2194 +0x1E U+25B2 +0x1F U+25BC +# +0xa0 U+00a0 +0xa1 U+0126 +0xa2 U+02d8 +0xa3 U+00a3 +0xa4 U+00a4 +# 0xa5 unused +0xa6 U+0124 +0xa7 U+00a7 +0xa8 U+00a8 +0xa9 U+0130 +0xaa U+015e +0xab U+011e +0xac U+0134 +0xad U+00ad +# 0xae unused +0xaf U+017b +0xb0 U+00b0 +0xb1 U+0127 +0xb2 U+00b2 +0xb3 U+00b3 +0xb4 U+00b4 +0xb5 U+00b5 +0xb6 U+0125 +0xb7 U+00b7 +0xb8 U+00b8 +0xb9 U+0131 +0xba U+015f +0xbb U+011f +0xbc U+0135 +0xbd U+00bd +# 0xbe unused +0xbf U+017c +0xc0 U+00c0 +0xc1 U+00c1 +0xc2 U+00c2 +# 0xc3 unused +0xc4 U+00c4 +0xc5 U+010a +0xc6 U+0108 +0xc7 U+00c7 +0xc8 U+00c8 +0xc9 U+00c9 +0xca U+00ca +0xcb U+00cb +0xcc U+00cc +0xcd U+00cd +0xce U+00ce +0xcf U+00cf +# 0xd0 unused +0xd1 U+00d1 +0xd2 U+00d2 +0xd3 U+00d3 +0xd4 U+00d4 +0xd5 U+0120 +0xd6 U+00d6 +0xd7 U+00d7 +0xd8 U+011c +0xd9 U+00d9 +0xda U+00da +0xdb U+00db +0xdc U+00dc +0xdd U+016c +0xde U+015c +0xdf U+00df +0xe0 U+00e0 +0xe1 U+00e1 +0xe2 U+00e2 +# 0xe3 unused +0xe4 U+00e4 +0xe5 U+010b +0xe6 U+0109 +0xe7 U+00e7 +0xe8 U+00e8 +0xe9 U+00e9 +0xea U+00ea +0xeb U+00eb +0xec U+00ec +0xed U+00ed +0xee U+00ee +0xef U+00ef +# 0xf0 unused +0xf1 U+00f1 +0xf2 U+00f2 +0xf3 U+00f3 +0xf4 U+00f4 +0xf5 U+0121 +0xf6 U+00f6 +0xf7 U+00f7 +0xf8 U+011d +0xf9 U+00f9 +0xfa U+00fa +0xfb U+00fb +0xfc U+00fc +0xfd U+016d +0xfe U+015d +0xff U+02d9 + +# TRADE MARK SIGN: +U+2122:(TM) diff --git a/src/chrtrans/iso04_uni.tbl b/src/chrtrans/iso04_uni.tbl new file mode 100644 index 00000000..d0e6f8e2 --- /dev/null +++ b/src/chrtrans/iso04_uni.tbl @@ -0,0 +1,149 @@ +# +# Unicode mapping table for ISO 8859-4 fonts iso04.* +# [use: unicode_start iso04.f16 iso04] +# +#The MIME name of this charset. +Miso-8859-4 + +#Name as a Display Charset (used on Options screen) +OISO Latin 4 + +0x20-0x7e idem +0x7f U+2302 +# +#0x00 U+fffd +0x01 U+263A +0x02 U+263B +0x03 U+2665 +0x04 U+2666 +0x05 U+2663 +0x06 U+2660 +0x07 U+2022 +0x08 U+25D8 +0x09 U+25CB +0x0A U+25D9 +0x0B U+2642 +0x0C U+2640 +0x0D U+266A +0x0E U+266B +0x0E U+266C +0x0F U+263C +0x10 U+25B6 +0x10 U+25BA +0x11 U+25C0 +0x11 U+25C4 +0x12 U+2195 +0x13 U+203C +0x14 U+00B6 +0x15 U+00A7 +0x16 U+25AC +0x17 U+21A8 +0x18 U+2191 +0x19 U+2193 +0x1A U+2192 +0x1B U+2190 +0x1C U+221F +0x1C U+2319 +0x1D U+2194 +0x1E U+25B2 +0x1F U+25BC +# +0xa0 U+00a0 +0xa1 U+0104 +0xa2 U+0138 +0xa3 U+0156 +0xa4 U+00a4 +0xa5 U+0128 +0xa6 U+013b +0xa7 U+00a7 +0xa8 U+00a8 +0xa9 U+0160 +0xaa U+0112 +0xab U+0122 +0xac U+0166 +0xad U+00ad +0xae U+017d +0xaf U+00af +0xb0 U+00b0 +0xb1 U+0105 +0xb2 U+02db +0xb3 U+0157 +0xb4 U+00b4 +0xb5 U+0129 +0xb6 U+013c +0xb7 U+02c7 +0xb8 U+00b8 +0xb9 U+0161 +0xba U+0113 +0xbb U+0123 +0xbc U+0167 +0xbd U+014a +0xbe U+017e +0xbf U+014b +0xc0 U+0100 +0xc1 U+00c1 +0xc2 U+00c2 +0xc3 U+00c3 +0xc4 U+00c4 +0xc5 U+00c5 +0xc6 U+00c6 +0xc7 U+012e +0xc8 U+010c +0xc9 U+00c9 +0xca U+0118 +0xcb U+00cb +0xcc U+0116 +0xcd U+00cd +0xce U+00ce +0xcf U+012a +0xd0 U+0110 +0xd1 U+0145 +0xd2 U+014c +0xd3 U+0136 +0xd4 U+00d4 +0xd5 U+00d5 +0xd6 U+00d6 +0xd7 U+00d7 +0xd8 U+00d8 +0xd9 U+0172 +0xda U+00da +0xdb U+00db +0xdc U+00dc +0xdd U+0168 +0xde U+016a +0xdf U+00df +0xe0 U+0101 +0xe1 U+00e1 +0xe2 U+00e2 +0xe3 U+00e3 +0xe4 U+00e4 +0xe5 U+00e5 +0xe6 U+00e6 +0xe7 U+012f +0xe8 U+010d +0xe9 U+00e9 +0xea U+0119 +0xeb U+00eb +0xec U+0117 +0xed U+00ed +0xee U+00ee +0xef U+012b +0xf0 U+0111 +0xf1 U+0146 +0xf2 U+014d +0xf3 U+0137 +0xf4 U+00f4 +0xf5 U+00f5 +0xf6 U+00f6 +0xf7 U+00f7 +0xf8 U+00f8 +0xf9 U+0173 +0xfa U+00fa +0xfb U+00fb +0xfc U+00fc +0xfd U+0169 +0xfe U+016b +0xff U+02d9 + +# TRADE MARK SIGN: +U+2122:(TM) diff --git a/src/chrtrans/iso05_uni.tbl b/src/chrtrans/iso05_uni.tbl new file mode 100644 index 00000000..5179dc8d --- /dev/null +++ b/src/chrtrans/iso05_uni.tbl @@ -0,0 +1,149 @@ +# +# Unicode mapping table for ISO 8859-5 fonts iso05.* +# [use: unicode_start iso05.f16 iso05] +# +#The MIME name of this charset. +Miso-8859-5 + +#Name as a Display Charset (used on Options screen) +OISO 8859-5 Cyrillic + +0x20-0x7e idem +0x7f U+2302 +# +#0x00 U+fffd +0x01 U+263A +0x02 U+263B +0x03 U+2665 +0x04 U+2666 +0x05 U+2663 +0x06 U+2660 +0x07 U+2022 +0x08 U+25D8 +0x09 U+25CB +0x0A U+25D9 +0x0B U+2642 +0x0C U+2640 +0x0D U+266A +0x0E U+266B +0x0E U+266C +0x0F U+263C +0x10 U+25B6 +0x10 U+25BA +0x11 U+25C0 +0x11 U+25C4 +0x12 U+2195 +0x13 U+203C +0x14 U+00B6 +0x15 U+00A7 +0x16 U+25AC +0x17 U+21A8 +0x18 U+2191 +0x19 U+2193 +0x1A U+2192 +0x1B U+2190 +0x1C U+221F +0x1C U+2319 +0x1D U+2194 +0x1E U+25B2 +0x1F U+25BC +# +0xa0 U+00a0 +0xa1 U+0401 +0xa2 U+0402 +0xa3 U+0403 +0xa4 U+0404 +0xa5 U+0405 +0xa6 U+0406 +0xa7 U+0407 +0xa8 U+0408 +0xa9 U+0409 +0xaa U+040a +0xab U+040b +0xac U+040c +0xad U+00ad +0xae U+040e +0xaf U+040f +0xb0 U+0410 +0xb1 U+0411 +0xb2 U+0412 +0xb3 U+0413 +0xb4 U+0414 +0xb5 U+0415 +0xb6 U+0416 +0xb7 U+0417 +0xb8 U+0418 +0xb9 U+0419 +0xba U+041a +0xbb U+041b +0xbc U+041c +0xbd U+041d +0xbe U+041e +0xbf U+041f +0xc0 U+0420 +0xc1 U+0421 +0xc2 U+0422 +0xc3 U+0423 +0xc4 U+0424 +0xc5 U+0425 +0xc6 U+0426 +0xc7 U+0427 +0xc8 U+0428 +0xc9 U+0429 +0xca U+042a +0xcb U+042b +0xcc U+042c +0xcd U+042d +0xce U+042e +0xcf U+042f +0xd0 U+0430 +0xd1 U+0431 +0xd2 U+0432 +0xd3 U+0433 +0xd4 U+0434 +0xd5 U+0435 +0xd6 U+0436 +0xd7 U+0437 +0xd8 U+0438 +0xd9 U+0439 +0xda U+043a +0xdb U+043b +0xdc U+043c +0xdd U+043d +0xde U+043e +0xdf U+043f +0xe0 U+0440 +0xe1 U+0441 +0xe2 U+0442 +0xe3 U+0443 +0xe4 U+0444 +0xe5 U+0445 +0xe6 U+0446 +0xe7 U+0447 +0xe8 U+0448 +0xe9 U+0449 +0xea U+044a +0xeb U+044b +0xec U+044c +0xed U+044d +0xee U+044e +0xef U+044f +0xf0 U+2116 +0xf1 U+0451 +0xf2 U+0452 +0xf3 U+0453 +0xf4 U+0454 +0xf5 U+0455 +0xf6 U+0456 +0xf7 U+0457 +0xf8 U+0458 +0xf9 U+0459 +0xfa U+045a +0xfb U+045b +0xfc U+045c +0xfd U+00a7 +0xfe U+045e +0xff U+045f + +# TRADE MARK SIGN: +U+2122:(TM) diff --git a/src/chrtrans/iso06_uni.tbl b/src/chrtrans/iso06_uni.tbl new file mode 100644 index 00000000..61630521 --- /dev/null +++ b/src/chrtrans/iso06_uni.tbl @@ -0,0 +1,98 @@ +# +# Unicode mapping table for ISO 8859-6 fonts iso06.* +# [use: unicode_start iso06.f16 iso06] +# +0x20-0x7e idem +0x7f U+2302 +# +0x00 U+fffd +0x01 U+263A +0x02 U+263B +0x03 U+2665 +0x04 U+2666 +0x05 U+2663 +0x06 U+2660 +0x07 U+2022 +0x08 U+25D8 +0x09 U+25CB +0x0A U+25D9 +0x0B U+2642 +0x0C U+2640 +0x0D U+266A +0x0E U+266B +0x0E U+266C +0x0F U+263C +0x10 U+25B6 +0x10 U+25BA +0x11 U+25C0 +0x11 U+25C4 +0x12 U+2195 +0x13 U+203C +0x14 U+00B6 +0x15 U+00A7 +0x16 U+25AC +0x17 U+21A8 +0x18 U+2191 +0x19 U+2193 +0x1A U+2192 +0x1B U+2190 +0x1C U+221F +0x1C U+2319 +0x1D U+2194 +0x1E U+25B2 +0x1F U+25BC +# +0xa0 U+00a0 +0xa4 U+00a4 +0xac U+060c +0xad U+00ad +0xbb U+061b +0xbf U+061f +0xc1 U+0621 +0xc2 U+0622 +0xc3 U+0623 +0xc4 U+0624 +0xc5 U+0625 +0xc6 U+0626 +0xc7 U+0627 +0xc8 U+0628 +0xc9 U+0629 +0xca U+062a +0xcb U+062b +0xcc U+062c +0xcd U+062d +0xce U+062e +0xcf U+062f +0xd0 U+0630 +0xd1 U+0631 +0xd2 U+0632 +0xd3 U+0633 +0xd4 U+0634 +0xd5 U+0635 +0xd6 U+0636 +0xd7 U+0637 +0xd8 U+0638 +0xd9 U+0639 +0xda U+063a +0xe0 U+0640 +0xe1 U+0641 +0xe2 U+0642 +0xe3 U+0643 +0xe4 U+0644 +0xe5 U+0645 +0xe6 U+0646 +0xe7 U+0647 +0xe8 U+0648 +0xe9 U+0649 +0xea U+064a +0xeb U+064b +0xec U+064c +0xed U+064d +0xee U+064e +0xef U+064f +0xf0 U+0650 +0xf1 U+0651 +0xf2 U+0652 + +# TRADE MARK SIGN: +U+2122:(TM) diff --git a/src/chrtrans/iso07_uni.tbl b/src/chrtrans/iso07_uni.tbl new file mode 100644 index 00000000..4698888a --- /dev/null +++ b/src/chrtrans/iso07_uni.tbl @@ -0,0 +1,143 @@ +# +# Unicode mapping table for ISO 8859-7 fonts iso07.* +# [use: unicode_start iso07.f16 iso07] +# +#The MIME name of this charset. +Miso-8859-7 + +#Name as a Display Charset (used on Options screen) +OISO 8859-7 Greek + +0x20-0x7e idem +0x7f U+2302 +# +#0x00 U+fffd +0x01 U+263A +0x02 U+263B +0x03 U+2665 +0x04 U+2666 +0x05 U+2663 +0x06 U+2660 +0x07 U+2022 +0x08 U+25D8 +0x09 U+25CB +0x0A U+25D9 +0x0B U+2642 +0x0C U+2640 +0x0D U+266A +0x0E U+266B +0x0E U+266C +0x0F U+263C +0x10 U+25B6 +0x10 U+25BA +0x11 U+25C0 +0x11 U+25C4 +0x12 U+2195 +0x13 U+203C +0x14 U+00B6 +0x15 U+00A7 +0x16 U+25AC +0x17 U+21A8 +0x18 U+2191 +0x19 U+2193 +0x1A U+2192 +0x1B U+2190 +0x1C U+221F +0x1C U+2319 +0x1D U+2194 +0x1E U+25B2 +0x1F U+25BC +# +0xa0 U+00a0 +0xa1 U+0371 +0xa2 U+0372 +0xa3 U+00a3 +0xa6 U+00a6 +0xa7 U+00a7 +0xa8 U+00a8 +0xa9 U+00a9 +0xab U+00ab +0xac U+00ac +0xad U+00ad +0xaf U+2015 +0xb0 U+00b0 +0xb1 U+00b1 +0xb2 U+00b2 +0xb3 U+00b3 +0xb4 U+03f3 +0xb5 U+03f4 +0xb6 U+0386 +0xb7 U+00b7 +0xb8 U+0388 +0xb9 U+0389 +0xba U+038a +0xbb U+00bb +0xbc U+038c +0xbd U+00bd +0xbe U+038e +0xbf U+038f +0xc0 U+0390 +0xc1 U+0391 +0xc2 U+0392 +0xc3 U+0393 +0xc4 U+0394 +0xc5 U+0395 +0xc6 U+0396 +0xc7 U+0397 +0xc8 U+0398 +0xc9 U+0399 +0xca U+039a +0xcb U+039b +0xcc U+039c +0xcd U+039d +0xce U+039e +0xcf U+039f +0xd0 U+03a0 +0xd1 U+03a1 +0xd3 U+03a3 +0xd4 U+03a4 +0xd5 U+03a5 +0xd6 U+03a6 +0xd7 U+03a7 +0xd8 U+03a8 +0xd9 U+03a9 +0xda U+03aa +0xdb U+03ab +0xdc U+03ac +0xdd U+03ad +0xde U+03ae +0xdf U+03af +0xe0 U+03b0 +0xe1 U+03b1 +0xe2 U+03b2 +0xe3 U+03b3 +0xe4 U+03b4 +0xe5 U+03b5 +0xe6 U+03b6 +0xe7 U+03b7 +0xe8 U+03b8 +0xe9 U+03b9 +0xea U+03ba +0xeb U+03bb +0xec U+03bc +0xed U+03bd +0xee U+03be +0xef U+03bf +0xf0 U+03c0 +0xf1 U+03c1 +0xf2 U+03c2 +0xf3 U+03c3 +0xf4 U+03c4 +0xf5 U+03c5 +0xf6 U+03c6 +0xf7 U+03c7 +0xf8 U+03c8 +0xf9 U+03c9 +0xfa U+03ca +0xfb U+03cb +0xfc U+03cc +0xfd U+03cd +0xfe U+03ce + +# TRADE MARK SIGN: +U+2122:(TM) diff --git a/src/chrtrans/iso08_uni.tbl b/src/chrtrans/iso08_uni.tbl new file mode 100644 index 00000000..20ae4ac7 --- /dev/null +++ b/src/chrtrans/iso08_uni.tbl @@ -0,0 +1,84 @@ +# +# Unicode mapping table for ISO 8859-8 fonts iso08.* +# [use: unicode_start iso08.f16 iso08] +# +0x20-0x7e idem +0x7f U+2302 +# +0x00 U+fffd +0x01 U+263A +0x02 U+263B +0x03 U+2665 +0x04 U+2666 +0x05 U+2663 +0x06 U+2660 +0x07 U+2022 +0x08 U+25D8 +0x09 U+25CB +0x0A U+25D9 +0x0B U+2642 +0x0C U+2640 +0x0D U+266A +0x0E U+266B +0x0E U+266C +0x0F U+263C +0x10 U+25B6 +0x10 U+25BA +0x11 U+25C0 +0x11 U+25C4 +0x12 U+2195 +0x13 U+203C +0x14 U+00B6 +0x15 U+00A7 +0x16 U+25AC +0x17 U+21A8 +0x18 U+2191 +0x19 U+2193 +0x1A U+2192 +0x1B U+2190 +0x1C U+221F +0x1C U+2319 +0x1D U+2194 +0x1E U+25B2 +0x1F U+25BC +# +0xa0 U+00a0 +0xa2-0xa9 idem +0xaa U+00d7 +0xab-0xae idem +0xaf U+203e +0xb0-0xb9 idem +0xba U+00f7 +0xbb-0xbe idem +0xbf U+051f +0xdf U+2017 +0xe0 U+05d0 +0xe1 U+05d1 +0xe2 U+05d2 +0xe3 U+05d3 +0xe4 U+05d4 +0xe5 U+05d5 +0xe6 U+05d6 +0xe7 U+05d7 +0xe8 U+05d8 +0xe9 U+05d9 +0xea U+05da +0xeb U+05db +0xec U+05dc +0xed U+05dd +0xee U+05de +0xef U+05df +0xf0 U+05e0 +0xf1 U+05e1 +0xf2 U+05e2 +0xf3 U+05e3 +0xf4 U+05e4 +0xf5 U+05e5 +0xf6 U+05e6 +0xf7 U+05e7 +0xf8 U+05e8 +0xf9 U+05e9 +0xfa U+05ea + +# TRADE MARK SIGN: +U+2122:(TM) diff --git a/src/chrtrans/iso09_uni.tbl b/src/chrtrans/iso09_uni.tbl new file mode 100644 index 00000000..224cc26c --- /dev/null +++ b/src/chrtrans/iso09_uni.tbl @@ -0,0 +1,63 @@ +# +# Unicode mapping table for ISO 8859-9 fonts iso09.* +# [use: unicode_start iso09.f16 iso09] +# +#The MIME name of this charset. +Miso-8859-9 + +#Name as a Display Charset (used on Options screen) +OISO 8859-9 (Latin 5) + +0x20-0x7e idem +0x7f U+2302 +0xa0-0xcf idem +0xd0 U+011e +0xd1-0xdc idem +0xdd U+0130 +0xde U+015e +0xdf-0xef idem +0xf0 U+011f +0xf1-0xfc idem +0xfd U+0131 +0xfe U+015f +0xff U+00ff +# +#0x00 U+fffd +0x01 U+263A +0x02 U+263B +0x03 U+2665 +0x04 U+2666 +0x05 U+2663 +0x06 U+2660 +0x07 U+2022 +0x08 U+25D8 +0x09 U+25CB +0x0A U+25D9 +0x0B U+2642 +0x0C U+2640 +0x0D U+266A +0x0E U+266B +0x0E U+266C +0x0F U+263C +0x10 U+25B6 +0x10 U+25BA +0x11 U+25C0 +0x11 U+25C4 +0x12 U+2195 +0x13 U+203C +0x14 U+00B6 +0x15 U+00A7 +0x16 U+25AC +0x17 U+21A8 +0x18 U+2191 +0x19 U+2193 +0x1A U+2192 +0x1B U+2190 +0x1C U+221F +0x1C U+2319 +0x1D U+2194 +0x1E U+25B2 +0x1F U+25BC + +# TRADE MARK SIGN: +U+2122:(TM) diff --git a/src/chrtrans/iso10_uni.tbl b/src/chrtrans/iso10_uni.tbl new file mode 100644 index 00000000..f1123e3d --- /dev/null +++ b/src/chrtrans/iso10_uni.tbl @@ -0,0 +1,123 @@ +# +# Unicode mapping table for the fonts iso10.* +# [use: unicode_start iso10.f16 iso10] +# +#This is not default font! +D0 + +#The MIME name of this charset. + +Miso-8859-10 + +#Name as a Display Charset (used on Options screen) +OISO 8859-10 + +0x20-0x7e idem +0x7f U+2302 +# +#0x00 U+fffd +0x01 U+263A +0x02 U+263B +0x03 U+2665 +0x04 U+2666 +0x05 U+2663 +0x06 U+2660 +0x07 U+2022 +0x08 U+25D8 +0x09 U+25CB +0x0A U+25D9 +0x0B U+2642 +0x0C U+2640 +0x0D U+266A +0x0E U+266B +0x0E U+266C +0x0F U+263C +0x10 U+25B6 +0x10 U+25BA +0x11 U+25C0 +0x11 U+25C4 +0x12 U+2195 +0x13 U+203C +0x14 U+00B6 +0x15 U+00A7 +0x16 U+25AC +0x17 U+21A8 +0x18 U+2191 +0x19 U+2193 +0x1A U+2192 +0x1B U+2190 +0x1C U+221F +0x1C U+2319 +0x1D U+2194 +0x1E U+25B2 +0x1F U+25BC +# +0xa0 U+00a0 +0xa1 U+0104 +0xa2 U+0112 +0xa3 U+0122 +0xa4 U+012a +0xa5 U+0128 +0xa6 U+0136 +0xa7 U+013b +0xa8 U+0143 +0xa9 U+0156 +0xaa U+0160 +0xab U+0166 +0xac U+017d +0xad U+00ad +0xae U+0138 +0xaf U+014a +0xb0 U+0111 +0xb1 U+0105 +0xb2 U+0113 +0xb3 U+0123 +0xb4 U+012b +0xb5 U+0129 +0xb6 U+0137 +0xb7 U+013c +0xb8 U+0144 +0xb9 U+0157 +0xba U+0161 +0xbb U+0167 +0xbc U+017e +0xbd U+2015 # HORIZONTAL BAR +0xbe U+00df +0xbf U+014b +0xc0 U+0100 +0xc1-0xc6 idem +0xc7 U+012e +0xc8 U+010c +0xc9 U+00c9 +0xca U+0118 +0xcb U+00cb +0xcc U+0116 +0xcd-0xd0 idem +0xd1 U+0145 +0xd2 U+014c +0xd3-0xd6 idem +0xd7 U+0168 +0xd8 U+00d8 +0xd9 U+0172 +0xda-0xde idem +0xdf U+016a +0xe0 U+0101 +0xe1-0xe6 idem +0xe7 U+012f +0xe8 U+010d +0xe9 U+00e9 +0xea U+0119 +0xeb U+00eb +0xec U+0117 +0xed-0xf0 idem +0xf1 U+0146 +0xf2 U+014d +0xf3-0xf6 idem +0xf7 U+0169 +0xf8 U+00f8 +0xf9 U+0173 +0xfa-0xfe idem +0xff U+016b + +# TRADE MARK SIGN: +U+2122:(TM) diff --git a/src/chrtrans/koi8r_uni.tbl b/src/chrtrans/koi8r_uni.tbl new file mode 100644 index 00000000..99b5e28d --- /dev/null +++ b/src/chrtrans/koi8r_uni.tbl @@ -0,0 +1,139 @@ + + +# Options screen name for this character set +O KOI8-R character set + +# MIME name for this charset +M koi8-r + +# Based on a table received from "Glenn E. Thobe" <thobe@lafn.org> +#hex unicode # description +#--- U+---- # --------------- +0x80 U+2500 # FORMS LIGHT HORIZONTAL +0x81 U+2502 # FORMS LIGHT VERTICAL +0x82 U+250C # FORMS LIGHT DOWN AND RIGHT +0x83 U+2510 # FORMS LIGHT DOWN AND LEFT +0x84 U+2514 # FORMS LIGHT UP AND RIGHT +0x85 U+2518 # FORMS LIGHT UP AND LEFT +0x86 U+251C # FORMS LIGHT VERTICAL AND RIGHT +0x87 U+2524 # FORMS LIGHT VERTICAL AND LEFT +0x88 U+252C # FORMS LIGHT DOWN AND HORIZONTAL +0x89 U+2534 # FORMS LIGHT UP AND HORIZONTAL +0x8A U+253C # FORMS LIGHT VERTICAL AND HORIZONTAL +0x8B U+2580 # UPPER HALF BLOCK +0x8C U+2584 # LOWER HALF BLOCK +0x8D U+2588 # FULL BLOCK +0x8E U+258C # LEFT HALF BLOCK +0x8F U+2590 # RIGHT HALF BLOCK +0x90 U+2591 # LIGHT SHADE +0x91 U+2592 # MEDIUM SHADE +0x92 U+2593 # DARK SHADE +0x93 U+2320 # TOP HALF INTEGRAL +0x94 U+25A0 # BLACK SMALL SQUARE +0x95 U+2219 # BULLET OPERATOR +0x96 U+221A # SQUARE ROOT +0x97 U+2248 # ALMOST EQUAL TO +0x98 U+2264 # LESS THAN OR EQUAL TO +0x99 U+2265 # GREATER THAN OR EQUAL TO +0x9A U+00A0 # NON-BREAKING SPACE +0x9B U+2321 # BOTTOM HALF INTEGRAL +0x9C U+00B0 # DEGREE SIGN +0x9D U+00B2 # SUPERSCRIPT DIGIT TWO +0x9E U+00B7 # MIDDLE DOT +0x9F U+00F7 # DIVISION SIGN +0xA0 U+2550 # FORMS DOUBLE HORIZONTAL +0xA1 U+2551 # FORMS DOUBLE VERTICAL +0xA2 U+2552 # FORMS DOWN SINGLE AND RIGHT DOUBLE +0xA3 U+0451 # SMA IO +0xA4 U+2553 # FORMS DOWN DOUBLE AND RIGHT SINGLE +0xA5 U+2554 # FORMS DOUBLE DOWN AND RIGHT +0xA6 U+2555 # FORMS DOWN SINGLE AND LEFT DOUBLE +0xA7 U+2556 # FORMS DOWN DOUBLE AND LEFT SINGLE +0xA8 U+2557 # FORMS DOUBLE DOWN AND LEFT +0xA9 U+2558 # FORMS UP SINGLE AND RIGHT DOUBLE +0xAA U+2559 # FORMS UP DOUBLE AND RIGHT SINGLE +0xAB U+255A # FORMS DOUBLE UP AND RIGHT +0xAC U+255B # FORMS UP SINGLE AND LEFT DOUBLE +0xAD U+255C # FORMS UP DOUBLE AND LEFT SINGLE +0xAE U+255D # FORMS DOUBLE UP AND LEFT +0xAF U+255E # FORMS VERTICAL SINGLE AND RIGHT DOUBLE +0xB0 U+255F # FORMS VERTICAL DOUBLE AND RIGHT SINGLE +0xB1 U+2560 # FORMS DOUBLE VERTICAL AND RIGHT +0xB2 U+2561 # FORMS VERTICAL SINGLE AND LEFT DOUBLE +0xB3 U+0401 # CAP IO +0xB4 U+2562 # FORMS VERTICAL DOUBLE AND LEFT SINGLE +0xB5 U+2563 # FORMS DOUBLE VERTICAL AND LEFT +0xB6 U+2564 # FORMS DOWN SINGLE AND HORIZONTAL DOUBLE +0xB7 U+2565 # FORMS DOWN DOUBLE AND HORIZONTAL SINGLE +0xB8 U+2566 # FORMS DOUBLE DOWN AND HORIZONTAL +0xB9 U+2567 # FORMS UP SINGLE AND HORIZONTAL DOUBLE +0xBA U+2568 # FORMS UP DOUBLE AND HORIZONTAL SINGLE +0xBB U+2569 # FORMS DOUBLE UP AND HORIZONTAL +0xBC U+256A # FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE +0xBD U+256B # FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE +0xBE U+256C # FORMS DOUBLE VERTICAL AND HORIZONTAL +0xBF U+00A9 # COPYRIGHT SIGN +0xC0 U+044E # SMA IU +0xC1 U+0430 # SMA A +0xC2 U+0431 # SMA BE +0xC3 U+0446 # SMA TSE +0xC4 U+0434 # SMA DE +0xC5 U+0435 # SMA IE +0xC6 U+0444 # SMA EF +0xC7 U+0433 # SMA GE +0xC8 U+0445 # SMA KHA +0xC9 U+0438 # SMA II +0xCA U+0439 # SMA SHORT II +0xCB U+043A # SMA KA +0xCC U+043B # SMA EL +0xCD U+043C # SMA EM +0xCE U+043D # SMA EN +0xCF U+043E # SMA O +0xD0 U+043F # SMA PE +0xD1 U+044F # SMA IA +0xD2 U+0440 # SMA ER +0xD3 U+0441 # SMA ES +0xD4 U+0442 # SMA TE +0xD5 U+0443 # SMA U +0xD6 U+0436 # SMA ZHE +0xD7 U+0432 # SMA VE +0xD8 U+044C # SMA SOFT SIGN +0xD9 U+044B # SMA YERI +0xDA U+0437 # SMA ZE +0xDB U+0448 # SMA SHA +0xDC U+044D # SMA REVERSED E +0xDD U+0449 # SMA SHCHA +0xDE U+0447 # SMA CHE +0xDF U+044A # SMA HARD SIGN +0xE0 U+042E # CAP IU +0xE1 U+0410 # CAP A +0xE2 U+0411 # CAP BE +0xE3 U+0426 # CAP TSE +0xE4 U+0414 # CAP DE +0xE5 U+0415 # CAP IE +0xE6 U+0424 # CAP EF +0xE7 U+0413 # CAP GE +0xE8 U+0425 # CAP KHA +0xE9 U+0418 # CAP II +0xEA U+0419 # CAP SHORT II +0xEB U+041A # CAP KA +0xEC U+041B # CAP EL +0xED U+041C # CAP EM +0xEE U+041D # CAP EN +0xEF U+041E # CAP O +0xF0 U+041F # CAP PE +0xF1 U+042F # CAP IA +0xF2 U+0420 # CAP ER +0xF3 U+0421 # CAP ES +0xF4 U+0422 # CAP TE +0xF5 U+0423 # CAP U +0xF6 U+0416 # CAP ZHE +0xF7 U+0412 # CAP VE +0xF8 U+042C # CAP SOFT SIGN +0xF9 U+042B # CAP YERI +0xFA U+0417 # CAP ZE +0xFB U+0428 # CAP SHA +0xFC U+042D # CAP REVERSED E +0xFD U+0429 # CAP SHCHA +0xFE U+0427 # CAP CHE +0xFF U+042A # CAP HARD SIGN diff --git a/src/chrtrans/makefile.in b/src/chrtrans/makefile.in new file mode 100644 index 00000000..8d5da41f --- /dev/null +++ b/src/chrtrans/makefile.in @@ -0,0 +1,100 @@ +# +# Makefile for the makeuctb and unicode tables. +# +# This may not yet work for the general case. +# Only some dependencies included. +# +# +SHELL = /bin/sh + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +srcdir = @srcdir@ +VPATH = $(srcdir) + +WWWINC = WWW/Library/Implementation +SITE_DEFS = # FIXME: set in parent makefile +MCFLAGS = # FIXME: set in parent makefile + +CC = @CC@ +CPPOPTS = @DEFS@ @CPPFLAGS@ -I.. -I../.. -I../../$(WWWINC) $(MCFLAGS) +CFLAGS = $(CPPOPTS) @CFLAGS@ + +# +# This file contains the font map for the default (hardware) font +# + +FONTMAP_INC = iso01_uni.h# default, if not set by recursive call + +### #include $(TOPDIR)/Rules.make ??? + +### fastdep: $(FONTMAP_INC) + +### MCFLAGS=-g -DUNIX -DLINUX -DNO_KEYPAD -DNO_TTYTYPE -DEXP_CHARTRANS -I.. -I../../WWW/Library/Implementation -I../.. + +CHRTR= + +TABLES= $(CHRTR)iso02_uni.h \ + $(CHRTR)iso01_uni.h \ + $(CHRTR)def7_uni.h \ + $(CHRTR)iso03_uni.h \ + $(CHRTR)iso04_uni.h \ + $(CHRTR)iso05_uni.h \ + $(CHRTR)iso07_uni.h \ + $(CHRTR)iso09_uni.h \ + $(CHRTR)iso10_uni.h \ + $(CHRTR)koi8r_uni.h \ + $(CHRTR)cp437_uni.h \ + $(CHRTR)cp850_uni.h \ + $(CHRTR)cp852_uni.h \ + $(CHRTR)cp1250_uni.h \ + $(CHRTR)cp1252_uni.h \ + $(CHRTR)utf8_uni.h \ + $(CHRTR)rfc_suni.h \ + $(CHRTR)mnemonic_suni.h \ + $(CHRTR)mnem_suni.h + +default: $(FONTMAP_INC) + +tables: $(TABLES) + +makeuctb: makeuctb.c UCkd.h + $(CC) $(CFLAGS) -o makeuctb makeuctb.c + +.SUFFIXES : .tbl .i + +.c.o: +@SHOW_CC@ + @ECHO_CC@$(CC) $(CPPOPTS) $(CFLAGS) -c $(srcdir)/$*.c + +.c.i: +@SHOW_CC@ + @ECHO_CC@$(CPP) -C $(CPPOPTS) $*.c >$@ + +.tbl.h: + ./makeuctb $*.tbl > $@ + +iso01_uni.h: iso01_uni.tbl makeuctb +iso02_uni.h: iso02_uni.tbl makeuctb +iso03_uni.h: iso03_uni.tbl makeuctb +iso04_uni.h: iso04_uni.tbl makeuctb +iso05_uni.h: iso05_uni.tbl makeuctb +iso07_uni.h: iso07_uni.tbl makeuctb +iso09_uni.h: iso09_uni.tbl makeuctb +iso10_uni.h: iso10_uni.tbl makeuctb +cp437_uni.h: cp437_uni.tbl makeuctb +cp850_uni.h: cp850_uni.tbl makeuctb +cp852_uni.h: cp852_uni.tbl makeuctb +cp1250_uni.h: cp1250_uni.tbl makeuctb +cp1252_uni.h: cp1252_uni.tbl makeuctb +utf8_uni.h: utf8_uni.tbl makeuctb +mnemonic_suni.h: mnemonic_suni.tbl makeuctb +mnem_suni.h: mnem_suni.tbl makeuctb +rfc_suni.h: rfc_suni.tbl makeuctb + +clean: + rm -f makeuctb *.o *uni.h + +distclean: clean + -rm -rf obsolete + rm -f core *.bak *.sav *~ *.h_old diff --git a/src/chrtrans/makeuctb.c b/src/chrtrans/makeuctb.c new file mode 100644 index 00000000..aeb1a0e9 --- /dev/null +++ b/src/chrtrans/makeuctb.c @@ -0,0 +1,564 @@ +/* + * makeuctb.c, derived from conmakehash.c + * + * [ original comments: - kw ] + * Create arrays for initializing the kernel folded tables (using a hash + * table turned out to be to limiting...) Unfortunately we can't simply + * preinitialize the tables at compile time since kfree() cannot accept + * memory not allocated by kmalloc(), and doing our own memory management + * just for this seems like massive overkill. + * + * Copyright (C) 1995 H. Peter Anvin + * + * This program is a part of the Linux kernel, and may be freely + * copied under the terms of the GNU General Public License (GPL), + * version 2, or at your option any later version. + */ + +#ifdef NOTDEFINED +#include <stdio.h> +#include <stdlib.h> +#include <sysexits.h> +#include <string.h> +#include <ctype.h> +#else +#include "tcp.h" +#undef exit /* don't try to use LYexit() */ +#endif + +#ifndef TOLOWER +#define TOLOWER(c) (isupper((unsigned char)c) ? tolower((unsigned char)c) : (c)) +#endif /* ndef TOLOWER */ + +#include "UCkd.h" +#include "UCDefs.h" + +#define MAX_FONTLEN 256 + +/* We don't deal with UCS4 here... -kw */ +typedef u16 unicode; + +PRIVATE void usage ARGS1(char *, argv0) +{ + fprintf(stderr, "Usage: \n"); + fprintf(stderr, " %s chartable [charsetmimename] [charsetdisplayname]\n", argv0); + fprintf(stderr, "Utility to convert .tbl into .h files for Lynx compilation.\n"); + exit(EX_USAGE); +} + +PRIVATE int getunicode ARGS1(char **, p0) +{ + char *p = *p0; + + while (*p == ' ' || *p == '\t') + p++; + if (*p == '-') + return -2; + else if (*p != 'U' || p[1] != '+' || + !isxdigit(p[2]) || !isxdigit(p[3]) || !isxdigit(p[4]) || + !isxdigit(p[5]) || isxdigit(p[6])) + return -1; + *p0 = p+6; + return strtol(p+2,0,16); +} + +unicode unitable[MAX_FONTLEN][255]; + /* Massive overkill, but who cares? */ +int unicount[MAX_FONTLEN]; + +struct unimapdesc_str themap_str = {0, NULL}; + +char *tblname; + +PRIVATE void addpair_str ARGS2(char *, str, int, un) +{ + int i; + + + if ( un <= 0xfffe ) + { + /* Initialize the map for replacement strings */ + + if (!themap_str.entry_ct) { + themap_str.entries = + (struct unipair_str *) malloc (2000 * sizeof (struct unipair_str)); + if (! themap_str.entries) + { + fprintf(stderr, + "%s: Out of memory\n", tblname); + exit(EX_DATAERR); + } + } + + /* Check it isn't a duplicate */ + + else for ( i = 0 ; i < themap_str.entry_ct ; i++ ) + if ( themap_str.entries[i].unicode == un ) { + themap_str.entries[i].replace_str = str; + return; + } + + /* Add to list */ + + if ( themap_str.entry_ct > 1999 ) + { + fprintf(stderr, "ERROR: Only 2000 unicode replacement strings permitted!\n"); + exit(EX_DATAERR); + } + + themap_str.entries[themap_str.entry_ct].unicode = un; + themap_str.entries[themap_str.entry_ct].replace_str = str; + themap_str.entry_ct++; + } + + /* otherwise: ignore */ +} + +PRIVATE void addpair ARGS2(int, fp, int, un) +{ + int i; + + if ( un <= 0xfffe ) + { + /* Check it isn't a duplicate */ + + for ( i = 0 ; i < unicount[fp] ; i++ ) + if ( unitable[fp][i] == un ) + return; + + /* Add to list */ + + if ( unicount[fp] > 254 ) + { + fprintf(stderr, "ERROR: Only 255 unicodes/glyph permitted!\n"); + exit(EX_DATAERR); + } + + unitable[fp][unicount[fp]] = un; + unicount[fp]++; + } + + /* otherwise: ignore */ +} + +char this_MIMEcharset[UC_MAXLEN_MIMECSNAME +1]; +char this_LYNXcharset[UC_MAXLEN_LYNXCSNAME +1]; +char id_append[UC_MAXLEN_ID_APPEND +1] = "_"; +int this_isDefaultMap = -1; +int RawUni = 0; +int lowest_eight = 999; + +int main ARGS2(int, argc, char **, argv) +{ + FILE *ctbl; + char buffer[65536]; + int fontlen; + int i, nuni, nent; + int fp0, fp1, un0, un1; + char *p, *p1; + char *tbuf, ch; + + if ( argc < 2 || argc > 4 ) + usage(argv[0]); + + if ( !strcmp(argv[1],"-") ) + { + ctbl = stdin; + tblname = "stdin"; + } + else + { + ctbl = fopen(tblname = argv[1], "r"); + if ( !ctbl ) + { + perror(tblname); + exit(EX_NOINPUT); + } + } + + /* For now we assume the default font is always 256 characters. */ + fontlen = 256; + + /* Initialize table */ + + for ( i = 0 ; i < fontlen ; i++ ) + unicount[i] = 0; + + /* Now we come to the tricky part. Parse the input table. */ + + while ( fgets(buffer, sizeof(buffer), ctbl) != NULL ) + { + if ( (p = strchr(buffer, '\n')) != NULL ) + *p = '\0'; + else + fprintf(stderr, "%s: Warning: line too long\n", tblname); + + p = buffer; + +/* + * Syntax accepted: + * <fontpos> <unicode> <unicode> ... + * <fontpos> <unicode range> <unicode range> ... + * <fontpos> idem + * <range> idem + * <range> <unicode range> + * <unicode> :<replace> + * <unicode range> :<replace> + * + * where <range> ::= <fontpos>-<fontpos> + * and <unicode> ::= U+<h><h><h><h> + * and <h> ::= <hexadecimal digit> + * and <replace> any string not containing '\n' or '\0' + */ + + while (*p == ' ' || *p == '\t') + p++; + if (!*p || *p == '#') + continue; /* skip comment or blank line */ + + switch (*p) { + case 'R': /* Raw Unicode? I.e. needs some special + processing. One digit code. */ + p++; + while (*p == ' ' || *p == '\t') + p++; + RawUni = strtol(p,0,10); + continue; + + case 'D': /* Is this the default display font? */ + p++; + while (*p == ' ' || *p == '\t') + p++; + this_isDefaultMap = (*p == '1'); + continue; + case 'M': + p++; + while (*p == ' ' || *p == '\t') + p++; + sscanf(p,"%40s",this_MIMEcharset); + continue; + case 'O': /* Display charset name for options screen */ + p++; + while (*p == ' ' || *p == '\t') + p++; + for (i=0; *p && i<UC_MAXLEN_LYNXCSNAME; p++,i++) + this_LYNXcharset[i] = *p; + this_LYNXcharset[i] = '\0'; + continue; + } + + if(*p == 'U') + { + un0 = getunicode(&p); + if (un0 < 0) + { + fprintf(stderr, "Bad input line: %s\n", buffer); + exit(EX_DATAERR); + fprintf(stderr, + "%s: Bad Unicode range corresponding to font position range 0x%x-0x%x\n", + tblname, fp0, fp1); + exit(EX_DATAERR); + } + un1 = un0; + while (*p == ' ' || *p == '\t') + p++; + if (*p == '-') + { + p++; + while (*p == ' ' || *p == '\t') + p++; + un1 = getunicode(&p); + if (un1 < 0 || un1 < un0) + { + fprintf(stderr, + "%s: Bad Unicode range U+%x-U+%x\n", + tblname, un0, un1); + fprintf(stderr, "Bad input line: %s\n", buffer); + exit(EX_DATAERR); + } + while (*p == ' ' || *p == '\t') + p++; + } + if (*p != ':') + { + fprintf(stderr, "No ':' where expected: %s\n", buffer); + continue; + } + + tbuf = (char *) malloc (4*strlen(++p) + 1); + if (!(p1 = tbuf)) + { + fprintf(stderr, + "%s: Out of memory\n", tblname); + exit(EX_DATAERR); + } + for(ch = *p; (ch = *p) != '\0'; p++,p1++) + { + if ((unsigned char)ch < 32 || ch == '\\' || ch == '\"' || + (unsigned char)ch >= 127) + { + sprintf(p1,"\\%.3o",(unsigned char)ch); +/* fprintf(stderr,"%s\n",tbuf); */ + p1 += 3; + } + else + *p1 = ch; + } + *p1 = '\0'; + for(i=un0; i<=un1; i++) +/* printf("U+0x%x:%s\n",i,tbuf); */ + addpair_str(tbuf,i); + continue; + } + + fp0 = strtol(p, &p1, 0); + if (p1 == p) + { + fprintf(stderr, "Bad input line: %s\n", buffer); + exit(EX_DATAERR); + } + p = p1; + + while (*p == ' ' || *p == '\t') + p++; + if (*p == '-') + { + p++; + fp1 = strtol(p, &p1, 0); + if (p1 == p) + { + fprintf(stderr, "Bad input line: %s\n", buffer); + exit(EX_DATAERR); + } + p = p1; + } + else + fp1 = 0; + + if ( fp0 < 0 || fp0 >= fontlen ) + { + fprintf(stderr, + "%s: Glyph number (0x%x) larger than font length\n", + tblname, fp0); + exit(EX_DATAERR); + } + if ( fp1 && (fp1 < fp0 || fp1 >= fontlen) ) + { + fprintf(stderr, + "%s: Bad end of range (0x%x)\n", + tblname, fp1); + exit(EX_DATAERR); + } + + if (fp1) + { + /* we have a range; expect the word "idem" or a Unicode range of the + same length */ + while (*p == ' ' || *p == '\t') + p++; + if (!strncmp(p, "idem", 4)) + { + for (i=fp0; i<=fp1; i++) + addpair(i,i); + p += 4; + } + else + { + un0 = getunicode(&p); + while (*p == ' ' || *p == '\t') + p++; + if (*p != '-') + { + fprintf(stderr, +"%s: Corresponding to a range of font positions, there should be a Unicode range\n", + tblname); + exit(EX_DATAERR); + } + p++; + un1 = getunicode(&p); + if (un0 < 0 || un1 < 0) + { + fprintf(stderr, +"%s: Bad Unicode range corresponding to font position range 0x%x-0x%x\n", + tblname, fp0, fp1); + exit(EX_DATAERR); + } + if (un1 - un0 != fp1 - fp0) + { + fprintf(stderr, +"%s: Unicode range U+%x-U+%x not of the same length as font position range 0x%x-0x%x\n", + tblname, un0, un1, fp0, fp1); + exit(EX_DATAERR); + } + for(i=fp0; i<=fp1; i++) + addpair(i,un0-fp0+i); + } + } + else + { + /* no range; expect a list of unicode values or unicode ranges + for a single font position, or the word "idem" */ + + while (*p == ' ' || *p == '\t') + p++; + if (!strncmp(p, "idem", 4)) + { + addpair(fp0,fp0); + p += 4; + } + while ( (un0 = getunicode(&p)) >= 0 ) { + addpair(fp0, un0); + while (*p == ' ' || *p == '\t') + p++; + if (*p == '-') { + p++; + un1 = getunicode(&p); + if (un1 < un0) + { + fprintf(stderr, + "%s: Bad Unicode range 0x%x-0x%x\n", + tblname, un0, un1); + exit(EX_DATAERR); + } + for(un0++; un0 <= un1; un0++) + addpair(fp0, un0); + } + } + } + while (*p == ' ' || *p == '\t') + p++; + if (*p && *p != '#') + fprintf(stderr, "%s: trailing junk (%s) ignored\n", tblname, p); + } + + /* Okay, we hit EOF, now output hash table */ + + fclose(ctbl); + + + /* Compute total size of Unicode list */ + nuni = 0; + for ( i = 0 ; i < fontlen ; i++ ) + nuni += unicount[i]; + + if (argc >=3 ) + strncpy(this_MIMEcharset,argv[2],UC_MAXLEN_MIMECSNAME); + else if (!this_MIMEcharset || ! *this_MIMEcharset) { + strncpy(this_MIMEcharset,tblname,UC_MAXLEN_MIMECSNAME); + if ((p = strchr(this_MIMEcharset,'.')) != 0) + *p = '\0'; + } + for (p=this_MIMEcharset; *p; p++) + *p = TOLOWER(*p); + if (argc >=4 ) + strncpy(this_LYNXcharset,argv[3],UC_MAXLEN_LYNXCSNAME); + else if (!this_LYNXcharset || ! *this_LYNXcharset) { + strncpy(this_LYNXcharset,this_MIMEcharset,UC_MAXLEN_LYNXCSNAME); + } + if ((i=strlen(this_LYNXcharset)) < UC_LEN_LYNXCSNAME) { + for (;i<UC_LEN_LYNXCSNAME;i++) + this_LYNXcharset[i] = ' '; + this_LYNXcharset[i] = '\0'; + } +/* + fprintf(stderr,"this_MIMEcharset: %s.\n",this_MIMEcharset); + fprintf(stderr,"this_LYNXcharset: %s.\n",this_LYNXcharset); +*/ + if (this_isDefaultMap == -1) + this_isDefaultMap = !strncmp(this_MIMEcharset,"iso-8859-1",10); + fprintf(stderr,"makeuctb: %s: %stranslation map", + this_MIMEcharset, (this_isDefaultMap ? "default " : "")); + if (this_isDefaultMap == 1) + *id_append = '\0'; + else + for (i=0,p=this_MIMEcharset; *p && (i < UC_MAXLEN_ID_APPEND-1); p++,i++) + id_append[i+1] = isalnum(*p) ? *p : '_'; + id_append[i+1] = '\0'; + fprintf(stderr," (%s).\n", id_append); + + + printf("\ +/*\n\ + * uni_hash.tbl\n\ + *\n\ + * Do not edit this file; it was automatically generated by\n\ + *\n\ + * %s %s\n\ + *\n\ + */\n\ +\n\ +static u8 dfont_unicount%s[%d] = \n\ +{\n\t", argv[0], argv[1], id_append, fontlen); + + for ( i = 0 ; i < fontlen ; i++ ) + { + if (i >= 128 && unicount[i] > 0 && i < lowest_eight) + lowest_eight = i; + printf("%3d", unicount[i]); + if ( i == fontlen-1 ) + printf("\n};\n"); + else if ( i % 8 == 7 ) + printf(",\n\t"); + else + printf(", "); + } + + if (nuni) + printf("\nstatic u16 dfont_unitable%s[%d] = \n{\n\t", id_append, nuni); + else + printf("\nstatic u16 dfont_unitable%s[1]; /* dummy */\n", id_append); + + fp0 = 0; + nent = 0; + for ( i = 0 ; i < nuni ; i++ ) + { + while ( nent >= unicount[fp0] ) + { + fp0++; + nent = 0; + } + printf("0x%04x", unitable[fp0][nent++]); + if ( i == nuni-1 ) + printf("\n};\n"); + else if ( i % 8 == 7 ) + printf(",\n\t"); + else + printf(", "); + } + + if (themap_str.entry_ct) + printf("\n\ +static struct unipair_str repl_map%s[%d] = \n\ +{\n\t", id_append, themap_str.entry_ct); + else +printf("\n\ +/* static struct unipair_str repl_map%s[]; */\n", id_append); + + for ( i = 0 ; i < themap_str.entry_ct ; i++ ) + { + printf("{0x%x,\"%s\"}", themap_str.entries[i].unicode, + themap_str.entries[i].replace_str); + if ( i == themap_str.entry_ct-1 ) + printf("\n};\n"); + else if ( i % 4 == 3 ) + printf(",\n\t"); + else + printf(", "); + } + if (themap_str.entry_ct) + printf("\n\ +static struct unimapdesc_str dfont_replacedesc%s = {%d,repl_map%s};\n", +id_append, themap_str.entry_ct, id_append); + else + printf("\n\ +static struct unimapdesc_str dfont_replacedesc%s = {0,NULL};\n",id_append); + + printf("#define UC_CHARSET_SETUP%s UC_Charset_Setup(\ +\"%s\",\\\n\"%s\",\\\n\ +dfont_unicount%s,dfont_unitable%s,%i,\\\n\ +dfont_replacedesc%s,%i,%i)\n", +id_append, this_MIMEcharset, this_LYNXcharset, +id_append, id_append, nuni, id_append, lowest_eight, RawUni); + + exit(EX_OK); +} diff --git a/src/chrtrans/mnem_suni.tbl b/src/chrtrans/mnem_suni.tbl new file mode 100644 index 00000000..43c4f707 --- /dev/null +++ b/src/chrtrans/mnem_suni.tbl @@ -0,0 +1,1899 @@ +#The MIME name of this charset. +Mmnem + +#Name as a Display Charset (used on Options screen) +ORFC1345 Mnem + +# U+0020: SP +U+0021:! +U+0022:" +U+0023: Nb +U+0024: DO +U+0025:% +U+0026:&& +U+0027:' +U+0028:( +U+0029:) +U+002a:* +U+002b:+ +U+002c:, +U+002d:- +U+002e:. +U+002f:/ +U+0030:0 +U+0031:1 +U+0032:2 +U+0033:3 +U+0034:4 +U+0035:5 +U+0036:6 +U+0037:7 +U+0038:8 +U+0039:9 +U+003a:: +U+003b:; +U+003c:< +U+003d:= +U+003e:> +U+003f:? +U+0040: At +U+0041:A +U+0042:B +U+0043:C +U+0044:D +U+0045:E +U+0046:F +U+0047:G +U+0048:H +U+0049:I +U+004a:J +U+004b:K +U+004c:L +U+004d:M +U+004e:N +U+004f:O +U+0050:P +U+0051:Q +U+0052:R +U+0053:S +U+0054:T +U+0055:U +U+0056:V +U+0057:W +U+0058:X +U+0059:Y +U+005a:Z +U+005b: <( +U+005c: // +U+005d: )> +U+005e: '> +U+005f:_ +U+0060: '! +U+0061:a +U+0062:b +U+0063:c +U+0064:d +U+0065:e +U+0066:f +U+0067:g +U+0068:h +U+0069:i +U+006a:j +U+006b:k +U+006c:l +U+006d:m +U+006e:n +U+006f:o +U+0070:p +U+0071:q +U+0072:r +U+0073:s +U+0074:t +U+0075:u +U+0076:v +U+0077:w +U+0078:x +U+0079:y +U+007a:z +U+007b: (! +U+007c: !! +U+007d: !) +U+007e: '? +U+00a0: NS +U+00a1: !I +U+00a2: Ct +U+00a3: Pd +U+00a4: Cu +U+00a5: Ye +U+00a6: BB +U+00a7: SE +U+00a8: ': +U+00a9: Co +U+00aa: -a +U+00ab: << +U+00ac: NO +U+00ad: -- +U+00ae: Rg +U+00af: 'm +U+00b0: DG +U+00b1: +- +U+00b2: 2S +U+00b3: 3S +U+00b4: '' +U+00b5: My +U+00b6: PI +U+00b7: .M +U+00b8: ', +U+00b9: 1S +U+00ba: -o +U+00bb: >> +U+00bc: 14 +U+00bd: 12 +U+00be: 34 +U+00bf: ?I +U+00c0: A! +U+00c1: A' +U+00c2: A> +U+00c3: A? +U+00c4: A: +U+00c5: AA +U+00c6: AE +U+00c7: C, +U+00c8: E! +U+00c9: E' +U+00ca: E> +U+00cb: E: +U+00cc: I! +U+00cd: I' +U+00ce: I> +U+00cf: I: +U+00d0: D- +U+00d1: N? +U+00d2: O! +U+00d3: O' +U+00d4: O> +U+00d5: O? +U+00d6: O: +U+00d7: *X +U+00d8: O/ +U+00d9: U! +U+00da: U' +U+00db: U> +U+00dc: U: +U+00dd: Y' +U+00de: TH +U+00df: ss +U+00e0: a! +U+00e1: a' +U+00e2: a> +U+00e3: a? +U+00e4: a: +U+00e5: aa +U+00e6: ae +U+00e7: c, +U+00e8: e! +U+00e9: e' +U+00ea: e> +U+00eb: e: +U+00ec: i! +U+00ed: i' +U+00ee: i> +U+00ef: i: +U+00f0: d- +U+00f1: n? +U+00f2: o! +U+00f3: o' +U+00f4: o> +U+00f5: o? +U+00f6: o: +U+00f7: -: +U+00f8: o/ +U+00f9: u! +U+00fa: u' +U+00fb: u> +U+00fc: u: +U+00fd: y' +U+00fe: th +U+00ff: y: +U+0100: A- +U+0101: a- +U+0102: A( +U+0103: a( +U+0104: A; +U+0105: a; +U+0106: C' +U+0107: c' +U+0108: C> +U+0109: c> +U+010a: C. +U+010b: c. +U+010c: C< +U+010d: c< +U+010e: D< +U+010f: d< +U+0110: D/ +U+0111: d/ +U+0112: E- +U+0113: e- +U+0114: E( +U+0115: e( +U+0116: E. +U+0117: e. +U+0118: E; +U+0119: e; +U+011a: E< +U+011b: e< +U+011c: G> +U+011d: g> +U+011e: G( +U+011f: g( +U+0120: G. +U+0121: g. +U+0122: G, +U+0123: g, +U+0124: H> +U+0125: h> +U+0126: H/ +U+0127: h/ +U+0128: I? +U+0129: i? +U+012a: I- +U+012b: i- +U+012c: I( +U+012d: i( +U+012e: I; +U+012f: i; +U+0130: I. +U+0131: i. +U+0132: IJ +U+0133: ij +U+0134: J> +U+0135: j> +U+0136: K, +U+0137: k, +U+0138: kk +U+0139: L' +U+013a: l' +U+013b: L, +U+013c: l, +U+013d: L< +U+013e: l< +U+013f: L. +U+0140: l. +U+0141: L/ +U+0142: l/ +U+0143: N' +U+0144: n' +U+0145: N, +U+0146: n, +U+0147: N< +U+0148: n< +U+0149: 'n +U+014a: NG +U+014b: ng +U+014c: O- +U+014d: o- +U+014e: O( +U+014f: o( +U+0150: O" +U+0151: o" +U+0152: OE +U+0153: oe +U+0154: R' +U+0155: r' +U+0156: R, +U+0157: r, +U+0158: R< +U+0159: r< +U+015a: S' +U+015b: s' +U+015c: S> +U+015d: s> +U+015e: S, +U+015f: s, +U+0160: S< +U+0161: s< +U+0162: T, +U+0163: t, +U+0164: T< +U+0165: t< +U+0166: T/ +U+0167: t/ +U+0168: U? +U+0169: u? +U+016a: U- +U+016b: u- +U+016c: U( +U+016d: u( +U+016e: U0 +U+016f: u0 +U+0170: U" +U+0171: u" +U+0172: U; +U+0173: u; +U+0174: W> +U+0175: w> +U+0176: Y> +U+0177: y> +U+0178: Y: +U+0179: Z' +U+017a: z' +U+017b: Z. +U+017c: z. +U+017d: Z< +U+017e: z< +U+01a0: O9 +U+01a1: o9 +U+01a2: OI +U+01a3: oi +U+01a6: yr +U+01af: U9 +U+01b0: u9 +U+01b5: Z/ +U+01b6: z/ +U+01b7: ED +U+01cd: A< +U+01ce: a< +U+01cf: I< +U+01d0: i< +U+01d1: O< +U+01d2: o< +U+01d3: U< +U+01d4: u< +U+01d5: _U:-_ +U+01d6: _u:-_ +U+01d7: _U:'_ +U+01d8: _u:'_ +U+01d9: _U:<_ +U+01da: _u:<_ +U+01db: _U:!_ +U+01dc: _u:!_ +U+01de: A1 +U+01df: a1 +U+01e0: A7 +U+01e1: a7 +U+01e2: A3 +U+01e3: a3 +U+01e4: G/ +U+01e5: g/ +U+01e6: G< +U+01e7: g< +U+01e8: K< +U+01e9: k< +U+01ea: O; +U+01eb: o; +U+01ec: O1 +U+01ed: o1 +U+01ee: EZ +U+01ef: ez +U+01f0: j< +U+01f4: G' +U+01f5: g' +U+01fa: _AA'_ +U+01fb: _aa'_ +U+01fc: _AE'_ +U+01fd: _ae'_ +U+01fe: _O/'_ +U+01ff: _o/'_ +U+02bf: ;S +U+02c7: '< +U+02d8: '( +U+02d9: '. +U+02da: '0 +U+02db: '; +U+02dd: '" +U+0386: A% +U+0388: E% +U+0389: Y% +U+038a: I% +U+038c: O% +U+038e: U% +U+038f: W% +U+0390: i3 +U+0391: A* +U+0392: B* +U+0393: G* +U+0394: D* +U+0395: E* +U+0396: Z* +U+0397: Y* +U+0398: H* +U+0399: I* +U+039a: K* +U+039b: L* +U+039c: M* +U+039d: N* +U+039e: C* +U+039f: O* +U+03a0: P* +U+03a1: R* +U+03a3: S* +U+03a4: T* +U+03a5: U* +U+03a6: F* +U+03a7: X* +U+03a8: Q* +U+03a9: W* +U+03aa: J* +U+03ab: V* +U+03ac: a% +U+03ad: e% +U+03ae: y% +U+03af: i% +U+03b0: u3 +U+03b1: a* +U+03b2: b* +U+03b3: g* +U+03b4: d* +U+03b5: e* +U+03b6: z* +U+03b7: y* +U+03b8: h* +U+03b9: i* +U+03ba: k* +U+03bb: l* +U+03bc: m* +U+03bd: n* +U+03be: c* +U+03bf: o* +U+03c0: p* +U+03c1: r* +U+03c2: *s +U+03c3: s* +U+03c4: t* +U+03c5: u* +U+03c6: f* +U+03c7: x* +U+03c8: q* +U+03c9: w* +U+03ca: j* +U+03cb: v* +U+03cc: o% +U+03cd: u% +U+03ce: w% +U+03d8: 'G +U+03d9: ,G +U+03da: T3 +U+03db: t3 +U+03dc: M3 +U+03dd: m3 +U+03de: K3 +U+03df: k3 +U+03e0: P3 +U+03e1: p3 +U+03f4: '% +U+03f5: j3 +U+0401: IO +U+0402: D% +U+0403: G% +U+0404: IE +U+0405: DS +U+0406: II +U+0407: YI +U+0408: J% +U+0409: LJ +U+040a: NJ +U+040b: Ts +U+040c: KJ +U+040e: V% +U+040f: DZ +U+0410: A= +U+0411: B= +U+0412: V= +U+0413: G= +U+0414: D= +U+0415: E= +U+0416: Z% +U+0417: Z= +U+0418: I= +U+0419: J= +U+041a: K= +U+041b: L= +U+041c: M= +U+041d: N= +U+041e: O= +U+041f: P= +U+0420: R= +U+0421: S= +U+0422: T= +U+0423: U= +U+0424: F= +U+0425: H= +U+0426: C= +U+0427: C% +U+0428: S% +U+0429: Sc +U+042a: =" +U+042b: Y= +U+042c: %" +U+042d: JE +U+042e: JU +U+042f: JA +U+0430: a= +U+0431: b= +U+0432: v= +U+0433: g= +U+0434: d= +U+0435: e= +U+0436: z% +U+0437: z= +U+0438: i= +U+0439: j= +U+043a: k= +U+043b: l= +U+043c: m= +U+043d: n= +U+043e: o= +U+043f: p= +U+0440: r= +U+0441: s= +U+0442: t= +U+0443: u= +U+0444: f= +U+0445: h= +U+0446: c= +U+0447: c% +U+0448: s% +U+0449: sc +U+044a: =' +U+044b: y= +U+044c: %' +U+044d: je +U+044e: ju +U+044f: ja +U+0451: io +U+0452: d% +U+0453: g% +U+0454: ie +U+0455: ds +U+0456: ii +U+0457: yi +U+0458: j% +U+0459: lj +U+045a: nj +U+045b: ts +U+045c: kj +U+045e: v% +U+045f: dz +U+0462: Y3 +U+0463: y3 +U+046a: O3 +U+046b: o3 +U+0472: F3 +U+0473: f3 +U+0474: V3 +U+0475: v3 +U+0480: C3 +U+0481: c3 +U+0490: G3 +U+0491: g3 +U+05d0: A+ +U+05d1: B+ +U+05d2: G+ +U+05d3: D+ +U+05d4: H+ +U+05d5: W+ +U+05d6: Z+ +U+05d7: X+ +U+05d8: Tj +U+05d9: J+ +U+05da: K% +U+05db: K+ +U+05dc: L+ +U+05dd: M% +U+05de: M+ +U+05df: N% +U+05e0: N+ +U+05e1: S+ +U+05e2: E+ +U+05e3: P% +U+05e4: P+ +U+05e5: Zj +U+05e6: ZJ +U+05e7: Q+ +U+05e8: R+ +U+05e9: Sh +U+05ea: T+ +U+060c: ,+ +U+061b: ;+ +U+061f: ?+ +U+0621: H' +U+0622: aM +U+0623: aH +U+0624: wH +U+0625: ah +U+0626: yH +U+0627: a+ +U+0628: b+ +U+0629: tm +U+062a: t+ +U+062b: tk +U+062c: g+ +U+062d: hk +U+062e: x+ +U+062f: d+ +U+0630: dk +U+0631: r+ +U+0632: z+ +U+0633: s+ +U+0634: sn +U+0635: c+ +U+0636: dd +U+0637: tj +U+0638: zH +U+0639: e+ +U+063a: i+ +U+0640: ++ +U+0641: f+ +U+0642: q+ +U+0643: k+ +U+0644: l+ +U+0645: m+ +U+0646: n+ +U+0647: h+ +U+0648: w+ +U+0649: j+ +U+064a: y+ +U+064b: :+ +U+064c: "+ +U+064d: =+ +U+064e: /+ +U+064f: '+ +U+0650: 1+ +U+0651: 3+ +U+0652: 0+ +U+0670: aS +U+067e: p+ +U+06a4: v+ +U+06af: gf +U+06f0: 0a +U+06f1: 1a +U+06f2: 2a +U+06f3: 3a +U+06f4: 4a +U+06f5: 5a +U+06f6: 6a +U+06f7: 7a +U+06f8: 8a +U+06f9: 9a +U+1e00: _A-0_ +U+1e01: _a-0_ +U+1e02: B. +U+1e03: b. +U+1e04: _B-._ +U+1e05: _b-._ +U+1e06: B_ +U+1e07: b_ +U+1e08: _C,'_ +U+1e09: _c,'_ +U+1e0a: D. +U+1e0b: d. +U+1e0c: _D-._ +U+1e0d: _d-._ +U+1e0e: D_ +U+1e0f: d_ +U+1e10: D, +U+1e11: d, +U+1e12: _D->_ +U+1e13: _d->_ +U+1e14: _E-!_ +U+1e15: _e-!_ +U+1e16: _E-'_ +U+1e17: _e-'_ +U+1e18: _E->_ +U+1e19: _e->_ +U+1e1a: _E-?_ +U+1e1b: _e-?_ +U+1e1c: _E,(_ +U+1e1d: _e,(_ +U+1e1e: F. +U+1e1f: f. +U+1e20: G- +U+1e21: g- +U+1e22: H. +U+1e23: h. +U+1e24: _H-._ +U+1e25: _h-._ +U+1e26: H: +U+1e27: h: +U+1e28: H, +U+1e29: h, +U+1e2a: _H-(_ +U+1e2b: _h-(_ +U+1e2c: _I-?_ +U+1e2d: _i-?_ +U+1e2e: _I:'_ +U+1e2f: _i:'_ +U+1e30: K' +U+1e31: k' +U+1e32: _K-._ +U+1e33: _k-._ +U+1e34: K_ +U+1e35: k_ +U+1e36: _L-._ +U+1e37: _l-._ +U+1e38: _L--._ +U+1e39: _l--._ +U+1e3a: L_ +U+1e3b: l_ +U+1e3c: _L->_ +U+1e3d: _l->_ +U+1e3e: M' +U+1e3f: m' +U+1e40: M. +U+1e41: m. +U+1e42: _M-._ +U+1e43: _m-._ +U+1e44: N. +U+1e45: n. +U+1e46: _N-._ +U+1e47: _n-._ +U+1e48: N_ +U+1e49: n_ +U+1e4a: _N->_ +U+1e4b: _N->_ +U+1e4c: _O?'_ +U+1e4d: _o?'_ +U+1e4e: _O?:_ +U+1e4f: _o?:_ +U+1e50: _O-!_ +U+1e51: _o-!_ +U+1e52: _O-'_ +U+1e53: _o-'_ +U+1e54: P' +U+1e55: p' +U+1e56: P. +U+1e57: p. +U+1e58: R. +U+1e59: r. +U+1e5a: _R-._ +U+1e5b: _r-._ +U+1e5c: _R--._ +U+1e5d: _r--._ +U+1e5e: R_ +U+1e5f: r_ +U+1e60: S. +U+1e61: s. +U+1e62: _S-._ +U+1e63: _s-._ +U+1e64: _S'._ +U+1e65: _s'._ +U+1e66: _S<._ +U+1e67: _s<._ +U+1e68: _S.-._ +U+1e69: _S.-._ +U+1e6a: T. +U+1e6b: t. +U+1e6c: _T-._ +U+1e6d: _t-._ +U+1e6e: T_ +U+1e6f: t_ +U+1e70: _T->_ +U+1e71: _t->_ +U+1e72: _U--:_ +U+1e73: _u--:_ +U+1e74: _U-?_ +U+1e75: _u-?_ +U+1e76: _U->_ +U+1e77: _u->_ +U+1e78: _U?'_ +U+1e79: _u?'_ +U+1e7a: _U-:_ +U+1e7b: _u-:_ +U+1e7c: V? +U+1e7d: v? +U+1e7e: _V-._ +U+1e7f: _v-._ +U+1e80: W! +U+1e81: w! +U+1e82: W' +U+1e83: w' +U+1e84: W: +U+1e85: w: +U+1e86: W. +U+1e87: w. +U+1e88: _W-._ +U+1e89: _w-._ +U+1e8a: X. +U+1e8b: x. +U+1e8c: X: +U+1e8d: x: +U+1e8e: Y. +U+1e8f: y. +U+1e90: Z> +U+1e91: z> +U+1e92: _Z-._ +U+1e93: _z-._ +U+1e94: Z_ +U+1e95: z_ +U+1e96: h_ +U+1e97: t: +U+1e98: w0 +U+1e99: y0 +U+1ea0: _A-._ +U+1ea1: _a-._ +U+1ea2: A2 +U+1ea3: a2 +U+1ea4: _A>'_ +U+1ea5: _a>'_ +U+1ea6: _A>!_ +U+1ea7: _a>!_ +U+1ea8: _A>2_ +U+1ea9: _a>2_ +U+1eaa: _A>?_ +U+1eab: _a>?_ +U+1eac: _A>-._ +U+1ead: _a>-._ +U+1eae: _A('_ +U+1eaf: _a('_ +U+1eb0: _A(!_ +U+1eb1: _a(!_ +U+1eb2: _A(2_ +U+1eb3: _a(2_ +U+1eb4: _A(?_ +U+1eb5: _a(?_ +U+1eb6: _A(-._ +U+1eb7: _a(-._ +U+1eb8: _E-._ +U+1eb9: _e-._ +U+1eba: E2 +U+1ebb: e2 +U+1ebc: E? +U+1ebd: e? +U+1ebe: _E>'_ +U+1ebf: _e>'_ +U+1ec0: _E>!_ +U+1ec1: _e>!_ +U+1ec2: _E>2_ +U+1ec3: _e>2_ +U+1ec4: _E>?_ +U+1ec5: _e>?_ +U+1ec6: _E>-._ +U+1ec7: _e>-._ +U+1ec8: I2 +U+1ec9: i2 +U+1eca: _I-._ +U+1ecb: _i-._ +U+1ecc: _O-._ +U+1ecd: _o-._ +U+1ece: O2 +U+1ecf: o2 +U+1ed0: _O>'_ +U+1ed1: _o>'_ +U+1ed2: _O>!_ +U+1ed3: _o>!_ +U+1ed4: _O>2_ +U+1ed5: _o>2_ +U+1ed6: _O>?_ +U+1ed7: _o>?_ +U+1ed8: _O>-._ +U+1ed9: _o>-._ +U+1eda: _O9'_ +U+1edb: _o9'_ +U+1edc: _O9!_ +U+1edd: _o9!_ +U+1ede: _O92_ +U+1edf: _o92_ +U+1ee0: _O9?_ +U+1ee1: _o9?_ +U+1ee2: _O9-._ +U+1ee3: _o9-._ +U+1ee4: _U-._ +U+1ee5: _u-._ +U+1ee6: U2 +U+1ee7: u2 +U+1ee8: _U9'_ +U+1ee9: _u9'_ +U+1eea: _U9!_ +U+1eeb: _u9!_ +U+1eec: _U92_ +U+1eed: _u92_ +U+1eee: _U9?_ +U+1eef: _u9?_ +U+1ef0: _U9-._ +U+1ef1: _u9-._ +U+1ef2: Y! +U+1ef3: y! +U+1ef4: _Y-._ +U+1ef5: _y-._ +U+1ef6: Y2 +U+1ef7: y2 +U+1ef8: Y? +U+1ef9: y? +U+1f00: ;' +U+1f01: ,' +U+1f02: ;! +U+1f03: ,! +U+1f04: ?; +U+1f05: ?, +U+1f06: !: +U+1f07: ?: +U+2002: 1N +U+2003: 1M +U+2004: 3M +U+2005: 4M +U+2006: 6M +U+2009: 1T +U+200a: 1H +U+2010: -1 +U+2013: -N +U+2014: -M +U+2015: -3 +U+2016: !2 +U+2017: =2 +U+2018: '6 +U+2019: '9 +U+201a: .9 +U+201b: 9' +U+201c: "6 +U+201d: "9 +U+201e: :9 +U+201f: 9" +U+2020: /- +U+2021: /= +U+2025: .. +U+2030: %0 +U+2032: 1' +U+2033: 2' +U+2034: 3' +U+2035: 1" +U+2036: 2" +U+2037: 3" +U+2038: Ca +U+2039: <1 +U+203a: >1 +U+203b: :X +U+203c: _!*2_ +U+203e: '- +U+2044: /f +U+2070: 0S +U+2074: 4S +U+2075: 5S +U+2076: 6S +U+2077: 7S +U+2078: 8S +U+2079: 9S +U+207a: +S +U+207b: -S +U+207c: =S +U+207d: (S +U+207e: )S +U+207f: nS +U+2080: 0s +U+2081: 1s +U+2082: 2s +U+2083: 3s +U+2084: 4s +U+2085: 5s +U+2086: 6s +U+2087: 7s +U+2088: 8s +U+2089: 9s +U+208a: +s +U+208b: -s +U+208c: =s +U+208d: (s +U+208e: )s +U+20a4: Li +U+20a7: Pt +U+20a9: W= +U+2103: oC +U+2105: co +U+2109: oF +U+2116: N0 +U+2117: PO +U+211e: Rx +U+2120: SM +U+2122: TM +U+2126: Om +U+212b: AO +U+2153: 13 +U+2154: 23 +U+2155: 15 +U+2156: 25 +U+2157: 35 +U+2158: 45 +U+2159: 16 +U+215a: 56 +U+215b: 18 +U+215c: 38 +U+215d: 58 +U+215e: 78 +U+2160: 1R +U+2161: 2R +U+2162: 3R +U+2163: 4R +U+2164: 5R +U+2165: 6R +U+2166: 7R +U+2167: 8R +U+2168: 9R +U+2169: aR +U+216a: bR +U+216b: cR +U+216c: _50R_ +U+216d: _100R_ +U+216e: _500R_ +U+216f: _1000R_ +U+2170: 1r +U+2171: 2r +U+2172: 3r +U+2173: 4r +U+2174: 5r +U+2175: 6r +U+2176: 7r +U+2177: 8r +U+2178: 9r +U+2179: ar +U+217a: br +U+217b: cr +U+217c: _50r_ +U+217d: _100r_ +U+217e: _500r_ +U+217f: _1000r_ +U+2180: _1000RCD_ +U+2181: _5000R_ +U+2182: _10000R_ +U+2190: <- +U+2191: -! +U+2192: -> +U+2193: -v +U+2194: <> +U+2195: UD +U+2196: _<!!_ +U+2197: _//>_ +U+2198: _!!>_ +U+2199: _<//_ +U+21d0: <= +U+21d2: => +U+21d4: == +U+2200: FA +U+2202: dP +U+2203: TE +U+2205: /0 +U+2206: DE +U+2207: NB +U+2208: (- +U+220b: -) +U+220f: *P +U+2211: +Z +U+2212: -2 +U+2213: -+ +U+2217: *- +U+2218: Ob +U+2219: Sb +U+221a: RT +U+221d: 0( +U+221e: 00 +U+221f: -L +U+2220: -V +U+2225: PP +U+2227: AN +U+2228: OR +U+2229: (U +U+222a: )U +U+222b: In +U+222c: DI +U+222e: Io +U+2234: .: +U+2235: :. +U+2236: :R +U+2237: :: +U+223c: ?1 +U+223e: CG +U+2243: ?- +U+2245: ?= +U+2248: ?2 +U+224c: =? +U+2253: HI +U+2260: != +U+2261: =3 +U+2264: =< +U+2265: >= +U+226a: <* +U+226b: *> +U+226e: !< +U+226f: !> +U+2282: (C +U+2283: )C +U+2286: (_ +U+2287: )_ +U+2299: 0. +U+229a: 02 +U+22a5: -T +U+22c5: .P +U+22ee: :3 +U+22ef: .3 +U+2302: Eh +U+2308: <7 +U+2309: >7 +U+230a: 7< +U+230b: 7> +U+2310: NI +U+2312: (A +U+2315: TR +U+2320: Iu +U+2321: Il +U+2329: </ +U+232a: /> +U+2423: Vs +U+2440: 1h +U+2441: 3h +U+2442: 2h +U+2443: 4h +U+2446: 1j +U+2447: 2j +U+2448: 3j +U+2449: 4j +U+2460: _1-o_ +U+2461: _2-o_ +U+2462: _3-o_ +U+2463: _4-o_ +U+2464: _5-o_ +U+2465: _6-o_ +U+2466: _7-o_ +U+2467: _8-o_ +U+2468: _9-o_ +U+2469: _10-o_ +U+246a: _11-o_ +U+246b: _12-o_ +U+246c: _13-o_ +U+246d: _14-o_ +U+246e: _15-o_ +U+246f: _16-o_ +U+2470: _17-o_ +U+2471: _18-o_ +U+2472: _19-o_ +U+2473: _20-o_ +U+2474: _(1)_ +U+2475: _(2)_ +U+2476: _(3)_ +U+2477: _(4)_ +U+2478: _(5)_ +U+2479: _(6)_ +U+247a: _(7)_ +U+247b: _(8)_ +U+247c: _(9)_ +U+247d: _(10)_ +U+247e: _(11)_ +U+247f: _(12)_ +U+2480: _(13)_ +U+2481: _(14)_ +U+2482: _(15)_ +U+2483: _(16)_ +U+2484: _(17)_ +U+2485: _(18)_ +U+2486: _(19)_ +U+2487: _(20)_ +U+2488: 1. +U+2489: 2. +U+248a: 3. +U+248b: 4. +U+248c: 5. +U+248d: 6. +U+248e: 7. +U+248f: 8. +U+2490: 9. +U+2491: _10._ +U+2492: _11._ +U+2493: _12._ +U+2494: _13._ +U+2495: _14._ +U+2496: _15._ +U+2497: _16._ +U+2498: _17._ +U+2499: _18._ +U+249a: _19._ +U+249b: _20._ +U+249c: _(a)_ +U+249d: _(b)_ +U+249e: _(c)_ +U+249f: _(d)_ +U+24a0: _(e)_ +U+24a1: _(f)_ +U+24a2: _(g)_ +U+24a3: _(h)_ +U+24a4: _(i)_ +U+24a5: _(j)_ +U+24a6: _(k)_ +U+24a7: _(l)_ +U+24a8: _(m)_ +U+24a9: _(n)_ +U+24aa: _(o)_ +U+24ab: _(p)_ +U+24ac: _(q)_ +U+24ad: _(r)_ +U+24ae: _(s)_ +U+24af: _(t)_ +U+24b0: _(u)_ +U+24b1: _(v)_ +U+24b2: _(w)_ +U+24b3: _(x)_ +U+24b4: _(y)_ +U+24b5: _(z)_ +U+24b6: _A-o_ +U+24b7: _B-o_ +U+24b8: _C-o_ +U+24b9: _D-o_ +U+24ba: _E-o_ +U+24bb: _F-o_ +U+24bc: _G-o_ +U+24bd: _H-o_ +U+24be: _I-o_ +U+24bf: _J-o_ +U+24c0: _K-o_ +U+24c1: _L-o_ +U+24c2: _M-o_ +U+24c3: _N-o_ +U+24c4: _O-o_ +U+24c5: _P-o_ +U+24c6: _Q-o_ +U+24c7: _R-o_ +U+24c8: _S-o_ +U+24c9: _T-o_ +U+24ca: _U-o_ +U+24cb: _V-o_ +U+24cc: _W-o_ +U+24cd: _X-o_ +U+24ce: _Y-o_ +U+24cf: _Z-o_ +U+24d0: _a-o_ +U+24d1: _b-o_ +U+24d2: _c-o_ +U+24d3: _d-o_ +U+24d4: _e-o_ +U+24d5: _f-o_ +U+24d6: _g-o_ +U+24d7: _h-o_ +U+24d8: _i-o_ +U+24d9: _j-o_ +U+24da: _k-o_ +U+24db: _l-o_ +U+24dc: _m-o_ +U+24dd: _n-o_ +U+24de: _o-o_ +U+24df: _p-o_ +U+24e0: _q-o_ +U+24e1: _r-o_ +U+24e2: _s-o_ +U+24e3: _t-o_ +U+24e4: _u-o_ +U+24e5: _v-o_ +U+24e6: _w-o_ +U+24e7: _x-o_ +U+24e8: _y-o_ +U+24e9: _z-o_ +U+24ea: _0-o_ +U+2500: hh +U+2501: HH +U+2502: vv +U+2503: VV +U+2504: 3- +U+2505: 3_ +U+2506: 3! +U+2507: 3/ +U+2508: 4- +U+2509: 4_ +U+250a: 4! +U+250b: 4/ +U+250c: dr +U+250d: dR +U+250e: Dr +U+250f: DR +U+2510: dl +U+2511: dL +U+2512: Dl +U+2513: LD +U+2514: ur +U+2515: uR +U+2516: Ur +U+2517: UR +U+2518: ul +U+2519: uL +U+251a: Ul +U+251b: UL +U+251c: vr +U+251d: vR +U+251e: _Udr_ +U+251f: _uDr_ +U+2520: Vr +U+2521: _UdR_ +U+2522: _uDR_ +U+2523: VR +U+2524: vl +U+2525: vL +U+2526: _Udl_ +U+2527: _uDl_ +U+2528: Vl +U+2529: _UdL_ +U+252a: _uDL_ +U+252b: VL +U+252c: dh +U+252d: _dLr_ +U+252e: _dlR_ +U+252f: dH +U+2530: Dh +U+2531: _DLr_ +U+2532: _DlR_ +U+2533: DH +U+2534: uh +U+2535: _uLr_ +U+2536: _ulR_ +U+2537: uH +U+2538: Uh +U+2539: _ULr_ +U+253a: _UlR_ +U+253b: UH +U+253c: vh +U+253d: _vLr_ +U+253e: _vlR_ +U+253f: vH +U+2540: _Udh_ +U+2541: _uDh_ +U+2542: Vh +U+2543: _UdLr_ +U+2544: _UdlR_ +U+2545: _uDLr_ +U+2546: _uDlR_ +U+2547: _UdH_ +U+2548: _uDH_ +U+2549: _VLr_ +U+254a: _VlR_ +U+254b: VH +U+2571: FD +U+2572: BD +U+2580: TB +U+2584: LB +U+2588: FB +U+258c: lB +U+2590: RB +U+2591: .S +U+2592: :S +U+2593: ?S +U+25a0: fS +U+25a1: OS +U+25a2: RO +U+25a3: Rr +U+25a4: RF +U+25a5: RY +U+25a6: RH +U+25a7: RZ +U+25a8: RK +U+25a9: RX +U+25aa: sB +U+25ac: SR +U+25ad: Or +U+25b2: UT +U+25b3: uT +U+25b6: PR +U+25b7: Tr +U+25bc: Dt +U+25bd: dT +U+25c0: PL +U+25c1: Tl +U+25c6: Db +U+25c7: Dw +U+25ca: LZ +U+25cb: 0m +U+25ce: 0o +U+25cf: 0M +U+25d0: 0L +U+25d1: 0R +U+25d8: Sn +U+25d9: Ic +U+25e2: Fd +U+25e3: Bd +U+2605: *2 +U+2606: *1 +U+260e: _TEL_ +U+260f: _tel_ +U+261c: <H +U+261e: >H +U+263a: 0u +U+263b: 0U +U+263c: SU +U+2640: Fm +U+2642: Ml +U+2660: cS +U+2661: cH +U+2662: cD +U+2663: cC +U+2664: _cS-_ +U+2665: _cH-_ +U+2666: _cD-_ +U+2667: _cC-_ +U+2669: Md +U+266a: M8 +U+266b: M2 +U+266c: _M16_ +U+266d: Mb +U+266e: Mx +U+266f: MX +U+2713: OK +U+2717: XX +U+2720: -X +U+3000: IS +U+3001: ,_ +U+3002: ._ +U+3003: +" +U+3004: +_ +U+3005: *_ +U+3006: ;_ +U+3007: 0_ +U+300a: <+ +U+300b: >+ +U+300c: <' +U+300d: >' +U+300e: <" +U+300f: >" +U+3010: (" +U+3011: )" +U+3012: =T +U+3013: =_ +U+3014: (' +U+3015: )' +U+3016: (I +U+3017: )I +U+301c: -? +U+3020: _=T:)_ +U+3041: A5 +U+3042: a5 +U+3043: I5 +U+3044: i5 +U+3045: U5 +U+3046: u5 +U+3047: E5 +U+3048: e5 +U+3049: O5 +U+304a: o5 +U+304b: ka +U+304c: ga +U+304d: ki +U+304e: gi +U+304f: ku +U+3050: gu +U+3051: ke +U+3052: ge +U+3053: ko +U+3054: go +U+3055: sa +U+3056: za +U+3057: si +U+3058: zi +U+3059: su +U+305a: zu +U+305b: se +U+305c: ze +U+305d: so +U+305e: zo +U+305f: ta +U+3060: da +U+3061: ti +U+3062: di +U+3063: tU +U+3064: tu +U+3065: du +U+3066: te +U+3067: de +U+3068: to +U+3069: do +U+306a: na +U+306b: ni +U+306c: nu +U+306d: ne +U+306e: no +U+306f: ha +U+3070: ba +U+3071: pa +U+3072: hi +U+3073: bi +U+3074: pi +U+3075: hu +U+3076: bu +U+3077: pu +U+3078: he +U+3079: be +U+307a: pe +U+307b: ho +U+307c: bo +U+307d: po +U+307e: ma +U+307f: mi +U+3080: mu +U+3081: me +U+3082: mo +U+3083: yA +U+3084: ya +U+3085: yU +U+3086: yu +U+3087: yO +U+3088: yo +U+3089: ra +U+308a: ri +U+308b: ru +U+308c: re +U+308d: ro +U+308e: wA +U+308f: wa +U+3090: wi +U+3091: we +U+3092: wo +U+3093: n5 +U+3094: vu +U+309b: "5 +U+309c: 05 +U+309d: *5 +U+309e: +5 +U+30a1: a6 +U+30a2: A6 +U+30a3: i6 +U+30a4: I6 +U+30a5: u6 +U+30a6: U6 +U+30a7: e6 +U+30a8: E6 +U+30a9: o6 +U+30aa: O6 +U+30ab: Ka +U+30ac: Ga +U+30ad: Ki +U+30ae: Gi +U+30af: Ku +U+30b0: Gu +U+30b1: Ke +U+30b2: Ge +U+30b3: Ko +U+30b4: Go +U+30b5: Sa +U+30b6: Za +U+30b7: Si +U+30b8: Zi +U+30b9: Su +U+30ba: Zu +U+30bb: Se +U+30bc: Ze +U+30bd: So +U+30be: Zo +U+30bf: Ta +U+30c0: Da +U+30c1: Ti +U+30c2: Di +U+30c3: TU +U+30c4: Tu +U+30c5: Du +U+30c6: Te +U+30c7: De +U+30c8: To +U+30c9: Do +U+30ca: Na +U+30cb: Ni +U+30cc: Nu +U+30cd: Ne +U+30ce: No +U+30cf: Ha +U+30d0: Ba +U+30d1: Pa +U+30d2: Hi +U+30d3: Bi +U+30d4: Pi +U+30d5: Hu +U+30d6: Bu +U+30d7: Pu +U+30d8: He +U+30d9: Be +U+30da: Pe +U+30db: Ho +U+30dc: Bo +U+30dd: Po +U+30de: Ma +U+30df: Mi +U+30e0: Mu +U+30e1: Me +U+30e2: Mo +U+30e3: YA +U+30e4: Ya +U+30e5: YU +U+30e6: Yu +U+30e7: YO +U+30e8: Yo +U+30e9: Ra +U+30ea: Ri +U+30eb: Ru +U+30ec: Re +U+30ed: Ro +U+30ee: WA +U+30ef: Wa +U+30f0: Wi +U+30f1: We +U+30f2: Wo +U+30f3: N6 +U+30f4: Vu +U+30f5: KA +U+30f6: KE +U+30f7: Va +U+30f8: Vi +U+30f9: Ve +U+30fa: Vo +U+30fb: .6 +U+30fc: -6 +U+30fd: *6 +U+30fe: +6 +U+3105: b4 +U+3106: p4 +U+3107: m4 +U+3108: f4 +U+3109: d4 +U+310a: t4 +U+310b: n4 +U+310c: l4 +U+310d: g4 +U+310e: k4 +U+310f: h4 +U+3110: j4 +U+3111: q4 +U+3112: x4 +U+3113: zh +U+3114: ch +U+3115: sh +U+3116: r4 +U+3117: z4 +U+3118: c4 +U+3119: s4 +U+311a: a4 +U+311b: o4 +U+311c: e4 +U+311d: _eh4_ +U+311e: ai +U+311f: ei +U+3120: au +U+3121: ou +U+3122: an +U+3123: en +U+3124: aN +U+3125: eN +U+3126: er +U+3127: i4 +U+3128: u4 +U+3129: iu +U+312a: v4 +U+312b: nG +U+312c: gn +U+321c: _(JU)_ +U+3220: 1c +U+3221: 2c +U+3222: 3c +U+3223: 4c +U+3224: 5c +U+3225: 6c +U+3226: 7c +U+3227: 8c +U+3228: 9c +U+3229: _10c_ +U+327f: _KSC_ +U+fb00: ff +U+fb01: fi +U+fb02: fl +U+fb03: _ffi_ +U+fb04: _ffl_ +U+fb05: ft +U+fb06: st +U+fe7d: _3+;_ +U+fe82: _aM._ +U+fe84: _aH._ +U+fe8d: _a+-_ +U+fe8e: _a+._ +U+fe8f: _b+-_ +U+fe90: _b+,_ +U+fe91: _b+;_ +U+fe92: _b+._ +U+fe93: _tm-_ +U+fe94: _tm._ +U+fe95: _t+-_ +U+fe96: _t+,_ +U+fe97: _t+;_ +U+fe98: _t+._ +U+fe99: _tk-_ +U+fe9a: _tk,_ +U+fe9b: _tk;_ +U+fe9c: _tk._ +U+fe9d: _g+-_ +U+fe9e: _g+,_ +U+fe9f: _g+;_ +U+fea0: _g+._ +U+fea1: _hk-_ +U+fea2: _hk,_ +U+fea3: _hk;_ +U+fea4: _hk._ +U+fea5: _x+-_ +U+fea6: _x+,_ +U+fea7: _x+;_ +U+fea8: _x+._ +U+fea9: _d+-_ +U+feaa: _d+._ +U+feab: _dk-_ +U+feac: _dk._ +U+fead: _r+-_ +U+feae: _r+._ +U+feaf: _z+-_ +U+feb0: _z+._ +U+feb1: _s+-_ +U+feb2: _s+,_ +U+feb3: _s+;_ +U+feb4: _s+._ +U+feb5: _sn-_ +U+feb6: _sn,_ +U+feb7: _sn;_ +U+feb8: _sn._ +U+feb9: _c+-_ +U+feba: _c+,_ +U+febb: _c+;_ +U+febc: _c+._ +U+febd: _dd-_ +U+febe: _dd,_ +U+febf: _dd;_ +U+fec0: _dd._ +U+fec1: _tj-_ +U+fec2: _tj,_ +U+fec3: _tj;_ +U+fec4: _tj._ +U+fec5: _zH-_ +U+fec6: _zH,_ +U+fec7: _zH;_ +U+fec8: _zH._ +U+fec9: _e+-_ +U+feca: _e+,_ +U+fecb: _e+;_ +U+fecc: _e+._ +U+fecd: _i+-_ +U+fece: _i+,_ +U+fecf: _i+;_ +U+fed0: _i+._ +U+fed1: _f+-_ +U+fed2: _f+,_ +U+fed3: _f+;_ +U+fed4: _f+._ +U+fed5: _q+-_ +U+fed6: _q+,_ +U+fed7: _q+;_ +U+fed8: _q+._ +U+fed9: _k+-_ +U+feda: _k+,_ +U+fedb: _k+;_ +U+fedc: _k+._ +U+fedd: _l+-_ +U+fede: _l+,_ +U+fedf: _l+;_ +U+fee0: _l+._ +U+fee1: _m+-_ +U+fee2: _m+,_ +U+fee3: _m+;_ +U+fee4: _m+._ +U+fee5: _n+-_ +U+fee6: _n+,_ +U+fee7: _n+;_ +U+fee8: _n+._ +U+fee9: _h+-_ +U+feea: _h+,_ +U+feeb: _h+;_ +U+feec: _h+._ +U+feed: _w+-_ +U+feee: _w+._ +U+feef: _j+-_ +U+fef0: _j+._ +U+fef1: _y+-_ +U+fef2: _y+,_ +U+fef3: _y+;_ +U+fef4: _y+._ +U+fef5: _lM-_ +U+fef6: _lM._ +U+fef7: _lH-_ +U+fef8: _lH._ +U+fef9: _lh-_ +U+fefa: _lh._ +U+fefb: _la-_ +U+fefc: _la._ +U+0000: NU +U+0001: SH +U+0002: SX +U+0003: EX +U+0004: ET +U+0005: EQ +U+0006: AK +U+0007: BL +U+0008: BS +U+0009: HT +# U+000a: LF +U+000b: VT +U+000c: FF +U+000d: CR +U+000e: SO +U+000f: SI +U+0010: DL +U+0011: D1 +U+0012: D2 +U+0013: D3 +U+0014: D4 +U+0015: NK +U+0016: SY +U+0017: EB +U+0018: CN +U+0019: EM +U+001a: SB +U+001b: EC +U+001c: FS +U+001d: GS +U+001e: RS +U+001f: US +U+007f: DT +U+0080: PA +U+0081: HO +U+0082: BH +U+0083: NH +U+0084: IN +U+0085: NL +U+0086: SA +U+0087: ES +U+0088: HS +U+0089: HJ +U+008a: VS +U+008b: PD +U+008c: PU +U+008d: RI +U+008e: S2 +U+008f: S3 +U+0090: DC +U+0091: P1 +U+0092: P2 +U+0093: TS +U+0094: CC +U+0095: MW +U+0096: SG +U+0097: EG +U+0098: SS +U+0099: GC +U+009a: SC +U+009b: CI +U+009c: ST +U+009d: OC +U+009e: PM +U+009f: AC +U+e001: /c +U+e002: UA +U+e003: UB +U+e004: "3 +U+e005: "1 +U+e006: "! +U+e007: "' +U+e008: "> +U+e009: "? +U+e00a: "- +U+e00b: "( +U+e00c: ". +U+e00d: ": +U+e00e: "0 +U+e00f: "" +U+e010: "< +U+e011: ", +U+e012: "; +U+e013: "_ +U+e014: "= +U+e015: "/ +U+e016: "i +U+e017: "d +U+e018: "p +U+e019: ;; +U+e01a: ,, +U+e01b: b3 +U+e01c: Ci +U+e01d: f( +U+e01e: ed +U+e01f: am +U+e020: pm +U+e021: _Tel_ +U+e022: _a+:_ +U+e023: Fl +U+e024: GF +U+e025: >V +U+e026: !* +U+e027: ?* +U+e028: J< diff --git a/src/chrtrans/mnemonic_suni.tbl b/src/chrtrans/mnemonic_suni.tbl new file mode 100644 index 00000000..d2f05d89 --- /dev/null +++ b/src/chrtrans/mnemonic_suni.tbl @@ -0,0 +1,1899 @@ +#The MIME name of this charset. +Mmnemonic + +#Name as a Display Charset (used on Options screen) +ORFC1345 Mnemonic + +# U+0020:&SP +U+0021:! +U+0022:" +U+0023:&Nb +U+0024:&DO +U+0025:% +U+0026:&& +U+0027:' +U+0028:( +U+0029:) +U+002a:* +U+002b:+ +U+002c:, +U+002d:- +U+002e:. +U+002f:/ +U+0030:0 +U+0031:1 +U+0032:2 +U+0033:3 +U+0034:4 +U+0035:5 +U+0036:6 +U+0037:7 +U+0038:8 +U+0039:9 +U+003a:: +U+003b:; +U+003c:< +U+003d:= +U+003e:> +U+003f:? +U+0040:&At +U+0041:A +U+0042:B +U+0043:C +U+0044:D +U+0045:E +U+0046:F +U+0047:G +U+0048:H +U+0049:I +U+004a:J +U+004b:K +U+004c:L +U+004d:M +U+004e:N +U+004f:O +U+0050:P +U+0051:Q +U+0052:R +U+0053:S +U+0054:T +U+0055:U +U+0056:V +U+0057:W +U+0058:X +U+0059:Y +U+005a:Z +U+005b:&<( +U+005c:&// +U+005d:&)> +U+005e:&'> +U+005f:_ +U+0060:&'! +U+0061:a +U+0062:b +U+0063:c +U+0064:d +U+0065:e +U+0066:f +U+0067:g +U+0068:h +U+0069:i +U+006a:j +U+006b:k +U+006c:l +U+006d:m +U+006e:n +U+006f:o +U+0070:p +U+0071:q +U+0072:r +U+0073:s +U+0074:t +U+0075:u +U+0076:v +U+0077:w +U+0078:x +U+0079:y +U+007a:z +U+007b:&(! +U+007c:&!! +U+007d:&!) +U+007e:&'? +U+00a0:&NS +U+00a1:&!I +U+00a2:&Ct +U+00a3:&Pd +U+00a4:&Cu +U+00a5:&Ye +U+00a6:&BB +U+00a7:&SE +U+00a8:&': +U+00a9:&Co +U+00aa:&-a +U+00ab:&<< +U+00ac:&NO +U+00ad:&-- +U+00ae:&Rg +U+00af:&'m +U+00b0:&DG +U+00b1:&+- +U+00b2:&2S +U+00b3:&3S +U+00b4:&'' +U+00b5:&My +U+00b6:&PI +U+00b7:&.M +U+00b8:&', +U+00b9:&1S +U+00ba:&-o +U+00bb:&>> +U+00bc:&14 +U+00bd:&12 +U+00be:&34 +U+00bf:&?I +U+00c0:&A! +U+00c1:&A' +U+00c2:&A> +U+00c3:&A? +U+00c4:&A: +U+00c5:&AA +U+00c6:&AE +U+00c7:&C, +U+00c8:&E! +U+00c9:&E' +U+00ca:&E> +U+00cb:&E: +U+00cc:&I! +U+00cd:&I' +U+00ce:&I> +U+00cf:&I: +U+00d0:&D- +U+00d1:&N? +U+00d2:&O! +U+00d3:&O' +U+00d4:&O> +U+00d5:&O? +U+00d6:&O: +U+00d7:&*X +U+00d8:&O/ +U+00d9:&U! +U+00da:&U' +U+00db:&U> +U+00dc:&U: +U+00dd:&Y' +U+00de:&TH +U+00df:&ss +U+00e0:&a! +U+00e1:&a' +U+00e2:&a> +U+00e3:&a? +U+00e4:&a: +U+00e5:&aa +U+00e6:&ae +U+00e7:&c, +U+00e8:&e! +U+00e9:&e' +U+00ea:&e> +U+00eb:&e: +U+00ec:&i! +U+00ed:&i' +U+00ee:&i> +U+00ef:&i: +U+00f0:&d- +U+00f1:&n? +U+00f2:&o! +U+00f3:&o' +U+00f4:&o> +U+00f5:&o? +U+00f6:&o: +U+00f7:&-: +U+00f8:&o/ +U+00f9:&u! +U+00fa:&u' +U+00fb:&u> +U+00fc:&u: +U+00fd:&y' +U+00fe:&th +U+00ff:&y: +U+0100:&A- +U+0101:&a- +U+0102:&A( +U+0103:&a( +U+0104:&A; +U+0105:&a; +U+0106:&C' +U+0107:&c' +U+0108:&C> +U+0109:&c> +U+010a:&C. +U+010b:&c. +U+010c:&C< +U+010d:&c< +U+010e:&D< +U+010f:&d< +U+0110:&D/ +U+0111:&d/ +U+0112:&E- +U+0113:&e- +U+0114:&E( +U+0115:&e( +U+0116:&E. +U+0117:&e. +U+0118:&E; +U+0119:&e; +U+011a:&E< +U+011b:&e< +U+011c:&G> +U+011d:&g> +U+011e:&G( +U+011f:&g( +U+0120:&G. +U+0121:&g. +U+0122:&G, +U+0123:&g, +U+0124:&H> +U+0125:&h> +U+0126:&H/ +U+0127:&h/ +U+0128:&I? +U+0129:&i? +U+012a:&I- +U+012b:&i- +U+012c:&I( +U+012d:&i( +U+012e:&I; +U+012f:&i; +U+0130:&I. +U+0131:&i. +U+0132:&IJ +U+0133:&ij +U+0134:&J> +U+0135:&j> +U+0136:&K, +U+0137:&k, +U+0138:&kk +U+0139:&L' +U+013a:&l' +U+013b:&L, +U+013c:&l, +U+013d:&L< +U+013e:&l< +U+013f:&L. +U+0140:&l. +U+0141:&L/ +U+0142:&l/ +U+0143:&N' +U+0144:&n' +U+0145:&N, +U+0146:&n, +U+0147:&N< +U+0148:&n< +U+0149:&'n +U+014a:&NG +U+014b:&ng +U+014c:&O- +U+014d:&o- +U+014e:&O( +U+014f:&o( +U+0150:&O" +U+0151:&o" +U+0152:&OE +U+0153:&oe +U+0154:&R' +U+0155:&r' +U+0156:&R, +U+0157:&r, +U+0158:&R< +U+0159:&r< +U+015a:&S' +U+015b:&s' +U+015c:&S> +U+015d:&s> +U+015e:&S, +U+015f:&s, +U+0160:&S< +U+0161:&s< +U+0162:&T, +U+0163:&t, +U+0164:&T< +U+0165:&t< +U+0166:&T/ +U+0167:&t/ +U+0168:&U? +U+0169:&u? +U+016a:&U- +U+016b:&u- +U+016c:&U( +U+016d:&u( +U+016e:&U0 +U+016f:&u0 +U+0170:&U" +U+0171:&u" +U+0172:&U; +U+0173:&u; +U+0174:&W> +U+0175:&w> +U+0176:&Y> +U+0177:&y> +U+0178:&Y: +U+0179:&Z' +U+017a:&z' +U+017b:&Z. +U+017c:&z. +U+017d:&Z< +U+017e:&z< +U+01a0:&O9 +U+01a1:&o9 +U+01a2:&OI +U+01a3:&oi +U+01a6:&yr +U+01af:&U9 +U+01b0:&u9 +U+01b5:&Z/ +U+01b6:&z/ +U+01b7:&ED +U+01cd:&A< +U+01ce:&a< +U+01cf:&I< +U+01d0:&i< +U+01d1:&O< +U+01d2:&o< +U+01d3:&U< +U+01d4:&u< +U+01d5:&_U:-_ +U+01d6:&_u:-_ +U+01d7:&_U:'_ +U+01d8:&_u:'_ +U+01d9:&_U:<_ +U+01da:&_u:<_ +U+01db:&_U:!_ +U+01dc:&_u:!_ +U+01de:&A1 +U+01df:&a1 +U+01e0:&A7 +U+01e1:&a7 +U+01e2:&A3 +U+01e3:&a3 +U+01e4:&G/ +U+01e5:&g/ +U+01e6:&G< +U+01e7:&g< +U+01e8:&K< +U+01e9:&k< +U+01ea:&O; +U+01eb:&o; +U+01ec:&O1 +U+01ed:&o1 +U+01ee:&EZ +U+01ef:&ez +U+01f0:&j< +U+01f4:&G' +U+01f5:&g' +U+01fa:&_AA'_ +U+01fb:&_aa'_ +U+01fc:&_AE'_ +U+01fd:&_ae'_ +U+01fe:&_O/'_ +U+01ff:&_o/'_ +U+02bf:&;S +U+02c7:&'< +U+02d8:&'( +U+02d9:&'. +U+02da:&'0 +U+02db:&'; +U+02dd:&'" +U+0386:&A% +U+0388:&E% +U+0389:&Y% +U+038a:&I% +U+038c:&O% +U+038e:&U% +U+038f:&W% +U+0390:&i3 +U+0391:&A* +U+0392:&B* +U+0393:&G* +U+0394:&D* +U+0395:&E* +U+0396:&Z* +U+0397:&Y* +U+0398:&H* +U+0399:&I* +U+039a:&K* +U+039b:&L* +U+039c:&M* +U+039d:&N* +U+039e:&C* +U+039f:&O* +U+03a0:&P* +U+03a1:&R* +U+03a3:&S* +U+03a4:&T* +U+03a5:&U* +U+03a6:&F* +U+03a7:&X* +U+03a8:&Q* +U+03a9:&W* +U+03aa:&J* +U+03ab:&V* +U+03ac:&a% +U+03ad:&e% +U+03ae:&y% +U+03af:&i% +U+03b0:&u3 +U+03b1:&a* +U+03b2:&b* +U+03b3:&g* +U+03b4:&d* +U+03b5:&e* +U+03b6:&z* +U+03b7:&y* +U+03b8:&h* +U+03b9:&i* +U+03ba:&k* +U+03bb:&l* +U+03bc:&m* +U+03bd:&n* +U+03be:&c* +U+03bf:&o* +U+03c0:&p* +U+03c1:&r* +U+03c2:&*s +U+03c3:&s* +U+03c4:&t* +U+03c5:&u* +U+03c6:&f* +U+03c7:&x* +U+03c8:&q* +U+03c9:&w* +U+03ca:&j* +U+03cb:&v* +U+03cc:&o% +U+03cd:&u% +U+03ce:&w% +U+03d8:&'G +U+03d9:&,G +U+03da:&T3 +U+03db:&t3 +U+03dc:&M3 +U+03dd:&m3 +U+03de:&K3 +U+03df:&k3 +U+03e0:&P3 +U+03e1:&p3 +U+03f4:&'% +U+03f5:&j3 +U+0401:&IO +U+0402:&D% +U+0403:&G% +U+0404:&IE +U+0405:&DS +U+0406:&II +U+0407:&YI +U+0408:&J% +U+0409:&LJ +U+040a:&NJ +U+040b:&Ts +U+040c:&KJ +U+040e:&V% +U+040f:&DZ +U+0410:&A= +U+0411:&B= +U+0412:&V= +U+0413:&G= +U+0414:&D= +U+0415:&E= +U+0416:&Z% +U+0417:&Z= +U+0418:&I= +U+0419:&J= +U+041a:&K= +U+041b:&L= +U+041c:&M= +U+041d:&N= +U+041e:&O= +U+041f:&P= +U+0420:&R= +U+0421:&S= +U+0422:&T= +U+0423:&U= +U+0424:&F= +U+0425:&H= +U+0426:&C= +U+0427:&C% +U+0428:&S% +U+0429:&Sc +U+042a:&=" +U+042b:&Y= +U+042c:&%" +U+042d:&JE +U+042e:&JU +U+042f:&JA +U+0430:&a= +U+0431:&b= +U+0432:&v= +U+0433:&g= +U+0434:&d= +U+0435:&e= +U+0436:&z% +U+0437:&z= +U+0438:&i= +U+0439:&j= +U+043a:&k= +U+043b:&l= +U+043c:&m= +U+043d:&n= +U+043e:&o= +U+043f:&p= +U+0440:&r= +U+0441:&s= +U+0442:&t= +U+0443:&u= +U+0444:&f= +U+0445:&h= +U+0446:&c= +U+0447:&c% +U+0448:&s% +U+0449:&sc +U+044a:&=' +U+044b:&y= +U+044c:&%' +U+044d:&je +U+044e:&ju +U+044f:&ja +U+0451:&io +U+0452:&d% +U+0453:&g% +U+0454:&ie +U+0455:&ds +U+0456:&ii +U+0457:&yi +U+0458:&j% +U+0459:&lj +U+045a:&nj +U+045b:&ts +U+045c:&kj +U+045e:&v% +U+045f:&dz +U+0462:&Y3 +U+0463:&y3 +U+046a:&O3 +U+046b:&o3 +U+0472:&F3 +U+0473:&f3 +U+0474:&V3 +U+0475:&v3 +U+0480:&C3 +U+0481:&c3 +U+0490:&G3 +U+0491:&g3 +U+05d0:&A+ +U+05d1:&B+ +U+05d2:&G+ +U+05d3:&D+ +U+05d4:&H+ +U+05d5:&W+ +U+05d6:&Z+ +U+05d7:&X+ +U+05d8:&Tj +U+05d9:&J+ +U+05da:&K% +U+05db:&K+ +U+05dc:&L+ +U+05dd:&M% +U+05de:&M+ +U+05df:&N% +U+05e0:&N+ +U+05e1:&S+ +U+05e2:&E+ +U+05e3:&P% +U+05e4:&P+ +U+05e5:&Zj +U+05e6:&ZJ +U+05e7:&Q+ +U+05e8:&R+ +U+05e9:&Sh +U+05ea:&T+ +U+060c:&,+ +U+061b:&;+ +U+061f:&?+ +U+0621:&H' +U+0622:&aM +U+0623:&aH +U+0624:&wH +U+0625:&ah +U+0626:&yH +U+0627:&a+ +U+0628:&b+ +U+0629:&tm +U+062a:&t+ +U+062b:&tk +U+062c:&g+ +U+062d:&hk +U+062e:&x+ +U+062f:&d+ +U+0630:&dk +U+0631:&r+ +U+0632:&z+ +U+0633:&s+ +U+0634:&sn +U+0635:&c+ +U+0636:&dd +U+0637:&tj +U+0638:&zH +U+0639:&e+ +U+063a:&i+ +U+0640:&++ +U+0641:&f+ +U+0642:&q+ +U+0643:&k+ +U+0644:&l+ +U+0645:&m+ +U+0646:&n+ +U+0647:&h+ +U+0648:&w+ +U+0649:&j+ +U+064a:&y+ +U+064b:&:+ +U+064c:&"+ +U+064d:&=+ +U+064e:&/+ +U+064f:&'+ +U+0650:&1+ +U+0651:&3+ +U+0652:&0+ +U+0670:&aS +U+067e:&p+ +U+06a4:&v+ +U+06af:&gf +U+06f0:&0a +U+06f1:&1a +U+06f2:&2a +U+06f3:&3a +U+06f4:&4a +U+06f5:&5a +U+06f6:&6a +U+06f7:&7a +U+06f8:&8a +U+06f9:&9a +U+1e00:&_A-0_ +U+1e01:&_a-0_ +U+1e02:&B. +U+1e03:&b. +U+1e04:&_B-._ +U+1e05:&_b-._ +U+1e06:&B_ +U+1e07:&b_ +U+1e08:&_C,'_ +U+1e09:&_c,'_ +U+1e0a:&D. +U+1e0b:&d. +U+1e0c:&_D-._ +U+1e0d:&_d-._ +U+1e0e:&D_ +U+1e0f:&d_ +U+1e10:&D, +U+1e11:&d, +U+1e12:&_D->_ +U+1e13:&_d->_ +U+1e14:&_E-!_ +U+1e15:&_e-!_ +U+1e16:&_E-'_ +U+1e17:&_e-'_ +U+1e18:&_E->_ +U+1e19:&_e->_ +U+1e1a:&_E-?_ +U+1e1b:&_e-?_ +U+1e1c:&_E,(_ +U+1e1d:&_e,(_ +U+1e1e:&F. +U+1e1f:&f. +U+1e20:&G- +U+1e21:&g- +U+1e22:&H. +U+1e23:&h. +U+1e24:&_H-._ +U+1e25:&_h-._ +U+1e26:&H: +U+1e27:&h: +U+1e28:&H, +U+1e29:&h, +U+1e2a:&_H-(_ +U+1e2b:&_h-(_ +U+1e2c:&_I-?_ +U+1e2d:&_i-?_ +U+1e2e:&_I:'_ +U+1e2f:&_i:'_ +U+1e30:&K' +U+1e31:&k' +U+1e32:&_K-._ +U+1e33:&_k-._ +U+1e34:&K_ +U+1e35:&k_ +U+1e36:&_L-._ +U+1e37:&_l-._ +U+1e38:&_L--._ +U+1e39:&_l--._ +U+1e3a:&L_ +U+1e3b:&l_ +U+1e3c:&_L->_ +U+1e3d:&_l->_ +U+1e3e:&M' +U+1e3f:&m' +U+1e40:&M. +U+1e41:&m. +U+1e42:&_M-._ +U+1e43:&_m-._ +U+1e44:&N. +U+1e45:&n. +U+1e46:&_N-._ +U+1e47:&_n-._ +U+1e48:&N_ +U+1e49:&n_ +U+1e4a:&_N->_ +U+1e4b:&_N->_ +U+1e4c:&_O?'_ +U+1e4d:&_o?'_ +U+1e4e:&_O?:_ +U+1e4f:&_o?:_ +U+1e50:&_O-!_ +U+1e51:&_o-!_ +U+1e52:&_O-'_ +U+1e53:&_o-'_ +U+1e54:&P' +U+1e55:&p' +U+1e56:&P. +U+1e57:&p. +U+1e58:&R. +U+1e59:&r. +U+1e5a:&_R-._ +U+1e5b:&_r-._ +U+1e5c:&_R--._ +U+1e5d:&_r--._ +U+1e5e:&R_ +U+1e5f:&r_ +U+1e60:&S. +U+1e61:&s. +U+1e62:&_S-._ +U+1e63:&_s-._ +U+1e64:&_S'._ +U+1e65:&_s'._ +U+1e66:&_S<._ +U+1e67:&_s<._ +U+1e68:&_S.-._ +U+1e69:&_S.-._ +U+1e6a:&T. +U+1e6b:&t. +U+1e6c:&_T-._ +U+1e6d:&_t-._ +U+1e6e:&T_ +U+1e6f:&t_ +U+1e70:&_T->_ +U+1e71:&_t->_ +U+1e72:&_U--:_ +U+1e73:&_u--:_ +U+1e74:&_U-?_ +U+1e75:&_u-?_ +U+1e76:&_U->_ +U+1e77:&_u->_ +U+1e78:&_U?'_ +U+1e79:&_u?'_ +U+1e7a:&_U-:_ +U+1e7b:&_u-:_ +U+1e7c:&V? +U+1e7d:&v? +U+1e7e:&_V-._ +U+1e7f:&_v-._ +U+1e80:&W! +U+1e81:&w! +U+1e82:&W' +U+1e83:&w' +U+1e84:&W: +U+1e85:&w: +U+1e86:&W. +U+1e87:&w. +U+1e88:&_W-._ +U+1e89:&_w-._ +U+1e8a:&X. +U+1e8b:&x. +U+1e8c:&X: +U+1e8d:&x: +U+1e8e:&Y. +U+1e8f:&y. +U+1e90:&Z> +U+1e91:&z> +U+1e92:&_Z-._ +U+1e93:&_z-._ +U+1e94:&Z_ +U+1e95:&z_ +U+1e96:&h_ +U+1e97:&t: +U+1e98:&w0 +U+1e99:&y0 +U+1ea0:&_A-._ +U+1ea1:&_a-._ +U+1ea2:&A2 +U+1ea3:&a2 +U+1ea4:&_A>'_ +U+1ea5:&_a>'_ +U+1ea6:&_A>!_ +U+1ea7:&_a>!_ +U+1ea8:&_A>2_ +U+1ea9:&_a>2_ +U+1eaa:&_A>?_ +U+1eab:&_a>?_ +U+1eac:&_A>-._ +U+1ead:&_a>-._ +U+1eae:&_A('_ +U+1eaf:&_a('_ +U+1eb0:&_A(!_ +U+1eb1:&_a(!_ +U+1eb2:&_A(2_ +U+1eb3:&_a(2_ +U+1eb4:&_A(?_ +U+1eb5:&_a(?_ +U+1eb6:&_A(-._ +U+1eb7:&_a(-._ +U+1eb8:&_E-._ +U+1eb9:&_e-._ +U+1eba:&E2 +U+1ebb:&e2 +U+1ebc:&E? +U+1ebd:&e? +U+1ebe:&_E>'_ +U+1ebf:&_e>'_ +U+1ec0:&_E>!_ +U+1ec1:&_e>!_ +U+1ec2:&_E>2_ +U+1ec3:&_e>2_ +U+1ec4:&_E>?_ +U+1ec5:&_e>?_ +U+1ec6:&_E>-._ +U+1ec7:&_e>-._ +U+1ec8:&I2 +U+1ec9:&i2 +U+1eca:&_I-._ +U+1ecb:&_i-._ +U+1ecc:&_O-._ +U+1ecd:&_o-._ +U+1ece:&O2 +U+1ecf:&o2 +U+1ed0:&_O>'_ +U+1ed1:&_o>'_ +U+1ed2:&_O>!_ +U+1ed3:&_o>!_ +U+1ed4:&_O>2_ +U+1ed5:&_o>2_ +U+1ed6:&_O>?_ +U+1ed7:&_o>?_ +U+1ed8:&_O>-._ +U+1ed9:&_o>-._ +U+1eda:&_O9'_ +U+1edb:&_o9'_ +U+1edc:&_O9!_ +U+1edd:&_o9!_ +U+1ede:&_O92_ +U+1edf:&_o92_ +U+1ee0:&_O9?_ +U+1ee1:&_o9?_ +U+1ee2:&_O9-._ +U+1ee3:&_o9-._ +U+1ee4:&_U-._ +U+1ee5:&_u-._ +U+1ee6:&U2 +U+1ee7:&u2 +U+1ee8:&_U9'_ +U+1ee9:&_u9'_ +U+1eea:&_U9!_ +U+1eeb:&_u9!_ +U+1eec:&_U92_ +U+1eed:&_u92_ +U+1eee:&_U9?_ +U+1eef:&_u9?_ +U+1ef0:&_U9-._ +U+1ef1:&_u9-._ +U+1ef2:&Y! +U+1ef3:&y! +U+1ef4:&_Y-._ +U+1ef5:&_y-._ +U+1ef6:&Y2 +U+1ef7:&y2 +U+1ef8:&Y? +U+1ef9:&y? +U+1f00:&;' +U+1f01:&,' +U+1f02:&;! +U+1f03:&,! +U+1f04:&?; +U+1f05:&?, +U+1f06:&!: +U+1f07:&?: +U+2002:&1N +U+2003:&1M +U+2004:&3M +U+2005:&4M +U+2006:&6M +U+2009:&1T +U+200a:&1H +U+2010:&-1 +U+2013:&-N +U+2014:&-M +U+2015:&-3 +U+2016:&!2 +U+2017:&=2 +U+2018:&'6 +U+2019:&'9 +U+201a:&.9 +U+201b:&9' +U+201c:&"6 +U+201d:&"9 +U+201e:&:9 +U+201f:&9" +U+2020:&/- +U+2021:&/= +U+2025:&.. +U+2030:&%0 +U+2032:&1' +U+2033:&2' +U+2034:&3' +U+2035:&1" +U+2036:&2" +U+2037:&3" +U+2038:&Ca +U+2039:&<1 +U+203a:&>1 +U+203b:&:X +U+203c:&_!*2_ +U+203e:&'- +U+2044:&/f +U+2070:&0S +U+2074:&4S +U+2075:&5S +U+2076:&6S +U+2077:&7S +U+2078:&8S +U+2079:&9S +U+207a:&+S +U+207b:&-S +U+207c:&=S +U+207d:&(S +U+207e:&)S +U+207f:&nS +U+2080:&0s +U+2081:&1s +U+2082:&2s +U+2083:&3s +U+2084:&4s +U+2085:&5s +U+2086:&6s +U+2087:&7s +U+2088:&8s +U+2089:&9s +U+208a:&+s +U+208b:&-s +U+208c:&=s +U+208d:&(s +U+208e:&)s +U+20a4:&Li +U+20a7:&Pt +U+20a9:&W= +U+2103:&oC +U+2105:&co +U+2109:&oF +U+2116:&N0 +U+2117:&PO +U+211e:&Rx +U+2120:&SM +U+2122:&TM +U+2126:&Om +U+212b:&AO +U+2153:&13 +U+2154:&23 +U+2155:&15 +U+2156:&25 +U+2157:&35 +U+2158:&45 +U+2159:&16 +U+215a:&56 +U+215b:&18 +U+215c:&38 +U+215d:&58 +U+215e:&78 +U+2160:&1R +U+2161:&2R +U+2162:&3R +U+2163:&4R +U+2164:&5R +U+2165:&6R +U+2166:&7R +U+2167:&8R +U+2168:&9R +U+2169:&aR +U+216a:&bR +U+216b:&cR +U+216c:&_50R_ +U+216d:&_100R_ +U+216e:&_500R_ +U+216f:&_1000R_ +U+2170:&1r +U+2171:&2r +U+2172:&3r +U+2173:&4r +U+2174:&5r +U+2175:&6r +U+2176:&7r +U+2177:&8r +U+2178:&9r +U+2179:&ar +U+217a:&br +U+217b:&cr +U+217c:&_50r_ +U+217d:&_100r_ +U+217e:&_500r_ +U+217f:&_1000r_ +U+2180:&_1000RCD_ +U+2181:&_5000R_ +U+2182:&_10000R_ +U+2190:&<- +U+2191:&-! +U+2192:&-> +U+2193:&-v +U+2194:&<> +U+2195:&UD +U+2196:&_<!!_ +U+2197:&_//>_ +U+2198:&_!!>_ +U+2199:&_<//_ +U+21d0:&<= +U+21d2:&=> +U+21d4:&== +U+2200:&FA +U+2202:&dP +U+2203:&TE +U+2205:&/0 +U+2206:&DE +U+2207:&NB +U+2208:&(- +U+220b:&-) +U+220f:&*P +U+2211:&+Z +U+2212:&-2 +U+2213:&-+ +U+2217:&*- +U+2218:&Ob +U+2219:&Sb +U+221a:&RT +U+221d:&0( +U+221e:&00 +U+221f:&-L +U+2220:&-V +U+2225:&PP +U+2227:&AN +U+2228:&OR +U+2229:&(U +U+222a:&)U +U+222b:&In +U+222c:&DI +U+222e:&Io +U+2234:&.: +U+2235:&:. +U+2236:&:R +U+2237:&:: +U+223c:&?1 +U+223e:&CG +U+2243:&?- +U+2245:&?= +U+2248:&?2 +U+224c:&=? +U+2253:&HI +U+2260:&!= +U+2261:&=3 +U+2264:&=< +U+2265:&>= +U+226a:&<* +U+226b:&*> +U+226e:&!< +U+226f:&!> +U+2282:&(C +U+2283:&)C +U+2286:&(_ +U+2287:&)_ +U+2299:&0. +U+229a:&02 +U+22a5:&-T +U+22c5:&.P +U+22ee:&:3 +U+22ef:&.3 +U+2302:&Eh +U+2308:&<7 +U+2309:&>7 +U+230a:&7< +U+230b:&7> +U+2310:&NI +U+2312:&(A +U+2315:&TR +U+2320:&Iu +U+2321:&Il +U+2329:&</ +U+232a:&/> +U+2423:&Vs +U+2440:&1h +U+2441:&3h +U+2442:&2h +U+2443:&4h +U+2446:&1j +U+2447:&2j +U+2448:&3j +U+2449:&4j +U+2460:&_1-o_ +U+2461:&_2-o_ +U+2462:&_3-o_ +U+2463:&_4-o_ +U+2464:&_5-o_ +U+2465:&_6-o_ +U+2466:&_7-o_ +U+2467:&_8-o_ +U+2468:&_9-o_ +U+2469:&_10-o_ +U+246a:&_11-o_ +U+246b:&_12-o_ +U+246c:&_13-o_ +U+246d:&_14-o_ +U+246e:&_15-o_ +U+246f:&_16-o_ +U+2470:&_17-o_ +U+2471:&_18-o_ +U+2472:&_19-o_ +U+2473:&_20-o_ +U+2474:&_(1)_ +U+2475:&_(2)_ +U+2476:&_(3)_ +U+2477:&_(4)_ +U+2478:&_(5)_ +U+2479:&_(6)_ +U+247a:&_(7)_ +U+247b:&_(8)_ +U+247c:&_(9)_ +U+247d:&_(10)_ +U+247e:&_(11)_ +U+247f:&_(12)_ +U+2480:&_(13)_ +U+2481:&_(14)_ +U+2482:&_(15)_ +U+2483:&_(16)_ +U+2484:&_(17)_ +U+2485:&_(18)_ +U+2486:&_(19)_ +U+2487:&_(20)_ +U+2488:&1. +U+2489:&2. +U+248a:&3. +U+248b:&4. +U+248c:&5. +U+248d:&6. +U+248e:&7. +U+248f:&8. +U+2490:&9. +U+2491:&_10._ +U+2492:&_11._ +U+2493:&_12._ +U+2494:&_13._ +U+2495:&_14._ +U+2496:&_15._ +U+2497:&_16._ +U+2498:&_17._ +U+2499:&_18._ +U+249a:&_19._ +U+249b:&_20._ +U+249c:&_(a)_ +U+249d:&_(b)_ +U+249e:&_(c)_ +U+249f:&_(d)_ +U+24a0:&_(e)_ +U+24a1:&_(f)_ +U+24a2:&_(g)_ +U+24a3:&_(h)_ +U+24a4:&_(i)_ +U+24a5:&_(j)_ +U+24a6:&_(k)_ +U+24a7:&_(l)_ +U+24a8:&_(m)_ +U+24a9:&_(n)_ +U+24aa:&_(o)_ +U+24ab:&_(p)_ +U+24ac:&_(q)_ +U+24ad:&_(r)_ +U+24ae:&_(s)_ +U+24af:&_(t)_ +U+24b0:&_(u)_ +U+24b1:&_(v)_ +U+24b2:&_(w)_ +U+24b3:&_(x)_ +U+24b4:&_(y)_ +U+24b5:&_(z)_ +U+24b6:&_A-o_ +U+24b7:&_B-o_ +U+24b8:&_C-o_ +U+24b9:&_D-o_ +U+24ba:&_E-o_ +U+24bb:&_F-o_ +U+24bc:&_G-o_ +U+24bd:&_H-o_ +U+24be:&_I-o_ +U+24bf:&_J-o_ +U+24c0:&_K-o_ +U+24c1:&_L-o_ +U+24c2:&_M-o_ +U+24c3:&_N-o_ +U+24c4:&_O-o_ +U+24c5:&_P-o_ +U+24c6:&_Q-o_ +U+24c7:&_R-o_ +U+24c8:&_S-o_ +U+24c9:&_T-o_ +U+24ca:&_U-o_ +U+24cb:&_V-o_ +U+24cc:&_W-o_ +U+24cd:&_X-o_ +U+24ce:&_Y-o_ +U+24cf:&_Z-o_ +U+24d0:&_a-o_ +U+24d1:&_b-o_ +U+24d2:&_c-o_ +U+24d3:&_d-o_ +U+24d4:&_e-o_ +U+24d5:&_f-o_ +U+24d6:&_g-o_ +U+24d7:&_h-o_ +U+24d8:&_i-o_ +U+24d9:&_j-o_ +U+24da:&_k-o_ +U+24db:&_l-o_ +U+24dc:&_m-o_ +U+24dd:&_n-o_ +U+24de:&_o-o_ +U+24df:&_p-o_ +U+24e0:&_q-o_ +U+24e1:&_r-o_ +U+24e2:&_s-o_ +U+24e3:&_t-o_ +U+24e4:&_u-o_ +U+24e5:&_v-o_ +U+24e6:&_w-o_ +U+24e7:&_x-o_ +U+24e8:&_y-o_ +U+24e9:&_z-o_ +U+24ea:&_0-o_ +U+2500:&hh +U+2501:&HH +U+2502:&vv +U+2503:&VV +U+2504:&3- +U+2505:&3_ +U+2506:&3! +U+2507:&3/ +U+2508:&4- +U+2509:&4_ +U+250a:&4! +U+250b:&4/ +U+250c:&dr +U+250d:&dR +U+250e:&Dr +U+250f:&DR +U+2510:&dl +U+2511:&dL +U+2512:&Dl +U+2513:&LD +U+2514:&ur +U+2515:&uR +U+2516:&Ur +U+2517:&UR +U+2518:&ul +U+2519:&uL +U+251a:&Ul +U+251b:&UL +U+251c:&vr +U+251d:&vR +U+251e:&_Udr_ +U+251f:&_uDr_ +U+2520:&Vr +U+2521:&_UdR_ +U+2522:&_uDR_ +U+2523:&VR +U+2524:&vl +U+2525:&vL +U+2526:&_Udl_ +U+2527:&_uDl_ +U+2528:&Vl +U+2529:&_UdL_ +U+252a:&_uDL_ +U+252b:&VL +U+252c:&dh +U+252d:&_dLr_ +U+252e:&_dlR_ +U+252f:&dH +U+2530:&Dh +U+2531:&_DLr_ +U+2532:&_DlR_ +U+2533:&DH +U+2534:&uh +U+2535:&_uLr_ +U+2536:&_ulR_ +U+2537:&uH +U+2538:&Uh +U+2539:&_ULr_ +U+253a:&_UlR_ +U+253b:&UH +U+253c:&vh +U+253d:&_vLr_ +U+253e:&_vlR_ +U+253f:&vH +U+2540:&_Udh_ +U+2541:&_uDh_ +U+2542:&Vh +U+2543:&_UdLr_ +U+2544:&_UdlR_ +U+2545:&_uDLr_ +U+2546:&_uDlR_ +U+2547:&_UdH_ +U+2548:&_uDH_ +U+2549:&_VLr_ +U+254a:&_VlR_ +U+254b:&VH +U+2571:&FD +U+2572:&BD +U+2580:&TB +U+2584:&LB +U+2588:&FB +U+258c:&lB +U+2590:&RB +U+2591:&.S +U+2592:&:S +U+2593:&?S +U+25a0:&fS +U+25a1:&OS +U+25a2:&RO +U+25a3:&Rr +U+25a4:&RF +U+25a5:&RY +U+25a6:&RH +U+25a7:&RZ +U+25a8:&RK +U+25a9:&RX +U+25aa:&sB +U+25ac:&SR +U+25ad:&Or +U+25b2:&UT +U+25b3:&uT +U+25b6:&PR +U+25b7:&Tr +U+25bc:&Dt +U+25bd:&dT +U+25c0:&PL +U+25c1:&Tl +U+25c6:&Db +U+25c7:&Dw +U+25ca:&LZ +U+25cb:&0m +U+25ce:&0o +U+25cf:&0M +U+25d0:&0L +U+25d1:&0R +U+25d8:&Sn +U+25d9:&Ic +U+25e2:&Fd +U+25e3:&Bd +U+2605:&*2 +U+2606:&*1 +U+260e:&_TEL_ +U+260f:&_tel_ +U+261c:&<H +U+261e:&>H +U+263a:&0u +U+263b:&0U +U+263c:&SU +U+2640:&Fm +U+2642:&Ml +U+2660:&cS +U+2661:&cH +U+2662:&cD +U+2663:&cC +U+2664:&_cS-_ +U+2665:&_cH-_ +U+2666:&_cD-_ +U+2667:&_cC-_ +U+2669:&Md +U+266a:&M8 +U+266b:&M2 +U+266c:&_M16_ +U+266d:&Mb +U+266e:&Mx +U+266f:&MX +U+2713:&OK +U+2717:&XX +U+2720:&-X +U+3000:&IS +U+3001:&,_ +U+3002:&._ +U+3003:&+" +U+3004:&+_ +U+3005:&*_ +U+3006:&;_ +U+3007:&0_ +U+300a:&<+ +U+300b:&>+ +U+300c:&<' +U+300d:&>' +U+300e:&<" +U+300f:&>" +U+3010:&(" +U+3011:&)" +U+3012:&=T +U+3013:&=_ +U+3014:&(' +U+3015:&)' +U+3016:&(I +U+3017:&)I +U+301c:&-? +U+3020:&_=T:)_ +U+3041:&A5 +U+3042:&a5 +U+3043:&I5 +U+3044:&i5 +U+3045:&U5 +U+3046:&u5 +U+3047:&E5 +U+3048:&e5 +U+3049:&O5 +U+304a:&o5 +U+304b:&ka +U+304c:&ga +U+304d:&ki +U+304e:&gi +U+304f:&ku +U+3050:&gu +U+3051:&ke +U+3052:&ge +U+3053:&ko +U+3054:&go +U+3055:&sa +U+3056:&za +U+3057:&si +U+3058:&zi +U+3059:&su +U+305a:&zu +U+305b:&se +U+305c:&ze +U+305d:&so +U+305e:&zo +U+305f:&ta +U+3060:&da +U+3061:&ti +U+3062:&di +U+3063:&tU +U+3064:&tu +U+3065:&du +U+3066:&te +U+3067:&de +U+3068:&to +U+3069:&do +U+306a:&na +U+306b:&ni +U+306c:&nu +U+306d:&ne +U+306e:&no +U+306f:&ha +U+3070:&ba +U+3071:&pa +U+3072:&hi +U+3073:&bi +U+3074:&pi +U+3075:&hu +U+3076:&bu +U+3077:&pu +U+3078:&he +U+3079:&be +U+307a:&pe +U+307b:&ho +U+307c:&bo +U+307d:&po +U+307e:&ma +U+307f:&mi +U+3080:&mu +U+3081:&me +U+3082:&mo +U+3083:&yA +U+3084:&ya +U+3085:&yU +U+3086:&yu +U+3087:&yO +U+3088:&yo +U+3089:&ra +U+308a:&ri +U+308b:&ru +U+308c:&re +U+308d:&ro +U+308e:&wA +U+308f:&wa +U+3090:&wi +U+3091:&we +U+3092:&wo +U+3093:&n5 +U+3094:&vu +U+309b:&"5 +U+309c:&05 +U+309d:&*5 +U+309e:&+5 +U+30a1:&a6 +U+30a2:&A6 +U+30a3:&i6 +U+30a4:&I6 +U+30a5:&u6 +U+30a6:&U6 +U+30a7:&e6 +U+30a8:&E6 +U+30a9:&o6 +U+30aa:&O6 +U+30ab:&Ka +U+30ac:&Ga +U+30ad:&Ki +U+30ae:&Gi +U+30af:&Ku +U+30b0:&Gu +U+30b1:&Ke +U+30b2:&Ge +U+30b3:&Ko +U+30b4:&Go +U+30b5:&Sa +U+30b6:&Za +U+30b7:&Si +U+30b8:&Zi +U+30b9:&Su +U+30ba:&Zu +U+30bb:&Se +U+30bc:&Ze +U+30bd:&So +U+30be:&Zo +U+30bf:&Ta +U+30c0:&Da +U+30c1:&Ti +U+30c2:&Di +U+30c3:&TU +U+30c4:&Tu +U+30c5:&Du +U+30c6:&Te +U+30c7:&De +U+30c8:&To +U+30c9:&Do +U+30ca:&Na +U+30cb:&Ni +U+30cc:&Nu +U+30cd:&Ne +U+30ce:&No +U+30cf:&Ha +U+30d0:&Ba +U+30d1:&Pa +U+30d2:&Hi +U+30d3:&Bi +U+30d4:&Pi +U+30d5:&Hu +U+30d6:&Bu +U+30d7:&Pu +U+30d8:&He +U+30d9:&Be +U+30da:&Pe +U+30db:&Ho +U+30dc:&Bo +U+30dd:&Po +U+30de:&Ma +U+30df:&Mi +U+30e0:&Mu +U+30e1:&Me +U+30e2:&Mo +U+30e3:&YA +U+30e4:&Ya +U+30e5:&YU +U+30e6:&Yu +U+30e7:&YO +U+30e8:&Yo +U+30e9:&Ra +U+30ea:&Ri +U+30eb:&Ru +U+30ec:&Re +U+30ed:&Ro +U+30ee:&WA +U+30ef:&Wa +U+30f0:&Wi +U+30f1:&We +U+30f2:&Wo +U+30f3:&N6 +U+30f4:&Vu +U+30f5:&KA +U+30f6:&KE +U+30f7:&Va +U+30f8:&Vi +U+30f9:&Ve +U+30fa:&Vo +U+30fb:&.6 +U+30fc:&-6 +U+30fd:&*6 +U+30fe:&+6 +U+3105:&b4 +U+3106:&p4 +U+3107:&m4 +U+3108:&f4 +U+3109:&d4 +U+310a:&t4 +U+310b:&n4 +U+310c:&l4 +U+310d:&g4 +U+310e:&k4 +U+310f:&h4 +U+3110:&j4 +U+3111:&q4 +U+3112:&x4 +U+3113:&zh +U+3114:&ch +U+3115:&sh +U+3116:&r4 +U+3117:&z4 +U+3118:&c4 +U+3119:&s4 +U+311a:&a4 +U+311b:&o4 +U+311c:&e4 +U+311d:&_eh4_ +U+311e:&ai +U+311f:&ei +U+3120:&au +U+3121:&ou +U+3122:&an +U+3123:&en +U+3124:&aN +U+3125:&eN +U+3126:&er +U+3127:&i4 +U+3128:&u4 +U+3129:&iu +U+312a:&v4 +U+312b:&nG +U+312c:&gn +U+321c:&_(JU)_ +U+3220:&1c +U+3221:&2c +U+3222:&3c +U+3223:&4c +U+3224:&5c +U+3225:&6c +U+3226:&7c +U+3227:&8c +U+3228:&9c +U+3229:&_10c_ +U+327f:&_KSC_ +U+fb00:&ff +U+fb01:&fi +U+fb02:&fl +U+fb03:&_ffi_ +U+fb04:&_ffl_ +U+fb05:&ft +U+fb06:&st +U+fe7d:&_3+;_ +U+fe82:&_aM._ +U+fe84:&_aH._ +U+fe8d:&_a+-_ +U+fe8e:&_a+._ +U+fe8f:&_b+-_ +U+fe90:&_b+,_ +U+fe91:&_b+;_ +U+fe92:&_b+._ +U+fe93:&_tm-_ +U+fe94:&_tm._ +U+fe95:&_t+-_ +U+fe96:&_t+,_ +U+fe97:&_t+;_ +U+fe98:&_t+._ +U+fe99:&_tk-_ +U+fe9a:&_tk,_ +U+fe9b:&_tk;_ +U+fe9c:&_tk._ +U+fe9d:&_g+-_ +U+fe9e:&_g+,_ +U+fe9f:&_g+;_ +U+fea0:&_g+._ +U+fea1:&_hk-_ +U+fea2:&_hk,_ +U+fea3:&_hk;_ +U+fea4:&_hk._ +U+fea5:&_x+-_ +U+fea6:&_x+,_ +U+fea7:&_x+;_ +U+fea8:&_x+._ +U+fea9:&_d+-_ +U+feaa:&_d+._ +U+feab:&_dk-_ +U+feac:&_dk._ +U+fead:&_r+-_ +U+feae:&_r+._ +U+feaf:&_z+-_ +U+feb0:&_z+._ +U+feb1:&_s+-_ +U+feb2:&_s+,_ +U+feb3:&_s+;_ +U+feb4:&_s+._ +U+feb5:&_sn-_ +U+feb6:&_sn,_ +U+feb7:&_sn;_ +U+feb8:&_sn._ +U+feb9:&_c+-_ +U+feba:&_c+,_ +U+febb:&_c+;_ +U+febc:&_c+._ +U+febd:&_dd-_ +U+febe:&_dd,_ +U+febf:&_dd;_ +U+fec0:&_dd._ +U+fec1:&_tj-_ +U+fec2:&_tj,_ +U+fec3:&_tj;_ +U+fec4:&_tj._ +U+fec5:&_zH-_ +U+fec6:&_zH,_ +U+fec7:&_zH;_ +U+fec8:&_zH._ +U+fec9:&_e+-_ +U+feca:&_e+,_ +U+fecb:&_e+;_ +U+fecc:&_e+._ +U+fecd:&_i+-_ +U+fece:&_i+,_ +U+fecf:&_i+;_ +U+fed0:&_i+._ +U+fed1:&_f+-_ +U+fed2:&_f+,_ +U+fed3:&_f+;_ +U+fed4:&_f+._ +U+fed5:&_q+-_ +U+fed6:&_q+,_ +U+fed7:&_q+;_ +U+fed8:&_q+._ +U+fed9:&_k+-_ +U+feda:&_k+,_ +U+fedb:&_k+;_ +U+fedc:&_k+._ +U+fedd:&_l+-_ +U+fede:&_l+,_ +U+fedf:&_l+;_ +U+fee0:&_l+._ +U+fee1:&_m+-_ +U+fee2:&_m+,_ +U+fee3:&_m+;_ +U+fee4:&_m+._ +U+fee5:&_n+-_ +U+fee6:&_n+,_ +U+fee7:&_n+;_ +U+fee8:&_n+._ +U+fee9:&_h+-_ +U+feea:&_h+,_ +U+feeb:&_h+;_ +U+feec:&_h+._ +U+feed:&_w+-_ +U+feee:&_w+._ +U+feef:&_j+-_ +U+fef0:&_j+._ +U+fef1:&_y+-_ +U+fef2:&_y+,_ +U+fef3:&_y+;_ +U+fef4:&_y+._ +U+fef5:&_lM-_ +U+fef6:&_lM._ +U+fef7:&_lH-_ +U+fef8:&_lH._ +U+fef9:&_lh-_ +U+fefa:&_lh._ +U+fefb:&_la-_ +U+fefc:&_la._ +U+0000:&NU +U+0001:&SH +U+0002:&SX +U+0003:&EX +U+0004:&ET +U+0005:&EQ +U+0006:&AK +U+0007:&BL +U+0008:&BS +U+0009:&HT +# U+000a:&LF +U+000b:&VT +U+000c:&FF +U+000d:&CR +U+000e:&SO +U+000f:&SI +U+0010:&DL +U+0011:&D1 +U+0012:&D2 +U+0013:&D3 +U+0014:&D4 +U+0015:&NK +U+0016:&SY +U+0017:&EB +U+0018:&CN +U+0019:&EM +U+001a:&SB +U+001b:&EC +U+001c:&FS +U+001d:&GS +U+001e:&RS +U+001f:&US +U+007f:&DT +U+0080:&PA +U+0081:&HO +U+0082:&BH +U+0083:&NH +U+0084:&IN +U+0085:&NL +U+0086:&SA +U+0087:&ES +U+0088:&HS +U+0089:&HJ +U+008a:&VS +U+008b:&PD +U+008c:&PU +U+008d:&RI +U+008e:&S2 +U+008f:&S3 +U+0090:&DC +U+0091:&P1 +U+0092:&P2 +U+0093:&TS +U+0094:&CC +U+0095:&MW +U+0096:&SG +U+0097:&EG +U+0098:&SS +U+0099:&GC +U+009a:&SC +U+009b:&CI +U+009c:&ST +U+009d:&OC +U+009e:&PM +U+009f:&AC +U+e001:&/c +U+e002:&UA +U+e003:&UB +U+e004:&"3 +U+e005:&"1 +U+e006:&"! +U+e007:&"' +U+e008:&"> +U+e009:&"? +U+e00a:&"- +U+e00b:&"( +U+e00c:&". +U+e00d:&": +U+e00e:&"0 +U+e00f:&"" +U+e010:&"< +U+e011:&", +U+e012:&"; +U+e013:&"_ +U+e014:&"= +U+e015:&"/ +U+e016:&"i +U+e017:&"d +U+e018:&"p +U+e019:&;; +U+e01a:&,, +U+e01b:&b3 +U+e01c:&Ci +U+e01d:&f( +U+e01e:&ed +U+e01f:&am +U+e020:&pm +U+e021:&_Tel_ +U+e022:&_a+:_ +U+e023:&Fl +U+e024:&GF +U+e025:&>V +U+e026:&!* +U+e027:&?* +U+e028:&J< diff --git a/src/chrtrans/rfc_suni.tbl b/src/chrtrans/rfc_suni.tbl new file mode 100644 index 00000000..5df75265 --- /dev/null +++ b/src/chrtrans/rfc_suni.tbl @@ -0,0 +1,1981 @@ +# Generated from the mnemonic file found under ftp://dkuug.dk/i18n/ +# then hand-tweaked +# perl -n -e \ +# 'if (s|<([^ \t]+)>\s+<U([\dA-Z]{4})>\s.*$|U+\L\2\E:\1|) {s|/?(.)|\1|g&&print}'\ +# mnemonic,ds + +#The MIME name of this charset. +Mmnemonic+ascii+0 + +#Name as a Display Charset (used on Options screen) +ORFC 1345 w/o Intro + +U+0020:SP +U+0021:! +U+0022:" +U+0023:Nb +U+0024:DO +U+0025:% +U+0026:& +U+0027:' +U+0028:( +U+0029:) +U+002a:* +U+002b:+ +U+002c:, +U+002d:- +U+002e:. +U+002f:/ +U+0030:0 +U+0031:1 +U+0032:2 +U+0033:3 +U+0034:4 +U+0035:5 +U+0036:6 +U+0037:7 +U+0038:8 +U+0039:9 +U+003a:: +U+003b:; +U+003c:< +U+003d:= +U+003e:> +U+003f:? +U+0040:At +U+0041:A +U+0042:B +U+0043:C +U+0044:D +U+0045:E +U+0046:F +U+0047:G +U+0048:H +U+0049:I +U+004a:J +U+004b:K +U+004c:L +U+004d:M +U+004e:N +U+004f:O +U+0050:P +U+0051:Q +U+0052:R +U+0053:S +U+0054:T +U+0055:U +U+0056:V +U+0057:W +U+0058:X +U+0059:Y +U+005a:Z +U+005b:<( +U+005c:// +U+005d:)> +U+005e:'> +U+005f:_ +U+0060:'! +U+0061:a +U+0062:b +U+0063:c +U+0064:d +U+0065:e +U+0066:f +U+0067:g +U+0068:h +U+0069:i +U+006a:j +U+006b:k +U+006c:l +U+006d:m +U+006e:n +U+006f:o +U+0070:p +U+0071:q +U+0072:r +U+0073:s +U+0074:t +U+0075:u +U+0076:v +U+0077:w +U+0078:x +U+0079:y +U+007a:z +U+007b:(! +U+007c:!! +U+007d:!) +U+007e:'? +U+00a0:NS +U+00a1:!I +U+00a2:Ct +U+00a3:Pd +U+00a4:Cu +U+00a5:Ye +U+00a6:BB +U+00a7:SE +U+00a8:': +U+00a9:Co +U+00aa:-a +U+00ab:<< +U+00ac:NO +U+00ad:-- +U+00ae:Rg +U+00af:'m +U+00b0:DG +U+00b1:+- +U+00b2:2S +U+00b3:3S +U+00b4:'' +U+00b5:My +U+00b6:PI +U+00b7:.M +U+00b8:', +U+00b9:1S +U+00ba:-o +U+00bb:>> +U+00bc:14 +U+00bd:12 +U+00be:34 +U+00bf:?I +U+00c0:A! +U+00c1:A' +U+00c2:A> +U+00c3:A? +U+00c4:A: +U+00c5:AA +U+00c6:AE +U+00c7:C, +U+00c8:E! +U+00c9:E' +U+00ca:E> +U+00cb:E: +U+00cc:I! +U+00cd:I' +U+00ce:I> +U+00cf:I: +U+00d0:D- +U+00d1:N? +U+00d2:O! +U+00d3:O' +U+00d4:O> +U+00d5:O? +U+00d6:O: +U+00d7:*X +U+00d8:O/ +U+00d9:U! +U+00da:U' +U+00db:U> +U+00dc:U: +U+00dd:Y' +U+00de:TH +U+00df:ss +U+00e0:a! +U+00e1:a' +U+00e2:a> +U+00e3:a? +U+00e4:a: +U+00e5:aa +U+00e6:ae +U+00e7:c, +U+00e8:e! +U+00e9:e' +U+00ea:e> +U+00eb:e: +U+00ec:i! +U+00ed:i' +U+00ee:i> +U+00ef:i: +U+00f0:d- +U+00f1:n? +U+00f2:o! +U+00f3:o' +U+00f4:o> +U+00f5:o? +U+00f6:o: +U+00f7:-: +U+00f8:o/ +U+00f9:u! +U+00fa:u' +U+00fb:u> +U+00fc:u: +U+00fd:y' +U+00fe:th +U+00ff:y: +U+0100:A- +U+0101:a- +U+0102:A( +U+0103:a( +U+0104:A; +U+0105:a; +U+0106:C' +U+0107:c' +U+0108:C> +U+0109:c> +U+010a:C. +U+010b:c. +U+010c:C< +U+010d:c< +U+010e:D< +U+010f:d< +U+0110:D/ +U+0111:d/ +U+0112:E- +U+0113:e- +U+0114:E( +U+0115:e( +U+0116:E. +U+0117:e. +U+0118:E; +U+0119:e; +U+011a:E< +U+011b:e< +U+011c:G> +U+011d:g> +U+011e:G( +U+011f:g( +U+0120:G. +U+0121:g. +U+0122:G, +U+0123:g, +U+0124:H> +U+0125:h> +U+0126:H/ +U+0127:h/ +U+0128:I? +U+0129:i? +U+012a:I- +U+012b:i- +U+012c:I( +U+012d:i( +U+012e:I; +U+012f:i; +U+0130:I. +U+0131:i. +U+0132:IJ +U+0133:ij +U+0134:J> +U+0135:j> +U+0136:K, +U+0137:k, +U+0138:kk +U+0139:L' +U+013a:l' +U+013b:L, +U+013c:l, +U+013d:L< +U+013e:l< +U+013f:L. +U+0140:l. +U+0141:L/ +U+0142:l/ +U+0143:N' +U+0144:n' +U+0145:N, +U+0146:n, +U+0147:N< +U+0148:n< +U+0149:'n +U+014a:NG +U+014b:ng +U+014c:O- +U+014d:o- +U+014e:O( +U+014f:o( +U+0150:O" +U+0151:o" +U+0152:OE +U+0153:oe +U+0154:R' +U+0155:r' +U+0156:R, +U+0157:r, +U+0158:R< +U+0159:r< +U+015a:S' +U+015b:s' +U+015c:S> +U+015d:s> +U+015e:S, +U+015f:s, +U+0160:S< +U+0161:s< +U+0162:T, +U+0163:t, +U+0164:T< +U+0165:t< +U+0166:T/ +U+0167:t/ +U+0168:U? +U+0169:u? +U+016a:U- +U+016b:u- +U+016c:U( +U+016d:u( +U+016e:U0 +U+016f:u0 +U+0170:U" +U+0171:u" +U+0172:U; +U+0173:u; +U+0174:W> +U+0175:w> +U+0176:Y> +U+0177:y> +U+0178:Y: +U+0179:Z' +U+017a:z' +U+017b:Z. +U+017c:z. +U+017d:Z< +U+017e:z< +U+017f:s1 +U+0187:C2 +U+0188:c2 +U+0191:F2 +U+0192:f2 +U+0198:K2 +U+0199:k2 +U+01a0:O9 +U+01a1:o9 +U+01a2:OI +U+01a3:oi +U+01a6:yr +U+01af:U9 +U+01b0:u9 +U+01b5:Z/ +U+01b6:z/ +U+01b7:ED +U+01cd:A< +U+01ce:a< +U+01cf:I< +U+01d0:i< +U+01d1:O< +U+01d2:o< +U+01d3:U< +U+01d4:u< +U+01d5:U:- +U+01d6:u:- +U+01d7:U:' +U+01d8:u:' +U+01d9:U:< +U+01da:u:< +U+01db:U:! +U+01dc:u:! +U+01de:A1 +U+01df:a1 +U+01e0:A7 +U+01e1:a7 +U+01e2:A3 +U+01e3:a3 +U+01e4:G/ +U+01e5:g/ +U+01e6:G< +U+01e7:g< +U+01e8:K< +U+01e9:k< +U+01ea:O; +U+01eb:o; +U+01ec:O1 +U+01ed:o1 +U+01ee:EZ +U+01ef:ez +U+01f0:j< +U+01f4:G' +U+01f5:g' +U+01fa:AA' +U+01fb:aa' +U+01fc:AE' +U+01fd:ae' +U+01fe:O/' +U+01ff:o/' +U+0200:A!! +U+0201:a!! +U+0202:A) +U+0203:a) +U+0204:E!! +U+0205:e!! +U+0206:E) +U+0207:e) +U+0208:I!! +U+0209:i!! +U+020a:I) +U+020b:i) +U+020c:O!! +U+020d:o!! +U+020e:O) +U+020f:o) +U+0210:R!! +U+0211:r!! +U+0212:R) +U+0213:r) +U+0214:U!! +U+0215:u!! +U+0216:U) +U+0217:u) +U+0292:ed +U+02bb:;S +U+02c6:1> +U+02c7:'< +U+02c9:1- +U+02cb:1! +U+02d8:'( +U+02d9:'. +U+02da:'0 +U+02db:'; +U+02dc:1? +U+02dd:'" +U+0374:'G +U+0375:,G +U+037a:j3 +U+037e:?% +U+0384:'* +U+0385:'% +U+0386:A% +U+0387:.* +U+0388:E% +U+0389:Y% +U+038a:I% +U+038c:O% +U+038e:U% +U+038f:W% +U+0390:i3 +U+0391:A* +U+0392:B* +U+0393:G* +U+0394:D* +U+0395:E* +U+0396:Z* +U+0397:Y* +U+0398:H* +U+0399:I* +U+039a:K* +U+039b:L* +U+039c:M* +U+039d:N* +U+039e:C* +U+039f:O* +U+03a0:P* +U+03a1:R* +U+03a3:S* +U+03a4:T* +U+03a5:U* +U+03a6:F* +U+03a7:X* +U+03a8:Q* +U+03a9:W* +U+03aa:J* +U+03ab:V* +U+03ac:a% +U+03ad:e% +U+03ae:y% +U+03af:i% +U+03b0:u3 +U+03b1:a* +U+03b2:b* +U+03b3:g* +U+03b4:d* +U+03b5:e* +U+03b6:z* +U+03b7:y* +U+03b8:h* +U+03b9:i* +U+03ba:k* +U+03bb:l* +U+03bc:m* +U+03bd:n* +U+03be:c* +U+03bf:o* +U+03c0:p* +U+03c1:r* +U+03c2:*s +U+03c3:s* +U+03c4:t* +U+03c5:u* +U+03c6:f* +U+03c7:x* +U+03c8:q* +U+03c9:w* +U+03ca:j* +U+03cb:v* +U+03cc:o% +U+03cd:u% +U+03ce:w% +U+03d0:b3 +U+03da:T3 +U+03db:t3 +U+03dc:M3 +U+03dd:m3 +U+03de:K3 +U+03df:k3 +U+03e0:P3 +U+03e1:p3 +U+0401:IO +U+0402:D% +U+0403:G% +U+0404:IE +U+0405:DS +U+0406:II +U+0407:YI +U+0408:J% +U+0409:LJ +U+040a:NJ +U+040b:Ts +U+040c:KJ +U+040e:V% +U+040f:DZ +U+0410:A= +U+0411:B= +U+0412:V= +U+0413:G= +U+0414:D= +U+0415:E= +U+0416:Z% +U+0417:Z= +U+0418:I= +U+0419:J= +U+041a:K= +U+041b:L= +U+041c:M= +U+041d:N= +U+041e:O= +U+041f:P= +U+0420:R= +U+0421:S= +U+0422:T= +U+0423:U= +U+0424:F= +U+0425:H= +U+0426:C= +U+0427:C% +U+0428:S% +U+0429:Sc +U+042a:=" +U+042b:Y= +U+042c:%" +U+042d:JE +U+042e:JU +U+042f:JA +U+0430:a= +U+0431:b= +U+0432:v= +U+0433:g= +U+0434:d= +U+0435:e= +U+0436:z% +U+0437:z= +U+0438:i= +U+0439:j= +U+043a:k= +U+043b:l= +U+043c:m= +U+043d:n= +U+043e:o= +U+043f:p= +U+0440:r= +U+0441:s= +U+0442:t= +U+0443:u= +U+0444:f= +U+0445:h= +U+0446:c= +U+0447:c% +U+0448:s% +U+0449:sc +U+044a:=' +U+044b:y= +U+044c:%' +U+044d:je +U+044e:ju +U+044f:ja +U+0451:io +U+0452:d% +U+0453:g% +U+0454:ie +U+0455:ds +U+0456:ii +U+0457:yi +U+0458:j% +U+0459:lj +U+045a:nj +U+045b:ts +U+045c:kj +U+045e:v% +U+045f:dz +U+0462:Y3 +U+0463:y3 +U+046a:O3 +U+046b:o3 +U+0472:F3 +U+0473:f3 +U+0474:V3 +U+0475:v3 +U+0480:C3 +U+0481:c3 +U+0490:G3 +U+0491:g3 +U+05d0:A+ +U+05d1:B+ +U+05d2:G+ +U+05d3:D+ +U+05d4:H+ +U+05d5:W+ +U+05d6:Z+ +U+05d7:X+ +U+05d8:Tj +U+05d9:J+ +U+05da:K% +U+05db:K+ +U+05dc:L+ +U+05dd:M% +U+05de:M+ +U+05df:N% +U+05e0:N+ +U+05e1:S+ +U+05e2:E+ +U+05e3:P% +U+05e4:P+ +U+05e5:Zj +U+05e6:ZJ +U+05e7:Q+ +U+05e8:R+ +U+05e9:Sh +U+05ea:T+ +U+060c:,+ +U+061b:;+ +U+061f:?+ +U+0621:H' +U+0622:aM +U+0623:aH +U+0624:wH +U+0625:ah +U+0626:yH +U+0627:a+ +U+0628:b+ +U+0629:tm +U+062a:t+ +U+062b:tk +U+062c:g+ +U+062d:hk +U+062e:x+ +U+062f:d+ +U+0630:dk +U+0631:r+ +U+0632:z+ +U+0633:s+ +U+0634:sn +U+0635:c+ +U+0636:dd +U+0637:tj +U+0638:zH +U+0639:e+ +U+063a:i+ +U+0640:++ +U+0641:f+ +U+0642:q+ +U+0643:k+ +U+0644:l+ +U+0645:m+ +U+0646:n+ +U+0647:h+ +U+0648:w+ +U+0649:j+ +U+064a:y+ +U+064b::+ +U+064c:"+ +U+064d:=+ +U+064e:/+ +U+064f:'+ +U+0650:1+ +U+0651:3+ +U+0652:0+ +U+0660:0a +U+0661:1a +U+0662:2a +U+0663:3a +U+0664:4a +U+0665:5a +U+0666:6a +U+0667:7a +U+0668:8a +U+0669:9a +U+0670:aS +U+067e:p+ +U+0681:hH +U+0686:tc +U+0698:zj +U+06a4:v+ +U+06af:gf +U+1e00:A-0 +U+1e01:a-0 +U+1e02:B. +U+1e03:b. +U+1e04:B-. +U+1e05:b-. +U+1e06:B_ +U+1e07:b_ +U+1e08:C,' +U+1e09:c,' +U+1e0a:D. +U+1e0b:d. +U+1e0c:D-. +U+1e0d:d-. +U+1e0e:D_ +U+1e0f:d_ +U+1e10:D, +U+1e11:d, +U+1e12:D-> +U+1e13:d-> +U+1e14:E-! +U+1e15:e-! +U+1e16:E-' +U+1e17:e-' +U+1e18:E-> +U+1e19:e-> +U+1e1a:E-? +U+1e1b:e-? +U+1e1c:E,( +U+1e1d:e,( +U+1e1e:F. +U+1e1f:f. +U+1e20:G- +U+1e21:g- +U+1e22:H. +U+1e23:h. +U+1e24:H-. +U+1e25:h-. +U+1e26:H: +U+1e27:h: +U+1e28:H, +U+1e29:h, +U+1e2a:H-( +U+1e2b:h-( +U+1e2c:I-? +U+1e2d:i-? +U+1e2e:I:' +U+1e2f:i:' +U+1e30:K' +U+1e31:k' +U+1e32:K-. +U+1e33:k-. +U+1e34:K_ +U+1e35:k_ +U+1e36:L-. +U+1e37:l-. +U+1e38:L--. +U+1e39:l--. +U+1e3a:L_ +U+1e3b:l_ +U+1e3c:L-> +U+1e3d:l-> +U+1e3e:M' +U+1e3f:m' +U+1e40:M. +U+1e41:m. +U+1e42:M-. +U+1e43:m-. +U+1e44:N. +U+1e45:n. +U+1e46:N-. +U+1e47:n-. +U+1e48:N_ +U+1e49:n_ +U+1e4a:N-> +U+1e4b:n-> +U+1e4c:O?' +U+1e4d:o?' +U+1e4e:O?: +U+1e4f:o?: +U+1e50:O-! +U+1e51:o-! +U+1e52:O-' +U+1e53:o-' +U+1e54:P' +U+1e55:p' +U+1e56:P. +U+1e57:p. +U+1e58:R. +U+1e59:r. +U+1e5a:R-. +U+1e5b:r-. +U+1e5c:R--. +U+1e5d:r--. +U+1e5e:R_ +U+1e5f:r_ +U+1e60:S. +U+1e61:s. +U+1e62:S-. +U+1e63:s-. +U+1e64:S'. +U+1e65:s'. +U+1e66:S<. +U+1e67:s<. +U+1e68:S.-. +U+1e69:s.-. +U+1e6a:T. +U+1e6b:t. +U+1e6c:T-. +U+1e6d:t-. +U+1e6e:T_ +U+1e6f:t_ +U+1e70:T-> +U+1e71:t-> +U+1e72:U--: +U+1e73:u--: +U+1e74:U-? +U+1e75:u-? +U+1e76:U-> +U+1e77:u-> +U+1e78:U?' +U+1e79:u?' +U+1e7a:U-: +U+1e7b:u-: +U+1e7c:V? +U+1e7d:v? +U+1e7e:V-. +U+1e7f:v-. +U+1e80:W! +U+1e81:w! +U+1e82:W' +U+1e83:w' +U+1e84:W: +U+1e85:w: +U+1e86:W. +U+1e87:w. +U+1e88:W-. +U+1e89:w-. +U+1e8a:X. +U+1e8b:x. +U+1e8c:X: +U+1e8d:x: +U+1e8e:Y. +U+1e8f:y. +U+1e90:Z> +U+1e91:z> +U+1e92:Z-. +U+1e93:z-. +U+1e94:Z_ +U+1e95:z_ +U+1e96:h_ +U+1e97:t: +U+1e98:w0 +U+1e99:y0 +U+1ea0:A-. +U+1ea1:a-. +U+1ea2:A2 +U+1ea3:a2 +U+1ea4:A>' +U+1ea5:a>' +U+1ea6:A>! +U+1ea7:a>! +U+1ea8:A>2 +U+1ea9:a>2 +U+1eaa:A>? +U+1eab:a>? +U+1eac:A>-. +U+1ead:a>-. +U+1eae:A(' +U+1eaf:a(' +U+1eb0:A(! +U+1eb1:a(! +U+1eb2:A(2 +U+1eb3:a(2 +U+1eb4:A(? +U+1eb5:a(? +U+1eb6:A(-. +U+1eb7:a(-. +U+1eb8:E-. +U+1eb9:e-. +U+1eba:E2 +U+1ebb:e2 +U+1ebc:E? +U+1ebd:e? +U+1ebe:E>' +U+1ebf:e>' +U+1ec0:E>! +U+1ec1:e>! +U+1ec2:E>2 +U+1ec3:e>2 +U+1ec4:E>? +U+1ec5:e>? +U+1ec6:E>-. +U+1ec7:e>-. +U+1ec8:I2 +U+1ec9:i2 +U+1eca:I-. +U+1ecb:i-. +U+1ecc:O-. +U+1ecd:o-. +U+1ece:O2 +U+1ecf:o2 +U+1ed0:O>' +U+1ed1:o>' +U+1ed2:O>! +U+1ed3:o>! +U+1ed4:O>2 +U+1ed5:o>2 +U+1ed6:O>? +U+1ed7:o>? +U+1ed8:O>-. +U+1ed9:o>-. +U+1eda:O9' +U+1edb:o9' +U+1edc:O9! +U+1edd:o9! +U+1ede:O92 +U+1edf:o92 +U+1ee0:O9? +U+1ee1:o9? +U+1ee2:O9-. +U+1ee3:o9-. +U+1ee4:U-. +U+1ee5:u-. +U+1ee6:U2 +U+1ee7:u2 +U+1ee8:U9' +U+1ee9:u9' +U+1eea:U9! +U+1eeb:u9! +U+1eec:U92 +U+1eed:u92 +U+1eee:U9? +U+1eef:u9? +U+1ef0:U9-. +U+1ef1:u9-. +U+1ef2:Y! +U+1ef3:y! +U+1ef4:Y-. +U+1ef5:y-. +U+1ef6:Y2 +U+1ef7:y2 +U+1ef8:Y? +U+1ef9:y? +U+1fbf:,, +U+1fc0:?* +U+1fc1:?: +U+1fcd:,! +U+1fce:,' +U+1fcf:?, +U+1fdd:;! +U+1fde:;' +U+1fdf:?; +U+1fed:!: +U+1fef:!* +U+1ffe:;; +U+2002:1N +U+2003:1M +U+2004:3M +U+2005:4M +U+2006:6M +U+200e:LR +U+200f:RL +U+2009:1T +U+200a:1H +U+2010:-1 +U+2013:-N +U+2014:-M +U+2015:-3 +U+2016:!2 +U+2017:=2 +U+2018:'6 +U+2019:'9 +U+201a:.9 +U+201b:9' +U+201c:"6 +U+201d:"9 +U+201e::9 +U+201f:9" +U+2020:/- +U+2021:/= +U+2022:Sb +U+2025:.. +U+2026:.3 +U+2030:%0 +U+2032:1' +U+2033:2' +U+2034:3' +U+2035:1" +U+2036:2" +U+2037:3" +U+2038:Ca +U+2039:<1 +U+203a:>1 +U+203b::X +U+203c:!*2 +U+203e:'- +U+2044:/f +U+2070:0S +U+2074:4S +U+2075:5S +U+2076:6S +U+2077:7S +U+2078:8S +U+2079:9S +U+207a:+S +U+207b:-S +U+207c:=S +U+207d:(S +U+207e:)S +U+207f:nS +U+2080:0s +U+2081:1s +U+2082:2s +U+2083:3s +U+2084:4s +U+2085:5s +U+2086:6s +U+2087:7s +U+2088:8s +U+2089:9s +U+208a:+s +U+208b:-s +U+208c:=s +U+208d:(s +U+208e:)s +U+20a3:Ff +U+20a4:Li +U+20a7:Pt +U+20a9:W= +U+2103:oC +U+2105:co +U+2109:oF +U+2116:N0 +U+2117:PO +U+211e:Rx +U+2120:SM +U+2122:TM +U+2126:Om +U+212b:AO +U+2153:13 +U+2154:23 +U+2155:15 +U+2156:25 +U+2157:35 +U+2158:45 +U+2159:16 +U+215a:56 +U+215b:18 +U+215c:38 +U+215d:58 +U+215e:78 +U+2160:1R +U+2161:2R +U+2162:3R +U+2163:4R +U+2164:5R +U+2165:6R +U+2166:7R +U+2167:8R +U+2168:9R +U+2169:aR +U+216a:bR +U+216b:cR +U+216c:50R +U+216d:100R +U+216e:500R +U+216f:1000R +U+2170:1r +U+2171:2r +U+2172:3r +U+2173:4r +U+2174:5r +U+2175:6r +U+2176:7r +U+2177:8r +U+2178:9r +U+2179:ar +U+217a:br +U+217b:cr +U+217c:50r +U+217d:100r +U+217e:500r +U+217f:1000r +U+2180:1000RCD +U+2181:5000R +U+2182:10000R +U+2190:<- +U+2191:-! +U+2192:-> +U+2193:-v +U+2194:<> +U+2195:UD +U+2196:<!! +U+2197://> +U+2198:!!> +U+2199:<// +U+21a8:UD- +U+21c0:>V +U+21d0:<= +U+21d2:=> +U+21d4:== +U+2200:FA +U+2202:dP +U+2203:TE +U+2205:/0 +U+2206:DE +U+2207:NB +U+2208:(- +U+220b:-) +U+220f:*P +U+2211:+Z +U+2212:-2 +U+2213:-+ +U+2214:.+ +U+2217:*- +U+2218:Ob +U+2219:sb +U+221a:RT +U+221d:0( +U+221e:00 +U+221f:-L +U+2220:-V +U+2225:PP +U+2227:AN +U+2228:OR +U+2229:(U +U+222a:)U +U+222b:In +U+222c:DI +U+222e:Io +U+2234:.: +U+2235::. +U+2236::R +U+2237::: +U+223c:?1 +U+223e:CG +U+2243:?- +U+2245:?= +U+2248:?2 +U+224c:=? +U+2253:HI +U+2260:!= +U+2261:=3 +U+2264:=< +U+2265:>= +U+226a:<* +U+226b:*> +U+226e:!< +U+226f:!> +U+2282:(C +U+2283:)C +U+2286:(_ +U+2287:)_ +U+2299:0. +U+229a:02 +U+22a5:-T +U+22c5:.P +U+22ee::3 +U+2302:Eh +U+2308:<7 +U+2309:>7 +U+230a:7< +U+230b:7> +U+2310:NI +U+2312:(A +U+2315:TR +U+2318:88 +U+2320:Iu +U+2321:Il +U+2329:</ +U+232a:/> +U+2423:Vs +U+2440:1h +U+2441:3h +U+2442:2h +U+2443:4h +U+2446:1j +U+2447:2j +U+2448:3j +U+2449:4j +U+2460:1-o +U+2461:2-o +U+2462:3-o +U+2463:4-o +U+2464:5-o +U+2465:6-o +U+2466:7-o +U+2467:8-o +U+2468:9-o +U+2469:10-o +U+246a:11-o +U+246b:12-o +U+246c:13-o +U+246d:14-o +U+246e:15-o +U+246f:16-o +U+2470:17-o +U+2471:18-o +U+2472:19-o +U+2473:20-o +U+2474:(1) +U+2475:(2) +U+2476:(3) +U+2477:(4) +U+2478:(5) +U+2479:(6) +U+247a:(7) +U+247b:(8) +U+247c:(9) +U+247d:(10) +U+247e:(11) +U+247f:(12) +U+2480:(13) +U+2481:(14) +U+2482:(15) +U+2483:(16) +U+2484:(17) +U+2485:(18) +U+2486:(19) +U+2487:(20) +U+2488:1. +U+2489:2. +U+248a:3. +U+248b:4. +U+248c:5. +U+248d:6. +U+248e:7. +U+248f:8. +U+2490:9. +U+2491:10. +U+2492:11. +U+2493:12. +U+2494:13. +U+2495:14. +U+2496:15. +U+2497:16. +U+2498:17. +U+2499:18. +U+249a:19. +U+249b:20. +U+249c:(a) +U+249d:(b) +U+249e:(c) +U+249f:(d) +U+24a0:(e) +U+24a1:(f) +U+24a2:(g) +U+24a3:(h) +U+24a4:(i) +U+24a5:(j) +U+24a6:(k) +U+24a7:(l) +U+24a8:(m) +U+24a9:(n) +U+24aa:(o) +U+24ab:(p) +U+24ac:(q) +U+24ad:(r) +U+24ae:(s) +U+24af:(t) +U+24b0:(u) +U+24b1:(v) +U+24b2:(w) +U+24b3:(x) +U+24b4:(y) +U+24b5:(z) +U+24b6:A-o +U+24b7:B-o +U+24b8:C-o +U+24b9:D-o +U+24ba:E-o +U+24bb:F-o +U+24bc:G-o +U+24bd:H-o +U+24be:I-o +U+24bf:J-o +U+24c0:K-o +U+24c1:L-o +U+24c2:M-o +U+24c3:N-o +U+24c4:O-o +U+24c5:P-o +U+24c6:Q-o +U+24c7:R-o +U+24c8:S-o +U+24c9:T-o +U+24ca:U-o +U+24cb:V-o +U+24cc:W-o +U+24cd:X-o +U+24ce:Y-o +U+24cf:Z-o +U+24d0:a-o +U+24d1:b-o +U+24d2:c-o +U+24d3:d-o +U+24d4:e-o +U+24d5:f-o +U+24d6:g-o +U+24d7:h-o +U+24d8:i-o +U+24d9:j-o +U+24da:k-o +U+24db:l-o +U+24dc:m-o +U+24dd:n-o +U+24de:o-o +U+24df:p-o +U+24e0:q-o +U+24e1:r-o +U+24e2:s-o +U+24e3:t-o +U+24e4:u-o +U+24e5:v-o +U+24e6:w-o +U+24e7:x-o +U+24e8:y-o +U+24e9:z-o +U+24ea:0-o +U+2500:hh +U+2501:HH- +U+2502:vv +U+2503:VV- +U+2504:3- +U+2505:3_ +U+2506:3! +U+2507:3/ +U+2508:4- +U+2509:4_ +U+250a:4! +U+250b:4/ +U+250c:dr +U+250d:dR- +U+250e:Dr- +U+250f:DR- +U+2510:dl +U+2511:dL- +U+2512:Dl- +U+2513:LD- +U+2514:ur +U+2515:uR- +U+2516:Ur- +U+2517:UR- +U+2518:ul +U+2519:uL- +U+251a:Ul- +U+251b:UL- +U+251c:vr +U+251d:vR- +U+251e:Udr +U+251f:uDr +U+2520:Vr- +U+2521:UdR +U+2522:uDR +U+2523:VR- +U+2524:vl +U+2525:vL- +U+2526:Udl +U+2527:uDl +U+2528:Vl- +U+2529:UdL +U+252a:uDL +U+252b:VL- +U+252c:dh +U+252d:dLr +U+252e:dlR +U+252f:dH- +U+2530:Dh- +U+2531:DLr +U+2532:DlR +U+2533:DH- +U+2534:uh +U+2535:uLr +U+2536:ulR +U+2537:uH- +U+2538:Uh- +U+2539:ULr +U+253a:UlR +U+253b:UH- +U+253c:vh +U+253d:vLr +U+253e:vlR +U+253f:vH- +U+2540:Udh +U+2541:uDh +U+2542:Vh- +U+2543:UdLr +U+2544:UdlR +U+2545:uDLr +U+2546:uDlR +U+2547:UdH +U+2548:uDH +U+2549:VLr +U+254a:VlR +U+254b:VH- +U+2550:HH +U+2551:VV +U+2552:dR +U+2553:Dr +U+2554:DR +U+2555:dL +U+2556:Dl +U+2557:LD +U+2558:uR +U+2559:Ur +U+255a:UR +U+255b:uL +U+255c:Ul +U+255d:UL +U+255e:vR +U+255f:Vr +U+2560:VR +U+2561:vL +U+2562:Vl +U+2563:VL +U+2564:dH +U+2565:Dh +U+2566:DH +U+2567:uH +U+2568:Uh +U+2569:UH +U+256a:vH +U+256b:Vh +U+256c:VH +U+2571:FD +U+2572:BD +U+2580:TB +U+2584:LB +U+2588:FB +U+258c:lB +U+2590:RB +U+2591:.S +U+2592::S +U+2593:?S +U+25a0:fS +U+25a1:OS +U+25a2:RO +U+25a3:Rr +U+25a4:RF +U+25a5:RY +U+25a6:RH +U+25a7:RZ +U+25a8:RK +U+25a9:RX +U+25aa:sB +U+25ac:SR +U+25ad:Or +U+25b2:UT +U+25b3:uT +U+25b7:Tr +U+25ba:PR +U+25bc:Dt +U+25bd:dT +U+25c1:Tl +U+25c4:PL +U+25c6:Db +U+25c7:Dw +U+25ca:LZ +U+25cb:0m +U+25ce:0o +U+25cf:0M +U+25d0:0L +U+25d1:0R +U+25d8:Sn +U+25d9:Ic +U+25e2:Fd +U+25e3:Bd +U+25ef:Ci +U+2605:*2 +U+2606:*1 +U+260e:TEL +U+260f:tel +U+261c:<H +U+261e:>H +U+263a:0u +U+263b:0U +U+263c:SU +U+2640:Fm +U+2642:Ml +U+2660:cS +U+2661:cH +U+2662:cD +U+2663:cC +U+2664:cS- +U+2665:cH- +U+2666:cD- +U+2667:cC- +U+2669:Md +U+266a:M8 +U+266b:M2 +U+266c:M16 +U+266d:Mb +U+266e:Mx +U+266f:MX +U+2713:OK +U+2717:XX +U+2720:-X +U+3000:IS +U+3001:,_ +U+3002:._ +U+3003:+" +U+3004:JIS +U+3005:*_ +U+3006:;_ +U+3007:0_ +U+300a:<+ +U+300b:>+ +U+300c:<' +U+300d:>' +U+300e:<" +U+300f:>" +U+3010:(" +U+3011:)" +U+3012:=T +U+3013:=_ +U+3014:(' +U+3015:)' +U+3016:(I +U+3017:)I +U+301c:-? +U+3020:=T:) +U+3041:A5 +U+3042:a5 +U+3043:I5 +U+3044:i5 +U+3045:U5 +U+3046:u5 +U+3047:E5 +U+3048:e5 +U+3049:O5 +U+304a:o5 +U+304b:ka +U+304c:ga +U+304d:ki +U+304e:gi +U+304f:ku +U+3050:gu +U+3051:ke +U+3052:ge +U+3053:ko +U+3054:go +U+3055:sa +U+3056:za +U+3057:si +U+3058:zi +U+3059:su +U+305a:zu +U+305b:se +U+305c:ze +U+305d:so +U+305e:zo +U+305f:ta +U+3060:da +U+3061:ti +U+3062:di +U+3063:tU +U+3064:tu +U+3065:du +U+3066:te +U+3067:de +U+3068:to +U+3069:do +U+306a:na +U+306b:ni +U+306c:nu +U+306d:ne +U+306e:no +U+306f:ha +U+3070:ba +U+3071:pa +U+3072:hi +U+3073:bi +U+3074:pi +U+3075:hu +U+3076:bu +U+3077:pu +U+3078:he +U+3079:be +U+307a:pe +U+307b:ho +U+307c:bo +U+307d:po +U+307e:ma +U+307f:mi +U+3080:mu +U+3081:me +U+3082:mo +U+3083:yA +U+3084:ya +U+3085:yU +U+3086:yu +U+3087:yO +U+3088:yo +U+3089:ra +U+308a:ri +U+308b:ru +U+308c:re +U+308d:ro +U+308e:wA +U+308f:wa +U+3090:wi +U+3091:we +U+3092:wo +U+3093:n5 +U+3094:vu +U+309b:"5 +U+309c:05 +U+309d:*5 +U+309e:+5 +U+30a1:a6 +U+30a2:A6 +U+30a3:i6 +U+30a4:I6 +U+30a5:u6 +U+30a6:U6 +U+30a7:e6 +U+30a8:E6 +U+30a9:o6 +U+30aa:O6 +U+30ab:Ka +U+30ac:Ga +U+30ad:Ki +U+30ae:Gi +U+30af:Ku +U+30b0:Gu +U+30b1:Ke +U+30b2:Ge +U+30b3:Ko +U+30b4:Go +U+30b5:Sa +U+30b6:Za +U+30b7:Si +U+30b8:Zi +U+30b9:Su +U+30ba:Zu +U+30bb:Se +U+30bc:Ze +U+30bd:So +U+30be:Zo +U+30bf:Ta +U+30c0:Da +U+30c1:Ti +U+30c2:Di +U+30c3:TU +U+30c4:Tu +U+30c5:Du +U+30c6:Te +U+30c7:De +U+30c8:To +U+30c9:Do +U+30ca:Na +U+30cb:Ni +U+30cc:Nu +U+30cd:Ne +U+30ce:No +U+30cf:Ha +U+30d0:Ba +U+30d1:Pa +U+30d2:Hi +U+30d3:Bi +U+30d4:Pi +U+30d5:Hu +U+30d6:Bu +U+30d7:Pu +U+30d8:He +U+30d9:Be +U+30da:Pe +U+30db:Ho +U+30dc:Bo +U+30dd:Po +U+30de:Ma +U+30df:Mi +U+30e0:Mu +U+30e1:Me +U+30e2:Mo +U+30e3:YA +U+30e4:Ya +U+30e5:YU +U+30e6:Yu +U+30e7:YO +U+30e8:Yo +U+30e9:Ra +U+30ea:Ri +U+30eb:Ru +U+30ec:Re +U+30ed:Ro +U+30ee:WA +U+30ef:Wa +U+30f0:Wi +U+30f1:We +U+30f2:Wo +U+30f3:N6 +U+30f4:Vu +U+30f5:KA +U+30f6:KE +U+30f7:Va +U+30f8:Vi +U+30f9:Ve +U+30fa:Vo +U+30fb:.6 +U+30fc:-6 +U+30fd:*6 +U+30fe:+6 +U+3105:b4 +U+3106:p4 +U+3107:m4 +U+3108:f4 +U+3109:d4 +U+310a:t4 +U+310b:n4 +U+310c:l4 +U+310d:g4 +U+310e:k4 +U+310f:h4 +U+3110:j4 +U+3111:q4 +U+3112:x4 +U+3113:zh +U+3114:ch +U+3115:sh +U+3116:r4 +U+3117:z4 +U+3118:c4 +U+3119:s4 +U+311a:a4 +U+311b:o4 +U+311c:e4 +U+311d:eh4 +U+311e:ai +U+311f:ei +U+3120:au +U+3121:ou +U+3122:an +U+3123:en +U+3124:aN +U+3125:eN +U+3126:er +U+3127:i4 +U+3128:u4 +U+3129:iu +U+312a:v4 +U+312b:nG +U+312c:gn +U+321c:(JU) +U+3220:1c +U+3221:2c +U+3222:3c +U+3223:4c +U+3224:5c +U+3225:6c +U+3226:7c +U+3227:8c +U+3228:9c +U+3229:10c +U+327f:KSC +U+33c2:am +U+33d8:pm +U+fb00:ff +U+fb01:fi +U+fb02:fl +U+fb03:ffi +U+fb04:ffl +U+fb05:St +U+fb06:st +U+fe7d:3+; +U+fe82:aM. +U+fe84:aH. +U+fe88:ah. +U+fe8d:a+- +U+fe8e:a+. +U+fe8f:b+- +U+fe90:b+. +U+fe91:b+, +U+fe92:b+; +U+fe93:tm- +U+fe94:tm. +U+fe95:t+- +U+fe96:t+. +U+fe97:t+, +U+fe98:t+; +U+fe99:tk- +U+fe9a:tk. +U+fe9b:tk, +U+fe9c:tk; +U+fe9d:g+- +U+fe9e:g+. +U+fe9f:g+, +U+fea0:g+; +U+fea1:hk- +U+fea2:hk. +U+fea3:hk, +U+fea4:hk; +U+fea5:x+- +U+fea6:x+. +U+fea7:x+, +U+fea8:x+; +U+fea9:d+- +U+feaa:d+. +U+feab:dk- +U+feac:dk. +U+fead:r+- +U+feae:r+. +U+feaf:z+- +U+feb0:z+. +U+feb1:s+- +U+feb2:s+. +U+feb3:s+, +U+feb4:s+; +U+feb5:sn- +U+feb6:sn. +U+feb7:sn, +U+feb8:sn; +U+feb9:c+- +U+feba:c+. +U+febb:c+, +U+febc:c+; +U+febd:dd- +U+febe:dd. +U+febf:dd, +U+fec0:dd; +U+fec1:tj- +U+fec2:tj. +U+fec3:tj, +U+fec4:tj; +U+fec5:zH- +U+fec6:zH. +U+fec7:zH, +U+fec8:zH; +U+fec9:e+- +U+feca:e+. +U+fecb:e+, +U+fecc:e+; +U+fecd:i+- +U+fece:i+. +U+fecf:i+, +U+fed0:i+; +U+fed1:f+- +U+fed2:f+. +U+fed3:f+, +U+fed4:f+; +U+fed5:q+- +U+fed6:q+. +U+fed7:q+, +U+fed8:q+; +U+fed9:k+- +U+feda:k+. +U+fedb:k+, +U+fedc:k+; +U+fedd:l+- +U+fede:l+. +U+fedf:l+, +U+fee0:l+; +U+fee1:m+- +U+fee2:m+. +U+fee3:m+, +U+fee4:m+; +U+fee5:n+- +U+fee6:n+. +U+fee7:n+, +U+fee8:n+; +U+fee9:h+- +U+feea:h+. +U+feeb:h+, +U+feec:h+; +U+feed:w+- +U+feee:w+. +U+feef:j+- +U+fef0:j+. +U+fef1:y+- +U+fef2:y+. +U+fef3:y+, +U+fef4:y+; +U+fef5:lM- +U+fef6:lM. +U+fef7:lH- +U+fef8:lH. +U+fef9:lh- +U+fefa:lh. +U+fefb:la- +U+fefc:la. +U+0000:NU +U+0001:SH +U+0002:SX +U+0003:EX +U+0004:ET +U+0005:EQ +U+0006:AK +U+0007:BL +U+0008:BS +U+0009:HT +U+000a:LF +U+000b:VT +U+000c:FF +U+000d:CR +U+000e:SO +U+000f:SI +U+0010:DL +U+0011:D1 +U+0012:D2 +U+0013:D3 +U+0014:D4 +U+0015:NK +U+0016:SY +U+0017:EB +U+0018:CN +U+0019:EM +U+001a:SB +U+001b:EC +U+001c:FS +U+001d:GS +U+001e:RS +U+001f:US +U+007f:DT +U+0080:PA +U+0081:HO +U+0082:BH +U+0083:NH +U+0084:IN +U+0085:NL +U+0086:SA +U+0087:ES +U+0088:HS +U+0089:HJ +U+008a:VS +U+008b:PD +U+008c:PU +U+008d:RI +U+008e:S2 +U+008f:S3 +U+0090:DC +U+0091:P1 +U+0092:P2 +U+0093:TS +U+0094:CC +U+0095:MW +U+0096:SG +U+0097:EG +U+0098:SS +U+0099:GC +U+009a:SC +U+009b:CI +U+009c:ST +U+009d:OC +U+009e:PM +U+009f:AC +U+e000:"3 +U+e001:"1 +U+e002:"! +U+e003:"' +U+e004:"> +U+e005:"? +U+e006:"- +U+e007:"( +U+e008:". +U+e009:": +U+e00a:"0 +U+e00b:", +U+e00c:"_ +U+e00d:"" +U+e00e:"; +U+e00f:"< +U+e010:"= +U+e011:"/ +U+e012:"p +U+e013:"d +U+e014:"i +U+e015:+_ +U+e016:a+: +U+e017:Tel +U+e018:UA +U+e019:UB +U+e01e:Mc +U+e01f:Fl diff --git a/src/chrtrans/utf8_uni.tbl b/src/chrtrans/utf8_uni.tbl new file mode 100644 index 00000000..02e153a5 --- /dev/null +++ b/src/chrtrans/utf8_uni.tbl @@ -0,0 +1,33 @@ +# +# This one is not really much of a "translation table", it mostly just +# tells Lynx that "unicode-1-1-utf-8" is Unicode/UCS2 encoded in UTF8... +# +#Shall this become the "default" translation? +#Meaning of that is currently unclear... It's different +#from the default input or defualt output charset... +#but there has to be exactly one table marked as "default". +D0 +# +#The MIME name of this charset. +Municode-1-1-utf-8 + +#Name as a Display Charset (used on Options screen) +O UNICODE UTF 8 + +# Some kind of raw Unicode? +# Use 6 for for really "raw" 16bit UCS-2, 7 for UTF-8, ... + +# most of these codes currently don't make much sense in a *.uni file, +# but for completeness (from UCDefs.h): +# #define UCT_ENC_7BIT 0 +# #define UCT_ENC_8BIT 1 +# #define UCT_ENC_8859 2 /* ??? */ +# #define UCT_ENC_2022 3 +# #define UCT_ENC_MAYBE2022 4 +# #define UCT_ENC_CJK 5 +# #define UCT_ENC_16BIT 6 +# #define UCT_ENC_UTF8 7 + +R 7 + +0x20-0x7f idem diff --git a/src/makefile.dos b/src/makefile.dos new file mode 100644 index 00000000..8a820ab8 --- /dev/null +++ b/src/makefile.dos @@ -0,0 +1,54 @@ +OBJS= LYClean.o LYShowInfo.o LYEdit.o LYStrings.o \ +LYMail.o HTAlert.o GridText.o LYGetFile.o \ +LYMain.o LYMainLoop.o LYCurses.o LYBookmark.o LYUtils.o \ +LYOptions.o LYReadCFG.o LYSearch.o LYHistory.o \ +LYForms.o LYPrint.o LYrcFile.o LYDownload.o LYNews.o LYKeymap.o \ +HTFWriter.o HTInit.o DefaultStyle.o LYLocal.o LYUpload.o \ +LYLeaks.o LYexit.o LYJump.o LYList.o LYCgi.o LYTraversal.o \ +LYEditmap.o LYCharSets.o LYCharUtils.o LYMap.o LYCookie.o HTML.o \ +UCAUTO.o UCAUX.o UCDOMAP.o + +CFLAGS= $(MCFLAGS) -I.. $(SLANGINC) + +CC = gcc +#MCFLAGS = -O -DNCURSES -DFANCY_CURSES -DACCESS_AUTH -DNO_CUSERID -DNOUSERS -DDOSPATH -DNO_TTYTYPE -DNO_UTMP -I../WWW/library/implementation -I../djgpp/tcplib/include -I../djgpp/tcplib/include/tcp -I../djgpp/pdcurses/include +MCFLAGS = -DEXP_CHARTRANS -DCOLOR_CURSES -DNCURSES -DFANCY_CURSES -DACCESS_AUTH -DNO_CUSERID -DNOUSERS -DDOSPATH -DNO_TTYTYPE -DNO_UTMP -I../WWW/library/implementation -I../djgpp/tcplib/include -I../djgpp/tcplib/include/tcp -I../djgpp/pdcurses/include +WWWLIB = ../WWW/library/djgpp/libwww.a ../djgpp/pdcurses/lib/libcurso.a ../djgpp/tcplib/obj/libtcp.a + +all: lynx + +lynx: message $(OBJS) $(WWWLIB) + @echo "Linking and creating Lynx executable" + $(CC) $(CFLAGS) -o lynx $(OBJS) $(WWWLIB) $(SLANGLIB) $(LIBS) + @echo "Welcome to Lynx!" + +message: + @echo "Compiling Lynx sources" + +dbg: $(OBJS) $(WWWLIB) + @echo "Making Lynx code" + $(CC) -g $(OBJS) $(CFLAGS) $(WWWLIB) $(SLANGLIB) $(LIBS) + +lint: + lint *.c > ../lint.out + +clean: + rm -f lynx core *.[ob] + +LYMain.o: ../userdefs.h +LYMainLoop.o: LYMainLoop.c ../userdefs.h +LYReadCFG.o: LYReadCFG.c ../userdefs.h +HTFWriter.o: HTFWriter.c ../userdefs.h +LYGetFile.o: LYGetFile.c ../userdefs.h +LYOptions.o: LYOptions.c ../userdefs.h +LYReadCFG.o: LYReadCFG.c ../userdefs.h +LYTraversal.o: LYTraversal.c ../userdefs.h +LYCharSets.o: LYCharSets.c ../userdefs.h +LYShowInfo.o: LYShowInfo.c ../userdefs.h +LYStrings.o: LYStrings.c ../userdefs.h +LYBookmark.o: LYBookmark.c ../userdefs.h +LYHistory.o: LYHistory.c ../userdefs.h +LYDownload.o: LYDownload.c ../userdefs.h +DefaultStyle.o: DefaultStyle.c ../userdefs.h +LYEditmap.o: LYEditmap.c ../userdefs.h +LYCharUtils.o: LYCharUtils.c ../userdefs.h diff --git a/src/makefile.in b/src/makefile.in new file mode 100644 index 00000000..92977d01 --- /dev/null +++ b/src/makefile.in @@ -0,0 +1,111 @@ +# template-makefile for Lynx src directory + +SHELL = /bin/sh + +@SET_MAKE@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +srcdir = @srcdir@ +VPATH = $(srcdir) + +WWWINC = WWW/Library/Implementation +SITE_DEFS = # FIXME: set in parent makefile +MCFLAGS = # FIXME: set in parent makefile + +CC = @CC@ +CPPOPTS = @DEFS@ @CPPFLAGS@ -I.. -I../$(WWWINC) $(MCFLAGS) $(SITE_DEFS) +CFLAGS = $(CPPOPTS) @CFLAGS@ + +CHARTRANS_OBJS=UCdomap.o UCAux.o UCAuto.o +OBJS= LYClean.o LYShowInfo.o LYEdit.o LYStrings.o \ +LYMail.o HTAlert.o GridText.o LYGetFile.o \ +LYMain.o LYMainLoop.o LYCurses.o LYBookmark.o LYUtils.o \ +LYOptions.o LYReadCFG.o LYSearch.o LYHistory.o \ +LYForms.o LYPrint.o LYrcFile.o LYDownload.o LYNews.o LYKeymap.o \ +HTML.o HTFWriter.o HTInit.o DefaultStyle.o LYLocal.o LYUpload.o \ +LYLeaks.o LYexit.o LYJump.o LYList.o LYCgi.o LYTraversal.o \ +LYEditmap.o LYCharSets.o LYCharUtils.o LYMap.o LYCookie.o \ + $(CHARTRANS_OBJS) + +all: lynx + +.SUFFIXES : .i + +.c.o: +@SHOW_CC@ + @ECHO_CC@$(CC) $(CPPOPTS) $(CFLAGS) -c $(srcdir)/$*.c + +.c.i: +@SHOW_CC@ + @ECHO_CC@$(CPP) -C $(CPPOPTS) $*.c >$@ + +lynx: message do_chartrans_stuff $(OBJS) $(WWWLIB) + @echo "Linking and creating Lynx executable" + $(CC) $(CFLAGS) -o lynx $(OBJS) $(WWWLIB) $(SLANGLIB) $(LIBS) + @echo "Copying Lynx executable into this directory" + cp lynx .. + @echo "Welcome to Lynx!" + +message: + @echo "Compiling Lynx sources" + +do_chartrans_stuff: + -cd chrtrans && $(MAKE) \ + MCFLAGS="$(MCFLAGS)" \ + SITE_DEFS="$(SITE_DEFS)" \ + CC="$(CC)" tables + +lint: + lint $(CPPFLAGS) *.c > ../lint.out + +clean: + rm -f lynx core *.[ob] + cd chrtrans && $(MAKE) clean + +LYMain.o: ../userdefs.h +LYMainLoop.o: ../userdefs.h +LYReadCFG.o: ../userdefs.h +HTFWriter.o: ../userdefs.h +LYGetFile.o: ../userdefs.h +LYOptions.o: ../userdefs.h +LYReadCFG.o: ../userdefs.h +LYrcFile.o: ../userdefs.h +LYMail.o: ../userdefs.h +LYUtils.o: ../userdefs.h +HTInit.o: ../userdefs.h +LYTraversal.o: ../userdefs.h +LYMail.o: ../userdefs.h +LYCharSets.o: ../userdefs.h + +CHRTR= chrtrans/ + +TABLES= $(CHRTR)iso02_uni.h \ + $(CHRTR)iso01_uni.h \ + $(CHRTR)def7_uni.h \ + $(CHRTR)iso03_uni.h \ + $(CHRTR)iso04_uni.h \ + $(CHRTR)iso05_uni.h \ + $(CHRTR)iso07_uni.h \ + $(CHRTR)iso09_uni.h \ + $(CHRTR)iso10_uni.h \ + $(CHRTR)koi8r_uni.h \ + $(CHRTR)cp437_uni.h \ + $(CHRTR)cp850_uni.h \ + $(CHRTR)cp852_uni.h \ + $(CHRTR)cp1250_uni.h \ + $(CHRTR)cp1252_uni.h \ + $(CHRTR)utf8_uni.h \ + $(CHRTR)rfc_suni.h \ + $(CHRTR)mnemonic_suni.h \ + $(CHRTR)mnem_suni.h + +CMN=../WWW/Library/Implementation/ + +$(TABLES): + -cd chrtrans && $(MAKE) tables + +UCdomap.o: UCdomap.c chrtrans/UCkd.h chrtrans/makeuctb chrtrans/makeuctb.c \ + UCdomap.h $(CMN)UCMap.h $(TABLES) ../userdefs.h + +UCAux.o : UCAux.c $(CMN)UCAux.h $(CMN)UCDefs.h +LYCookie.o: ../userdefs.h diff --git a/userdefs.h b/userdefs.h index 32fa89fe..336aab4e 100644 --- a/userdefs.h +++ b/userdefs.h @@ -216,7 +216,11 @@ * mailcap files (see the examples in the samples directory). */ #ifndef LYNX_CFG_FILE +#ifdef DOSPATH +#define LYNX_CFG_FILE "./lynx.cfg" +#else #define LYNX_CFG_FILE "/usr/local/lib/lynx.cfg" +#endif /* DOSPATH */ #endif /* LYNX_CFG_FILE */ /************************** @@ -283,15 +287,18 @@ * the mailmsg() and reply_by_mail() functions in LYMail.c, or * interposition of a script, may be required. */ +#ifndef HAVE_CONFIG_H #ifdef MMDF #define SYSTEM_MAIL "/usr/mmdf/bin/submit" #else #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__bsdi__) #define SYSTEM_MAIL "/usr/sbin/sendmail" -#else /* everthing else: */ +#else /* everything else: */ #define SYSTEM_MAIL "/usr/lib/sendmail" #endif /* __FreeBSD || __NetBSD__ || __bsdi__ */ #endif /* MMDF */ +#define SYSTEM_MAIL_FLAGS "" +#endif /* !HAVE_CONFIG_H */ /************************** * A place to put temporary files, it's almost always "/tmp/" on @@ -302,7 +309,7 @@ #define TEMP_SPACE "/tmp/" /******************************** - * Don't let the user enter his/hers email address when sending a message. + * Don't let the user enter his/her email address when sending a message. * Anonymous mail makes it far too easy for a user to spoof someone elses * email address. * This requires that your mailer agent put in the From: field for you. @@ -751,10 +758,17 @@ * curses supports line-drawing characters, set to '*' or any other character * to not use line-drawing (e.g., '|' for vertical and '-' for horizontal). */ +#ifndef HAVE_CONFIG_H +#ifdef DOSPATH +#define BOXVERT 0 +#define BOXHORI 0 +#else #define BOXVERT '*' /* #define BOXVERT 0 */ #define BOXHORI '*' /* #define BOXHORI 0 */ +#endif /* DOSPATH */ +#endif /* !HAVE_CONFIG_H */ /****************************** * LY_UMLAUT controls the 7-bit expansion of characters with dieresis or @@ -1155,7 +1169,11 @@ */ #define LYNX_NAME "Lynx" -#define LYNX_VERSION "2.7.1" +/* The strange-looking comment on the next line tells PRCS to replace + * the version definition with the Project Version on checkout. Just + * ignore it. - kw */ +/* $Format: "#define LYNX_VERSION \"$ProjectVersion$\""$ */ +#define LYNX_VERSION "2.7.1ac-0.5" /**************************************************************** * The LYMessages_en.h header defines default, English strings @@ -1179,17 +1197,53 @@ #define MAXHIST 1024 /* max links we remember in history */ #define MAXLINKS 1024 /* max links on one screen */ +#ifdef EXP_CHARTRANS +#define MAX_CHARSETS 40 +#define MAX_CHARSETSP 41 /* always one more */ +#endif + #ifdef VMS /* ** Use the VMS port of gzip for uncompressing both .Z and .gz files. */ #define UNCOMPRESS_PATH "gzip -d" #define GZIP_PATH "gzip" + #else + +#ifdef DOSPATH +/* +** WINDOWS +** =========== +*/ +#define COMPRESS_PATH "compress" +#define UNCOMPRESS_PATH "uncompress" +#define UUDECODE_PATH "uudecode" +#define ZCAT_PATH "zcat" +#define GZIP_PATH "gzip" +#define INSTALL_PATH "install" +#define TAR_PATH "tar" +#define TOUCH_PATH "touch" + +/* +** WINDOWS/DOS +** =========== +*/ +#define ZIP_PATH "zip" +#define UNZIP_PATH "unzip" +#define MKDIR_PATH "mkdir" +#define MV_PATH "mv" +#define RM_PATH "rm" +#define COPY_PATH "cp" +#define CHMOD_PATH "chmod" + +#else /* Unix */ + /* ** Check these paths on Unix! ** ========================== */ +#ifndef HAVE_CONFIG_H #if defined(__FreeBSD__)||defined(__NetBSD__)||defined(__bsdi__)||defined(LINUX) /* ** FreeBSD, NetBSD, BSDI, or Linux: @@ -1216,7 +1270,9 @@ #define INSTALL_PATH "/bin/install" #define TAR_PATH "/bin/tar" #define TOUCH_PATH "/bin/touch" + #endif /* __FreeBSD__ || __NetBSD__ || __bsdi__ || LINUX */ + /* ** All Unix: ** ========= @@ -1228,6 +1284,9 @@ #define RM_PATH "/bin/rm" #define COPY_PATH "/bin/cp" #define CHMOD_PATH "/bin/chmod" + +#endif /* HAVE_CONFIG_H */ +#endif /* DOSPATH */ #endif /* VMS */ #endif /* USERDEFS_H */ |